2016-07-17 6 views
0

Rでivprobitパッケージを使用して計測器でロジットモデルを推定しています。IVプロビットの場合のAPEの計算方法R

私はこの論文で行ったように1つの変数の限界効果(別名平均部分的な効果、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

、数式を取得したデータを取得し、それを試してみて、あなたが失敗した場合、質問をします。 [ここ](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を計算するためにこれらの2つの方法を見つけました。しかし、私は通常のプロビット回帰を使用していませんが、器具を使ったプロビット( 'ivprobit'パッケージを使用しています)を使用しています。私はmfxパッケージが独自のプロビットモデルを推測しており、私はそれを機器の使用に適応できないことを理解しています。ブートストラップを使って2番目のオプションを適応させる可能性があります。残念なことに、このコードはpredict関数を使ってビルドされており、私は 'ivprobit'フレームワークを使ってそれを行う方法がわかりません。誰かが私に 'ivprobit'で動作するようにコードを適応させる手助けをしてもらえますか?どうもありがとう! – Flo

+0

もっと正確に言えば、私が適合させないのは、 'ivprobit'のための' predict'関数がなく、 'Id'(' dnorm(predict、x、type = "link"))それが何をしているのか、それをどのようにビルドして、通常のプロビット推定からの 'glm'出力の代わりに' ivprobit'出力を使うのかを理解しています – Flo

関連する問題