8

我想在 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)
 }
4

2 回答 2

8

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

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

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

于 2011-02-25T13:18:03.627 回答
5

The oaxaca package on CRAN can estimate Blinder-Oaxaca decompositions for linear models, as well as producing bar charts that show the results: http://cran.r-project.org/web/packages/oaxaca/index.html

It can also calculate bootstrapped standard errors to provide a sense of how much estimation uncertainty there is.

The vignette gives a detailed description of the package's capabilities, as well as providing some examples of its use. See here: "oaxaca: Blinder-Oaxaca Decomposition in R"

于 2014-11-23T15:25:14.487 回答