小编Met*_*ics的帖子

R中的瓦哈卡分解

我想在R中进行瓦哈卡分解.我相信,它用于例如劳动经济学来区分解释的方差与不明原因的方差.我无法在R中找到合适的解决方案,而且我不愿意自己创建一个(我可能会搞砸它).

无论如何,这里简要解释了这个过程:

http://en.wikipedia.org/wiki/Ronald_Oaxaca

Stata很幸运,有一个相当不错的包装,但Stata对我来说并不容易.

www.stata.com/meeting/5german/SINNING_stata_presentation.pdf

请注意:我还在R-help上发布了一条消息,但它没有得到回复.我希望也可以在这个列表上发帖.

提前谢谢,Rasmus

编辑:我已经做了以下功能,这似乎产生了错误的答案(urgh).我试图按照上面的Stata链接但它没有按照我的希望:)

oaxaca <- function (fsex,frace1,frace2) {
  ## First we make regresions
  data1 <- subset(l2,sex==fsex & race==frace1)
  data2 <- subset(l2,sex==fsex & race==frace2)

  mindata1 <- subset(cbind(grade,exp,I(exp^2)),sex==fsex & race==frace1)
  mindata2 <- subset(cbind(grade,exp,I(exp^2)),sex==fsex & race==frace2)

  reg1 <- lm(log(wage)~grade+exp+I(exp^2), data=data1)
  reg2 <- lm(log(wage)~grade+exp+I(exp^2), data=data2)

  ## DECOMPOSITION
  ################

  ## Variables
  gap <- mean(log(wage[race==frace1 & sex==fsex]))-mean(log(wage[race==frace2 & sex==fsex]))

  mean1 <- colMeans(mindata1)
  mean2 <- colMeans(mindata2)

  beta1 <- summary(reg1)$coefficients[,1]
  beta2 <- summary(reg2)$coefficients[,1]
  beta1incep <- summary(reg1)$coefficients[1,1]
  beta2incep <- summary(reg2)$coefficients[1,1]
  beta1coef <- summary(reg1)$coefficients[c(2,3,4),1]
  beta2coef …
Run Code Online (Sandbox Code Playgroud)

r economics stata

9
推荐指数
2
解决办法
2773
查看次数

在R中绑定两个向量

我有一个data.frame有几列,我想加入一个新的data.frame中的一列.

df1 <- data.frame(col1 = 1:3, col2 = 4:6, col3 = 7:9)
Run Code Online (Sandbox Code Playgroud)

如何使用1:9的单列创建新的data.frame?

r vector rbind

9
推荐指数
5
解决办法
3189
查看次数

使用多个变量和一些时间不变的方式从宽到面重塑数据框

这是Stata在一步中处理的数据分析中的基本问题.

使用时间不变数据(x0)和2000年和2005年的时变数据(x1,x2)创建一个宽数据框:

d1 <- data.frame(subject = c("id1", "id2"),  
x0 = c("male", "female"),  
x1_2000 = 1:2,   
x1_2005 = 5:6,  
x2_2000 = 1:2,  
x2_2005 = 5:6    
) 
Run Code Online (Sandbox Code Playgroud)

ST

subject x0 x1_2000 x1_2005 x2_2000 x2_2005  
1     id1 male         1       5       1       5  
2     id2 female       2       6       2       6  
Run Code Online (Sandbox Code Playgroud)

我想像面板一样塑造它,所以数据看起来像这样:

        subject     x0 time x1 x2
1     id1   male 2000  1  1
2     id2 female 2000  2  2
3     id1   male 2005  5  5
4     id2 female 2005  6  6
Run Code Online (Sandbox Code Playgroud)

我可以用reshapest 做到这一点 …

r panel data-manipulation reshape stata

8
推荐指数
1
解决办法
9384
查看次数

从数据帧中的公共ID求和值

我有一个数据框,看起来像:

df<-data.frame(id=c("xx33","xx33","xx22","xx11","xx11","xx00"),amount=c(10,15,100,20,10,15),date=c("01/02/2013","01/02/2013","02/02/2013","03/03/2013","03/03/2013","04/04/2013"))

    id  amount  date
1   xx33    10  01/02/2013
2   xx33    15  01/02/2013
3   xx22    100 02/02/2013
4   xx11    20  03/03/2013
5   xx11    10  03/03/2013
6   xx00    15  04/04/2013
Run Code Online (Sandbox Code Playgroud)

我想编译所有公共ID并总结数量以及id的出现次数,但是还要携带公共信息,例如每个id(以及任何其他变量)的日期相同.所以,我希望输出为:

    id  sum date        number
1   xx33    25  01/02/2013   2
2   xx22    100 02/02/2013   1
3   xx11    30  03/03/2013   2
4   xx00    15  04/04/2013   1
Run Code Online (Sandbox Code Playgroud)

我试过了

ddply(.data = df, .var = "id", .fun = nrow)
Run Code Online (Sandbox Code Playgroud)

并返回总出现次数,但我无法找到一种方法来汇总所有常见ID而不进行循环.

aggregate r

8
推荐指数
3
解决办法
2万
查看次数

Heroku Rails应用程序的数据挖掘/统计分析选项?

我有一个托管在Heroku上的rails应用程序,我想要整合一些实时数据分析.理想情况下,我想找出一种运行广义增强回归模型的方法,我知道这两种模型都可用于R(http://cran.r-project.org/web/packages/gbm/index.html)和Stata(http://www.stata-journal.com/article.html?article=st0087).我想保存生成的gbm树,然后在我的应用程序中,使用它来根据用户输入预测新结果.

如果那是不可能的,我会愿意使用其他数据挖掘算法.对我来说最重要的是能够将它集成到我的Heroku应用程序中,以便它可以在没有本地机器的情况下运行.

我研究过的选项:

1)Heroku支持建议将R库存放到红宝石中.我对红宝石和铁轨比较陌生,这对我来说是可行的.我四处寻找有关在宝石中销售图书馆的说明,但是找不到多少.

2)这里的另一个帖子(http://stackoverflow.com/questions/6495232/statistic-engine-that-work-with-heroku)提到了CloudNumbers,但似乎无法从Rails应用程序调用该服务.

3)在他们的一个案例研究中,Heroku提到了FlightCaster,它使用Clojure,Hadoop和EC2进行机器学习(http://www.infoq.com/articles/flightcaster-clojure-rails).我看到Heroku支持Clojure,但有没有办法将它(或更具体的Incanter)集成到我的Rails应用程序中?

如果您有任何想法,请告诉我.

ruby r heroku stata ruby-on-rails-3

7
推荐指数
1
解决办法
2965
查看次数

R中的Stata函数inlist()相当于什么?

Stata的inlist允许我们引用变量的实数或字符串值.我想知道是否R有这样的功能.

例子:

我想从变量中选择八个状态state(您可以将其视为state任何数据帧中的列,其中state需要50个字符串值(美国的状态)).

    inlist(state,"NC","AZ","TX","NY","MA","CA","NJ")
Run Code Online (Sandbox Code Playgroud)

我想从变量中选择九个年龄值age(您可以将其视为age任何数据age框中的列,其中数值从0到90).

    inlist(age,16, 24, 45, 54, 67,74, 78, 79, 85) 
Run Code Online (Sandbox Code Playgroud)

题:

age<-c(0:10) # for this problem age takes values from 0 to 10 only
data<-as.data.frame(age) # age is a variable of data frame data
data$m<-ifelse(c(1,7,9)%in%data$age,0,1) # generate a variable m which takes  value 0 if age is 1, 7, and 8 and 1, otherwise
Expected output: 
   age m
1    0 1 …
Run Code Online (Sandbox Code Playgroud)

command r stata

7
推荐指数
1
解决办法
3357
查看次数

R中的两级最小二乘法

我想在R中运行两阶段概率最小二乘回归.有谁知道如何做到这一点?那里有包裹吗?我知道使用Stata可以做到这一点,所以我想可以用R做它.

regression r least-squares stata

6
推荐指数
1
解决办法
5860
查看次数

在Lyx的knitr安装

我试图在Lyx中安装Knitr包但我遇到了以下错误.

"模块编织器需要一个在Latex安装中没有的软件包或者你没有安装的转换器.可能无法进行Latex输出.包装缺少Knitr> latex."

如果你能帮助我解决这个问题,我将不胜感激.我检查了Lyx模块,但无法弄清楚到底该做什么.我是Lyx和Knitr的新用户.

先感谢您

r lyx knitr

6
推荐指数
1
解决办法
3656
查看次数

使用预测准确度()测量VAR准确度

我正在尝试使用varsR中的包来学习矢量自回归模型.这个包没有任何方法来测量返回模型的准确性.

具体来说,我想使用R中包中accuracy函数中定义的MASE forecast,将VAR预测与每个组件时间序列上使用Arima模型的预测进行比较(我使用了4个可能相关的时间序列).accuracy无法识别varest返回的对象vars.如何获取每个预测组件的MASE?我想计算样本内和样本外的准确度

代码示例:

library(vars)
library(forecast)
data(Canada)
v<- VAR(window(Canada, end=c(1998,4)), p=2)
accuracy(v$varresult[[1]])
Run Code Online (Sandbox Code Playgroud)

参数accuracy是一个lm对象,并返回系列1的训练精度:

                       ME      RMSE       MAE           MPE      MAPE       MASE
Training set 1.536303e-15 0.3346096 0.2653946 -1.288309e-05 0.0281736 0.03914555
Run Code Online (Sandbox Code Playgroud)

我希望使用类似的东西来获得样本外的测试精度(不完全是这样,因为需要指定预测期):

 accuracy(v$varresult[[1]], window(Canada[,1], start=c(1999,1)))
Run Code Online (Sandbox Code Playgroud)

但是lm对象不支持这种情况并返回错误

 Error in testaccuracy(f, x, test) : Unknown list structure
Run Code Online (Sandbox Code Playgroud)

如果我直接使用这些值如下,我没有得到MASE,它需要有关训练集的信息.这也容易出现一个错误,因为使用了值而不是ts对象,因为它们accuracy将直接匹配存储的时间:

 p<-predict(v, n.ahead=8)
 accuracy(p$fcst[[1]][,"fcst"],window(Canada[,1], start=c(1999,1)))

             ME      RMSE       MAE         MPE       MAPE      ACF1 Theil's U
Test set -0.1058358 0.8585455 0.7385238 -0.01114099 0.07694492 0.5655117  1.359761 …
Run Code Online (Sandbox Code Playgroud)

r time-series forecasting

6
推荐指数
1
解决办法
6336
查看次数

使用memisc将stata .dta文件导入R

我有一个700mb .dta Stata文件,有2800万个观测值和14个列变量

当我尝试使用外部的 read.dta()函数导入R 时,我的8GB机器上的RAM耗尽(页面输出非常快速地射入GB).

staph <- read.dta("Staph_1999_2010.dta")
Run Code Online (Sandbox Code Playgroud)

我在周围寻找,听起来更有效的替代方案是使用memisc包中的Stata.file()函数.

我打电话的时候:

staph <- Stata.file("Staph_1999_2010.dta")
Run Code Online (Sandbox Code Playgroud)

我得到一个段错误:

*** caught segfault ***
address 0xd5d2b920, cause 'memory not mapped'

Traceback:
 1: .Call("dta_read_labels", bf, lbllen, padding)
 2: dta.read.labels(bf, len.lbl, 3)
 3: get.dictionary.dta(dta)
 4: Stata.file("Staph_1999_2010.dta")
Run Code Online (Sandbox Code Playgroud)

我发现Stata.file()的文档很难理解.

(1)我使用Stata.file()得当吗?

(2)Stata.file()返回像read.dta()这样的数据帧吗?

(3)如果我Stata.file()正确使用,我该如何解决我得到的错误?

memory r stata dta

6
推荐指数
0
解决办法
1137
查看次数