如何在线性回归中计算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:Massart,LM,Vandenginste,BGM,Buydens,LMC,De Jong,S.,Lewi,PJ,Smeyers-Verbeke,J.(1997年) )化学计量学和质量计量手册:A部分,p。200
罗兰

1
您在图中显示的不是截距的CI。您将显示预测的上下置信度线与轴相交的点。
罗兰

1
在线性回归中,通常会有一个这样的模型:因此将 s视为随机数,将 s视为固定值。可以通过说您正在寻找给定 s 的条件分布来证明这一点。实际上,如果您要获取一个新样本,通常不仅是 s,而且是 s都会发生变化,这表明在某些情况下也应将它们视为随机的。我想知道这是否涉及
Yi=α+βxi+εiwhere ε1,εni.i.d. N(0,σ2),
YxxYx
Michael Hardy


1
@AdrienRenaud-在我看来,鉴于我提到的不对称方面,您的答案过于简单了,Roland举例说明的自举练习突出了这一点。如果我的要求不高,也许您可​​以扩大您提到的可能性方法。
马克在框中

Answers:


9

如何在线性回归中计算x截距的置信区间?

假设

  • 使用简单的回归模型。yi=α+βxi+εi
  • 错误具有正态分布,条件取决于回归变量ϵ|XN(0,σ2In)
  • 使用普通最小二乘法拟合

3个过程来计算x截距的置信区间

一阶泰勒展开

你的模型是与估计的标准偏差和上和参数和估计的协方差。你解决Y=aX+bσaσbabσab

aX+b=0X=ba.

然后,上的标准偏差由下式给出:σXX

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

MIB

请参阅“ 如何在线性回归中计算x截距的置信区间 ”框中的Marc代码

卡皮塔尼-波拉斯特里

CAPITANI-POLLASTRI提供了两个相关正态随机变量之比的累积分布函数和密度函数。它可用于计算线性回归中x截距的置信区间。此过程提供的结果几乎(与MIB相同)。

实际上,使用普通的最小二乘并假设误差的正态性,(已验证)和是相关的(已验证)。 ββ^N(β,σ2(XTX)1)β^

步骤如下:

  • 获得和 OLS估计量。bab
  • 得到方差-协方差矩阵并提取。σa,σb,σab=ρσaσb
  • 假设和遵循双变量相关正态分布。然后由CAPITANI-POLLASTRI给出的密度函数和累积分布函数。b Ñ一个b σ 一个σ bρ X Ñ Ë ř Ç Ê p = - babN(a,b,σa,σb,ρ)xintercept=ba
  • 使用的累积分布函数来计算所需的分位数并设置一个cofidence间隔。xintercept=ba

3种程序的比较

使用以下数据配置对过程进行比较:

  • x <-1:10
  • a <-20
  • b <--2
  • y <-a + b * x + rnorm(长度(x),均值= 0,sd = 1)

使用这三种方法生成并分析了10000个不同的样本。可以在以下位置找到用于生成和分析的代码(R):https//github.com/adrienrenaud/stackExchange/blob/master/crossValidated/q221630/answer.ipynb

  • MIB和CAPITANI-POLLASTRI给出相同的结果。
  • 一阶泰勒展开式不同于其他两种方法。
  • MIB和CAPITANI-POLLASTRI的覆盖率不足。发现68%(95%)ci包含63%(92%)的真实值。
  • 一阶泰勒展开式有过度覆盖的问题。发现68%(95%)ci包含87%(99%)的真实值。

结论

x截距分布是不对称的。它证明了不对称的置信区间。MIB和CAPITANI-POLLASTRI给出相同的结果。CAPITANI-POLLASTRI有很好的理论依据,它为MIB提供了基础。MIB和CAPITANI-POLLASTRI遭受中等程度的覆盖不足,可用于设置置信区间。


感谢您的答复。此方法是否暗示x截距的标准误差是对称的?我的图中的预测间隔暗示情况并非如此,在其他地方我也看到了对此的参考。
马克·马克(Marc)在包装盒

是的,它确实意味着一个对称间隔。如果您希望使用非对称参数,则可以使用轮廓似然法将模型参数视为有害参数。但这是更多工作:)
Adrien Renaud

您能否详细解释一下如何获取表达式?(σ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")

结果图

您在图表中显示的是预测置信带的上下限与轴的交点。我不认为这些是截距的置信度极限,但也许它们是一个近似值。


太好了-与您评论中的示例相比,这看起来已经更加合理了。再次感谢。
马克·马克(Marc)在盒子里
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.