2011-02-25 19 views
6

オアハカ分解をRにしたいと考えています。説明された分散と未説明の分散とを区別するために労働経済学は、私は信じています。私はRで適切な解決策を見つけることができず、私は自分自身を作成することにむしろ嫌です(私はおそらくそれを台無しにするでしょう)。Oaxaca分解in R

はとにかく、手順はここで簡単に説明します

http://en.wikipedia.org/wiki/Ronald_Oaxaca

Stataのは、このためにかなり良いパッケージに恵まれているが、Stataのは私には簡単に使用できません。

www.stata.com/meeting/5german/SINNING_stata_presentation.pdf

は注意してください:私はまた、R-ヘルプのメッセージを掲載しているが、それは何の回答を得ていません。私はこのリストに投稿することも大丈夫です。事前に

おかげで、 ラスマス

編集:私は間違った答え(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) 
} 
+0

ああ、同じ人がそれを読むクロスポスト(メーリングリスト)しないでください。 –

+1

それは一週間後に答えられなかったので、確かにその長さの後、彼は他の場所に尋ねる権利があります。 –

+0

大丈夫、私はそれが所属していた-1を戻しました。素早く手渡してくれたことに対する謝罪。今コードはとにかく問題がはるかによく見えると述べた。 –

答えて

7

私はOaxacaタイプ分解を使用しました。 R用のパッケージは一度も見つからなかったので、私はそれを行ういくつかの関数を書いた。これはStataの対応するパッケージに似ています。一度、私はこれらの分解と直接の互換性はありません固定効果(パネルデータ)モデルを、使用することに興味があったことを https://github.com/eyjo/Oaxaca

注: あなたにはそれのコピーを見つけることができます。 FE型モデルの未完成のハンドラがありますが、使用しないでください。私はそれからパッケージを作成することを意味しましたが、決してそれを回避しませんでした。 CRANの

+1

ああ素晴らしい。私の機能は確かに正しい結果を出してくれますか?編集:私はあなたが正しいと思う、FE。私は因子を使ってモデルを試しましたが、B1 [1、1] < - m1 $ intercept: の項目の数は置換の長さの倍数ではありません。うまくいけば、誰かがこのパッケージを使います。それは良いスタートです:) – Rasmus

+0

非常に非常に素晴らしい。この関数は公式の担当者には本当のパッケージになるはずです。 :) – S12000

4

oaxacaパッケージは、線形モデルのためブラインダー・オアハカの分解を推定し、同様の結果を示す棒グラフを生成することができます。http://cran.r-project.org/web/packages/oaxaca/index.html

また、どのくらいの推定の感覚を提供するために、ブートストラップ標準誤差を計算することができます不確実性があります。

このビネットは、パッケージの機能の詳細な説明とその使用例を示しています。ここで参照してください: "oaxaca: Blinder-Oaxaca Decomposition in R"