2016-07-17 1 views
0

R에서 ivprobit 패키지를 사용하여 계측기로로 짓 모델을 추정합니다. 이 논문에서 완료로IV probit의 경우 APE 계산 방법 R

는 I 한 변수의 한계 효과 (일명 보통 부분 효과 APE)를 계산할 (. 29 페이지 F) http://pedro-ferreira.org/wp-content/uploads/2015/04/iPhone-SSRN-id2053420.pdf를 그들이

에 참조 위에서 언급 한 논문에서

Wooldridge, 2002, p. 십자가의

Wooldridge, JM 2002 계량 경제 분석 : 475 Wooldridge 및 Imbens, 그러나 2007 년

, 나는

소스 R.에 그 계산을 구현하는 방법을 알아낼 수 섹션 및 패널 데이터

Wooldridge, JM, Imbens, G. 2007. 계량 경제학의 새로운 점은 무엇입니까? 훨씬 더 일반적으로 용이하게 될 수 평균 한계 효과 (또는 단순히 한계 효과)라고도

+1

이, 수식을 가져 데이터를 얻을, 그것을 시도하고 실패 할 경우, 질문 :

또 다른

는 부트 스트랩을 사용하여 이것과 같은 사용자 정의 기능입니다. [Here] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)는 좋은 질문을하는 방법에 대한 몇 가지 예입니다. –

+1

당신이 새로운 사람이라는 것을 알았으므로이 사실을 알지 못했지만 실제로는 http://stats.stackexchange.com/questions/224079/how-to-calculate-ape-in-case의 교차 게시 규칙에 위배됩니다. -of-iv-probit-with-r 당신의 질문을 잠시 보류 했으므로 가능한 경우 CV에서 삭제하도록 제안합니다. –

+0

힌트를 보내 주셔서 감사합니다! 나는 다른 질문을 삭제했다. – Flo

답변

1

보통 일부 효과 (APE)는

이러한 하나의 방법이 사용하는 R.에서 다수의 방식으로 획득 패키지 mfx :

install.packages("mfx") 
require(mfx) # use logitmfx() or any other appropriate function from this package 

또는 tonymisc에서 mfx 기능.

mfxboot <- function(modform,dist,data,boot=1000,digits=3){ 
    x <- glm(modform, family=binomial(link=dist),data) 
    # get marginal effects 
    pdf <- ifelse(dist=="probit", 
       mean(dnorm(predict(x, type = "link"))), 
       mean(dlogis(predict(x, type = "link")))) 
    marginal.effects <- pdf*coef(x) 
    # start bootstrap 
    bootvals <- matrix(rep(NA,boot*length(coef(x))), nrow=boot) 
    set.seed(1111) 
    for(i in 1:boot){ 
    samp1 <- data[sample(1:dim(data)[1],replace=T,dim(data)[1]),] 
    x1 <- glm(modform, family=binomial(link=dist),samp1) 
    pdf1 <- ifelse(dist=="probit", 
        mean(dnorm(predict(x, type = "link"))), 
        mean(dlogis(predict(x, type = "link")))) 
    bootvals[i,] <- pdf1*coef(x1) 
    } 
    res <- cbind(marginal.effects,apply(bootvals,2,sd),marginal.effects/apply(bootvals,2,sd)) 
    if(names(x$coefficients[1])=="(Intercept)"){ 
    res1 <- res[2:nrow(res),] 
    res2 <- matrix(as.numeric(sprintf(paste("%.",paste(digits,"f",sep=""),sep=""),res1)),nrow=dim(res1)[1])  
    rownames(res2) <- rownames(res1) 
    } else { 
    res2 <- matrix(as.numeric(sprintf(paste("%.",paste(digits,"f",sep=""),sep="")),nrow=dim(res)[1])) 
    rownames(res2) <- rownames(res) 
    } 
    colnames(res2) <- c("marginal.effect","standard.error","z.ratio") 
    return(res2) 
} 
+0

답변 해 주셔서 감사합니다. 나는 또한 APE를 계산하는이 두 가지 방법을 발견했다. 그러나, 나는 정규 프로 비트 회귀를 사용하지 않고 계측기가있는 probit ('ivprobit' 패키지 사용)을 사용합니다. 나는 mfx 패키지가 probit 모델을 독자적으로 추정하고 악기를 사용하는 데 그것을 적용 할 수 없다는 것을 이해합니다. 부트 스트래핑을 사용하여 두 번째 옵션을 적용 할 수도 있습니다. 불행하게도이 코드는 predict 함수를 사용하여 빌드되며'ivprobit' 프레임 워크를 사용하여 어떻게 할 지 확신하지 못합니다. 누구나'ivprobit'을 사용하여 코드를 수정하도록 도와 줄 수 있습니까? 고마워요! – Flo

+0

좀 더 정확하게 말하자면,'ivprobit'에 대한'predict' 함수가 없기 때문에 '평균 (dnorm (predict (x, type = "link")))' 실제로 무엇을하는지, 그리고 정규 프빗 비트 추정에서 나온'glm' 출력 대신에'ivprobit' 출력으로 어떻게 작동 하는지를 이해합니다 – Flo