如何为是^Y^

机器算法验证 置信区间 线性模型 标准差 预测区间
2022-03-30 12:18:25

假设我运行一个线性回归模型。我对生成预测间隔感兴趣。预测值很容易计算,但如何计算每个的标准偏差?Y^

在 R 中,我使用predict.lm函数并使用interval='prediction'参数。我会将 CI 的最高界限减去实际数字并除以 1.96 以获得 95% CI,但我想直接得到它以确定。

我试过 se.fit = TRUE 和类似的东西,但没有奏效。

2个回答

通过拟合 lm 对象,您可以获得执行此操作所需的所有组件。从数学上讲,您有估计:

β^=(XTX)1(XTy)

和估计:

vcov(β^)=σ^2(XTX)1

贝塔帽是通过调用对象和方差估计coef获得的lmvcovlm

在数学上,对于任何观察,您希望预测拟合那么由于由下式给出:它是简单的数学运算发现:XpredY^=E[Y|X=Xpred]Y^XpredTβ^

var(Y^)=XpredTvcov(β^)Xpred=σ^2XpredT(XTX)1Xpred

这是一个简单的二次形式规则,即离每个协变量的样本均值越远(在欧几里德意义上),将是,因此的方差越大。Xpred(XpredTXpred)Y^

的叉积的函数而不同R 中的一个说明性示例,因为您似乎对理论和计算方面都感兴趣......X

x <- 1:100
y <- rnorm(100, x, 100)
plot(x, y)
f <- lm(y ~ x)
X <- model.matrix(f)
pred.se <- apply(X, 1, function(Xrow) t(Xrow) %*% vcov(f) %*% Xrow)
lines(1:100, 1:100 + 1.96*sqrt(pred.se))
lines(1:100, 1:100 - 1.96*sqrt(pred.se))
## "conf band is for uncertainty in predicted ys, should be substantially 
## tighter than observed vales

在此处输入图像描述

我们有 然后

β^±tα/2,n2MSE(xix¯)2

  l=lm(y~x)
  MSE=mean ( (l$residuals)^2) 
      SSX=sum ( (x-mean(x))^2 )
      U= l$coefficients + qt(1-alpha/2,n-2) * sqrt(MSE/SSX)
  L= l$coefficients - qt(1-alpha/2,n-2) * sqrt(MSE/SSX)