【发布时间】:2021-07-07 02:28:13
【问题描述】:
在自然科学的许多领域,通常将线性回归分析的结果报告为y = (a1 +- u(a1)) + (a2 +- u(a2)) * x,包括 R2 和 p,但不包括原始数据。 u(a1) 和 u(a2) 是 a1 和 a2 的不确定性(标准误差)。我如何利用这些信息计算置信区间和预测区间,或者进行“合理”的估计?
让我用一个例子来澄清一下。这是一个虚拟数据集,直线斜率为 1,高斯噪声为 10:
set.seed(1961)
npoints <- 1e2
(x <- 1:npoints)
(y <-1:npoints + rnorm(npoints, 0, npoints/10))
现在我执行线性回归:
par(mar = c(4, 4, 1, 1))
xy.model <- lm(y ~ x)
plot(x, y, pch = 16)
abline(xy.model, col = "orange", lwd = 2)
(xy.sum <- summary(xy.model))
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) -1.28106 1.94918 -0.657 0.513
# x 1.00484 0.03351 29.987 <2e-16 ***
# Residual standard error: 9.673 on 98 degrees of freedom
# Multiple R-squared: 0.9017, Adjusted R-squared: 0.9007
# F-statistic: 899.2 on 1 and 98 DF, p-value: < 2.2e-16
我计算置信区间和预测区间:
x.new <- data.frame(x = 1:npoints)
xy.conf <- predict.lm(xy.model, se.fit = TRUE, interval = "confidence", newdata = x.new)
xy.pred <- predict.lm(xy.model, se.fit = TRUE, interval = "prediction", newdata = x.new)
例如,第一个点的置信区间和预测区间为:
xy.conf$fit[1, ]
# fit lwr upr
# -0.2762127 -4.0867009 3.5342755
xy.pred$fit[1, ]
# fit lwr upr
# -0.2762127 -19.8462821 19.2938568
如果回归方程报告为 y = (-1.28106 +- 1.94918) + (1.00484 +- 0.03351) * x, R2 = 0.9017, p
【问题讨论】:
-
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。或者对于 Cross Validated 来说这可能是一个更好的问题,因为统计问题是关于主题的。
-
谢谢,我提供了一个可重现的例子。
标签: r linear-regression