線形回帰でx切片の信頼区間を計算する方法は?


9

線形回帰の標準誤差は、通常、応答変数に対して与えられるため、他の方向の信頼区間を取得する方法を考えています。たとえば、x切片の場合です。私はそれが何であるかを視覚化することができますが、これを行う簡単な方法があるはずだと確信しています。以下は、これを視覚化する方法のRの例です。

set.seed(1)
x <- 1:10
a <- 20
b <- -2
y <- a + b*x + rnorm(length(x), mean=0, sd=1)

fit <- lm(y ~ x)
XINT <- -coef(fit)[1]/coef(fit)[2]

plot(y ~ x, xlim=c(0, XINT*1.1), ylim=c(-2,max(y)))
abline(h=0, lty=2, col=8); abline(fit, col=2)
points(XINT, 0, col=4, pch=4)
newdat <- data.frame(x=seq(-2,12,len=1000))

# CI
pred <- predict(fit, newdata=newdat, se.fit = TRUE) 
newdat$yplus <-pred$fit + 1.96*pred$se.fit 
newdat$yminus <-pred$fit - 1.96*pred$se.fit 
lines(yplus ~ x, newdat, col=2, lty=2)
lines(yminus ~ x, newdat, col=2, lty=2)

# approximate CI of XINT
lwr <- newdat$x[which.min((newdat$yminus-0)^2)]
upr <- newdat$x[which.min((newdat$yplus-0)^2)]
abline(v=c(lwr, upr), lty=3, col=4)

ここに画像の説明を入力してください


1
これをブートストラップできます:library(boot); sims <- boot(data.frame(x, y), function(d, i) { fit <- lm(y ~ x, data = d[i,]) -coef(fit)[1]/coef(fit)[2] }, R = 1e4); points(quantile(sims$t, c(0.025, 0.975)), c(0, 0))。逆予測区間のヘルプファイルにchemCal:::inverse.predictは、CIの導出にも役立つ可能性のある次のリファレンスが含まれています。 )ケモメトリックスとクオリメトリクスのハンドブック:パートA、p。200
ローランド

1
グラフに表示されるのは、切片のCIではありません。予測の下限と上限の信頼線が軸と交差する点を表示します。
ローランド

1
Yi=α+βxi+εiwhere ε1,εni.i.d. N(0,σ2),
YxxYx、彼らはまた、ランダムな考慮すべきいくつかの状況で示唆、その変更をね。これはの妥当性に影響を与えるのだろうか
マイケルハーディ


1
@AdrienRenaud-私が言及した非対称の側面を考えると、あなたの答えは過度に単純化されているように思われ、Rolandが示したブートストラップ演習によって強調されています。私があまり質問していなければ、あなたが言った可能性のアプローチを拡張することができます。
ボックス内のマーク

回答:


8

線形回帰でx切片の信頼区間を計算する方法は?

仮定

  • yi=α+βxi+εi
  • ϵ|XN(0,σ2In)
  • 通常の最小二乗を使用してフィット

x切片の信頼区間を計算する3つの手順

一次テイラー展開

Y=aX+bσaσbabσab

aX+b=0X=ba.

σXX

(σXX)2=(σbb)2+(σaa)22σabab.

MIB

線形回帰のx切片の信頼区間を計算する方法のボックスにあるMarcのコードを参照してください

CAPITANI-POLLASTRI

CAPITANI-POLLASTRIは、2つの相関された正規確率変数の比率に対する累積分布関数と密度関数を提供します。線形回帰でx切片の信頼区間を計算するために使用できます。この手順では、MIBの結果と(ほぼ)同一の結果が得られます。

β^N(β,σ2(XTX)1)β^(確認)」sが相関しています。

手順は次のとおりです。

  • OLS推定量を取得するabます。
  • σa,σb,σab=ρσaσb
  • abN(a,b,σa,σb,ρ)xintercept=ba
  • の累積分布関数を使用するxintercept=ba

3つの手順の比較

手順は、次のデータ構成を使用して比較されます。

  • x <-1:10
  • a <-20
  • b <--2
  • y <-a + b * x + rnorm(length(x)、mean = 0、sd = 1)

3つの方法を使用して、10000の異なるサンプルが生成および分析されます。生成と分析に使用されるコード(R)は、https//github.com/adrienrenaud/stackExchange/blob/master/crossValidated/q221630/answer.ipynbにあります。

  • MIBとCAPITANI-POLLASTRIは同等の結果を与えます。
  • 1次のテイラー展開は、他の2つの方法とは大きく異なります。
  • MIBおよびCAPITANI-POLLASTRIは、カバー範囲が不足しています。68%(95%)のciには、63%(92%)の真の値が含まれています。
  • 一次テイラー展開は、過剰カバレッジに悩まされています。68%(95%)のciには、87%(99%)の真の値が含まれていることがわかります。

結論

x切片の分布は非対称です。非対称の信頼区間を正当化します。MIBとCAPITANI-POLLASTRIは同等の結果を与えます。CAPITANI-POLLASTRIには理論的な根拠があり、MIBの根拠を提供します。MIBおよびCAPITANI-POLLASTRIは、適度なアンダーカバレッジに悩まされており、信頼区間を設定するために使用できます。


この素敵な答えをありがとう。この方法は、x切片の標準誤差が対称であることを意味しますか?私の図の予測区間は、これが当てはまらないことを意味しており、これを他の場所で参照したことがあります。
ボックス内のマーク

はい、それは対称的な間隔を意味します。非対称なものが必要な場合は、モデルパラメーターを迷惑パラメーターとして扱うプロファイル尤度を使用できます。しかし、それはより多くの仕事です:)
エイドリアン・ルノー

(σX/X)2


2

残差をブートストラップすることをお勧めします:

library(boot)

set.seed(42)
sims <- boot(residuals(fit), function(r, i, d = data.frame(x, y), yhat = fitted(fit)) {

  d$y <- yhat + r[i]

  fitb <- lm(y ~ x, data = d)

  -coef(fitb)[1]/coef(fitb)[2]
}, R = 1e4)
lines(quantile(sims$t, c(0.025, 0.975)), c(0, 0), col = "blue")

結果のプロット

グラフに表示されるのは、予測の信頼帯の下限/上限が軸と交差する点です。これらは切片の信頼限界ではないと思いますが、おそらく大まかな近似です。


すばらしい-これはすでにコメントの例よりも合理的に見えます。再度、感謝します。
ボックス内のマーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.