【问题标题】:Oaxaca Decomposition in R [closed]R中的瓦哈卡分解[关闭]
【发布时间】: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。这个包效果很好。

标签: r stata economics


【解决方案1】:

我使用了瓦哈卡类型的分解。从来没有找到任何 R 包,所以我写了一些函数来做到这一点。类似于Stata中对应的包。

您可以在以下位置找到它的副本: https://github.com/eyjo/Oaxaca

请注意,当时我对使用与这些分解不直接兼容的固定效应(面板数据)模型感兴趣。 FE 类型模型有一个未完成的处理程序,但不应使用它。我本来打算用它来创建一个包,但一直没有解决。

【讨论】:

  • 哦,太好了。我的函数确实 /not/ 给出了正确的结果!编辑:我认为你是对的,在 FE 上。我尝试了一个使用因子的模型,它返回Error in B1[1, 1] &lt;- m1$intercept : number of items to replace is not a multiple of replacement length。希望有人会接受这个包裹。这是一个好的开始:)
  • 非常非常棒。这个函数应该在官方的 r rep 中成为一个真正的包。 :)
【解决方案2】:

CRAN 上的 oaxaca 包可以估计线性模型的 Blinder-Oaxaca 分解,并生成显示结果的条形图:http://cran.r-project.org/web/packages/oaxaca/index.html

它还可以计算自举标准误差,以了解存在多少估计不确定性。

小插图详细描述了包的功能,并提供了一些使用示例。见这里:“oaxaca: Blinder-Oaxaca Decomposition in R

【讨论】:

    猜你喜欢
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2010-11-06
    • 1970-01-01
    • 2022-01-10
    • 2017-07-16
    • 2016-05-15
    相关资源
    最近更新 更多