假设我运行一个线性回归模型。我对生成预测间隔感兴趣。预测值很容易计算,但如何计算每个的标准偏差?
在 R 中,我使用predict.lm函数并使用interval='prediction'参数。我会将 CI 的最高界限减去实际数字并除以 1.96 以获得 95% CI,但我想直接得到它以确定。
我试过 se.fit = TRUE 和类似的东西,但没有奏效。
假设我运行一个线性回归模型。我对生成预测间隔感兴趣。预测值很容易计算,但如何计算每个的标准偏差?
在 R 中,我使用predict.lm函数并使用interval='prediction'参数。我会将 CI 的最高界限减去实际数字并除以 1.96 以获得 95% CI,但我想直接得到它以确定。
我试过 se.fit = TRUE 和类似的东西,但没有奏效。
通过拟合 lm 对象,您可以获得执行此操作所需的所有组件。从数学上讲,您有估计:
和估计:
贝塔帽是通过调用对象和方差估计coef来获得的。lmvcovlm
在数学上,对于任何观察,您希望预测拟合那么由于由下式给出:它是简单的数学运算发现:
这是一个简单的二次形式规则,即离每个协变量的样本均值越远(在欧几里德意义上),将是,因此的方差越大。
的叉积的函数而不同。R 中的一个说明性示例,因为您似乎对理论和计算方面都感兴趣......
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

我们有 然后
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)