我想在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 <- summary(reg2)$coefficients[c(2,3,4),1]
betastar <- .5*(beta1coef+beta2coef)
betastar2 <- (beta1+beta2)/2
expl <- sum((mean1-mean2)*beta1coef)
uexpl <- sum(mean2*(beta2coef-beta1coef))
pct=expl/gap
pct2=uexpl/gap
## output
out <- data.frame(Gap=gap,
Explained=expl,
Unexplained=uexpl,
Pct=pct*100)
return(out)
}
Run Code Online (Sandbox Code Playgroud)
我用过瓦哈卡式分解.从来没有找到任何R的包,所以我写了一些功能来做到这一点.它类似于Stata中的相应包.您可以在以下网址找到它的副本:https: //github.com/eyjo/Oaxaca
请注意,当时我对使用固定效果(面板数据)模型感兴趣,这些模型与这些分解不直接兼容.FE类型模型有一个未完成的处理程序,但不应该使用它.我打算用它创建一个包,但从来没有绕过它.
小智 5
oaxacaCRAN上的软件包可以估计线性模型的Blinder-Oaxaca分解,并生成显示结果的条形图:http : //cran.r-project.org/web/packages/oaxaca/index.html
它还可以计算自举标准误差,以提供对估计不确定性有多大的了解。
该小插图详细介绍了该软件包的功能,并提供了一些用法示例。参见此处:“ oaxaca:R中的Blinder-Oaxaca分解 ”