はるかに一般的に平均限界効果(又は単に限界効果)として知られている
平均パーシャル効果(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)
}
、数式を取得したデータを取得し、それを試してみて、あなたが失敗した場合、質問をします。 [ここ](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)は、良い質問をする方法のいくつかの例です。 –
私はあなたが新しかったので、あなたはこれを知らなかったが、実際にはhttp://stats.stackexchange.com/questions/224079/how-to-calculate-ape-in-caseをクロスポストするルールに反している-of-iv-probit-with-rあなたの質問を保留にしているので、できればCVから削除することをお勧めします。 –
あなたのヒントをありがとう!私は他の質問を削除しました。 – Flo