【发布时间】:2011-07-04 03:23:16
【问题描述】:
我想在 R 中进行瓦哈卡分解。它用于例如我相信劳动经济学可以区分解释的方差和无法解释的方差。我无法在 R 中找到合适的解决方案,而且我不太愿意自己创建一个(我可能会搞砸)。
不管怎样,这里简单说明一下过程:
http://en.wikipedia.org/wiki/Ronald_Oaxaca
Stata 有幸为此提供了一个相当不错的软件包,但 Stata 对我来说并不容易获得。
www.stata.com/meeting/5german/SINNING_stata_presentation.pdf
请注意:我也在 R-help 上发布了一条消息,但没有得到回复。我希望也可以在此列表上发布。
提前致谢, 拉斯穆斯
编辑:我做了以下功能,这似乎产生了错误的答案(呃)。我尝试按照上面的 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)
}
【问题讨论】:
-
嗯,不要交叉发布(邮件列表)相同的人阅读。
-
一个星期后没有回答,所以在他有权在其他地方询问的时间之后肯定没有回答。
-
好的,我会把 -1 放回原处。为快速分发而道歉。现在有了代码,问题看起来好多了……
-
另一个在这里工作的包是GeneralOaxaca。这个包效果很好。