问题
根据所得到的回归模型预测新的值。
解决方案
将要用于预测的数据保存到数据框中。用predict函数,将newdata参数设为这个数据框:
> m <- lm(y ~ u + v + w)
> preds <- data.frame(u=3.1, v=4.0, w=5.5)
> predict(m, newdata=preds)
讨论
有了线性模型,就可以很方便地做预测,predict函数会搞定所有的麻烦。唯一的麻烦就是要把你的数据整到数据框中去。
predict函数会返回一个预测值的向量,数据中每一行都会有一个相应的预测值。 解决方案中的例子只有一行,所以只有一个返回值:
> preds <- data.frame(u=3.1, v=4.0, w=5.5)
> predict(m, newdata=preds)
1
12.31374
如果预测数据有多行,就会为没一行数据返回一个预测值:
> preds <- data.frame(
+ u=c(3.0, 3.1, 3.2, 3.3),
+ v=c(3.9, 4.0, 4.1, 4.2),
+ w=c(5.3, 5.5, 5.7, 5.9) )
> predict(m, newdata=preds)
1 2 3 4
11.97277 12.31374 12.65472 12.99569
在这里要说明一下,新的数据中不需要有响应变量,只要有预测变量即可。因为响应变量正是你要计算的值,所以并不是输入数据中所必须的。
扩展阅读
这里的预测只是点估计。用predict的interval=”prediction”参数可以得到置信区间。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。