Rでは、redict.lmは線形回帰の結果に基づいて予測を計算し、これらの予測の信頼区間の計算も提供します。マニュアルによると、これらの間隔はフィッティングの誤差分散に基づいていますが、係数の誤差間隔には基づいていません。
一方、ロジスティックおよびポアソン回帰に基づいて予測を計算するpredict.glm(他にもいくつかあります)には、信頼区間のオプションがありません。そして、そのような信頼区間がポアソンとロジスティック回帰の有意義な洞察を提供するためにどのように計算されるか想像するのは難しいです。
そのような予測に信頼区間を提供することが有意義な場合はありますか?どのように解釈できますか?そして、これらの場合の仮定は何ですか?
通常の方法は、線形予測子のスケールで信頼区間を計算し、物事がより正常(ガウス)になる場合、リンク関数の逆を適用して、線形予測子スケールから応答スケールに信頼区間をマッピングします。
これを行うには、2つのことが必要です。
predict()
を_type = "link"
_で呼び出し、そしてse.fit = TRUE
_でpredict()
を呼び出します。1番目は線形予測子のスケールで予測を生成し、2番目は予測の標準誤差を返します。擬似コードで
_## foo <- mtcars[,c("mpg","vs")]; names(foo) <- c("x","y") ## Working example data
mod <- glm(y ~ x, data = foo, family = binomial)
preddata <- with(foo, data.frame(x = seq(min(x), max(x), length = 100)))
preds <- predict(mod, newdata = preddata, type = "link", se.fit = TRUE)
_
preds
は、コンポーネントfit
および_se.fit
_のリストです。
線形予測子の信頼区間は
_critval <- 1.96 ## approx 95% CI
upr <- preds$fit + (critval * preds$se.fit)
lwr <- preds$fit - (critval * preds$se.fit)
fit <- preds$fit
_
critval
は、tまたはz(正規)必要なカバレッジ(必要なカバレッジを備えたGLMのタイプとプロパティが何であるかを正確に忘れてしまいました)。 _1.96
_は、95%のカバレッジを提供するガウス分布の値です。
_> qnorm(0.975) ## 0.975 as this is upper tail, 2.5% also in lower tail
[1] 1.959964
_
fit
、upr
、およびlwr
については、リンク関数の逆をそれらに適用する必要があります。
_fit2 <- mod$family$linkinv(fit)
upr2 <- mod$family$linkinv(upr)
lwr2 <- mod$family$linkinv(lwr)
_
これで、3つすべてとデータをプロットできます。
_preddata$lwr <- lwr2
preddata$upr <- upr2
ggplot(data=foo, mapping=aes(x=x,y=y)) + geom_point() +
stat_smooth(method="glm", method.args=list(family=binomial)) +
geom_line(data=preddata, mapping=aes(x=x, y=upr), col="red") +
geom_line(data=preddata, mapping=aes(x=x, y=lwr), col="red")
_