如何在R中使用predict计算预测数据的标准误差

5

这是我的数据:

a <- c(60, 65, 70, 75, 80, 85, 90, 95, 100, 105)
b <- c(26, 24.7, 20, 16.1, 12.6, 10.6, 9.2, 7.6, 6.9, 6.9)
a_b <- cbind(a,b)

plot(a,b, col = "purple")
abline(lm(b ~ a),col="red")
reg <- lm(b ~ a)

我想使用predict函数来计算在110处预测的b值的标准误差。
z <- predict(reg, newdata=data.frame(year=110), se.fit=TRUE)

这是我获得的输出,但我认为这只是为我的10个时间点提供了标准错误,而不是新的第11个数据点:
 z
 $fit
   1         2         3         4         5         6         7         8         9        10 
 24.456364 22.146061 19.835758 17.525455 15.215152 12.904848 10.594545   8.284242  5.973939  3.663636 

 $se.fit
       1         2         3         4         5         6         7         8         9        10 
 1.2616229 1.0700007 0.8998935 0.7657760 0.6889958 0.6889958 0.7657760 0.8998935 1.0700007 1.2616229 

 $df
[1] 8

 $residual.scale
[1] 2.146516

我不确定这个的意思是什么,需要帮助!


将你的newdata命名为模型术语中的匹配名称,例如newdata=data.frame(a=110)predict和其他拟合函数在找不到正确变量时会搜索全局环境,导致行为异常。 - Rorschach
1个回答

4

在处理数据框内外的数据时,您需要更加小心。您的 newdata= 参数应该是一个数据框,并且其列名与原始 prodicters 匹配。像这样的东西会更好:

a_b <- data.frame(
    a=c(60, 65, 70, 75, 80, 85, 90, 95, 100, 105),
    b=c(26, 24.7, 20, 16.1, 12.6, 10.6, 9.2, 7.6, 6.9, 6.9)
)

plot(b~a, a_b, col = "purple")

reg <- lm(b ~ a, a_b)
abline(reg,col="red")

z <- predict(reg, newdata=data.frame(a=110), se.fit=TRUE)
# $fit
#        1 
# 1.353333 
# 
# $se.fit
# [1] 1.466349
# 
# $df
# [1] 8
# 
# $residual.scale
# [1] 2.146516

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接