web-dev-qa-db-ja.com

ロジスティック回帰からの予測の信頼区間

Rでは、redict.lmは線形回帰の結果に基づいて予測を計算し、これらの予測の信頼区間の計算も提供します。マニュアルによると、これらの間隔はフィッティングの誤差分散に基づいていますが、係数の誤差間隔には基づいていません。

一方、ロジスティックおよびポアソン回帰に基づいて予測を計算するpredict.glm(他にもいくつかあります)には、信頼区間のオプションがありません。そして、そのような信頼区間がポアソンとロジスティック回帰の有意義な洞察を提供するためにどのように計算されるか想像するのは難しいです。

そのような予測に信頼区間を提供することが有意義な場合はありますか?どのように解釈できますか?そして、これらの場合の仮定は何ですか?

58
unique2

通常の方法は、線形予測子のスケールで信頼区間を計算し、物事がより正常(ガウス)になる場合、リンク関数の逆を適用して、線形予測子スケールから応答スケールに信頼区間をマッピングします。

これを行うには、2つのことが必要です。

  1. predict()を_type = "link"_で呼び出し、そして
  2. _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
_

fitupr、および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") 
_

enter image description here

67
Gavin Simpson