2011-02-25 6 views
6

나는 오아시스 분해를 R으로 만들고 싶습니다. 설명 된 분산 대 설명되지 않는 분산을 구분하기 위해 노동 경제학자가 믿는다. 나는 R에서 적합한 솔루션을 찾을 수 없었고, 나는 스스로를 만드는 것을 꺼려한다. (아마 엉망이 될 것이다.)Oaxaca 분해 in R

어쨌든, 절차는 간단하게 여기 설명 : STATA이에 오히려 좋은 패키지 축복되지만

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

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

오악 사카 유형 분해를 사용했습니다. R에 대한 패키지를 찾지 못했고, 그렇게 할 수있는 몇 가지 기능을 썼습니다. Stata의 해당 패키지와 유사합니다. 당신이 그것의 복사본을 찾을 수 있습니다 시간에 나는이 분해와 직접 호환되지 않는 고정 효과 (패널 데이터) 모델을 사용하여에 관심이 있음을 https://github.com/eyjo/Oaxaca

참고. FE 유형 모델에는 처리되지 않은 핸들러가 있지만 사용해서는 안됩니다. 나는 그것에서 꾸러미를 만드는 것을 의미했다. 그러나 그것에 결코 도착하지 않았다.

+1

오 훌륭합니다. 내 기능은 분명히 정확한 결과를 제공한다. 편집 : 나는 FE에, 당신 말이 맞아요. factor를 사용하여 모델을 시도했는데, 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"