我想在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) 我有一个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?
这是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)
我可以用reshape
st 做到这一点 …
我有一个数据框,看起来像:
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而不进行循环.
我有一个托管在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应用程序中?
如果您有任何想法,请告诉我.
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) 我想在R中运行两阶段概率最小二乘回归.有谁知道如何做到这一点?那里有包裹吗?我知道使用Stata可以做到这一点,所以我想可以用R做它.
我试图在Lyx中安装Knitr包但我遇到了以下错误.
"模块编织器需要一个在Latex安装中没有的软件包或者你没有安装的转换器.可能无法进行Latex输出.包装缺少Knitr> latex."
如果你能帮助我解决这个问题,我将不胜感激.我检查了Lyx模块,但无法弄清楚到底该做什么.我是Lyx和Knitr的新用户.
先感谢您
我正在尝试使用vars
R中的包来学习矢量自回归模型.这个包没有任何方法来测量返回模型的准确性.
具体来说,我想使用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) 我有一个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()
正确使用,我该如何解决我得到的错误?