我使用了一个回顾窗口对动物园数据框执行多元线性回归,如下所示:
df y X1 X2 X3 X4 2015-01-05 -0.017697886 -0.0303143773 -0.037748414 -2.015346e-02 0.12078726 2015-01-06 0.026334273 -0.0003695332 -0.005050541 -7.924213e-03 -0.02709586 2015-01-07 -0.033780880 0.0051106504 0.006257167 8.340199e-03 -0.02316465 2015-01-08 0.012420844 0.0330091413 0.035152040 2.311611e-02 -0.08373201 2015-01-09 -0.005641188 -0.0194103325 -0.029843684 -1.053020e-02 0.10505671 2015-01-12 -0.005053201 0.0137312764 0.013474812 4.306844e-05 0.03234955 2015-01-13 0.011951128 0.0161338800 0.015979652 6.252886e-03 -0.04066445 2015-01-14 -0.023470817 -0.0125438934 -0.014201182 -2.378026e-02 0.03254407 2015-01-15 0.014655518 0.0217170617 0.021671946 1.712123e-02 -0.01567272
我使用lm:
回归y~X1 + X2 + X3 + X4
lm <- lm(df[,1] ~ df[,-1])
并获得最佳拟合参数:
> coef(sum_lm)
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.02360827 0.007349594 -3.212187 0.03252117
merge_n.tmp[, -1]X1 8.99408519 2.341094738 3.841829 0.01843072
merge_n.tmp[, -1]X2 -7.13439870 1.913985874 -3.727509 0.02034096
merge_n.tmp[, -1]X3 -0.91469896 0.640218236 -1.428730 0.22628243
merge_n.tmp[, -1]X4 -0.17417599 0.133629611 -1.303424 0.26238975
现在我想在某一天评估y,其中我确实有X1,X2,X3,X4的值。例如:2015-01-15我最合适的模型的价值是什么:
X1(2015-01-15) = 0.0217170617
X2(2015-01-15) = 0.021671946
X3(2015-01-15) = 1.712123e-02
X4(2015-01-15) = -0.01567272
我可以编写一个小脚本来完成它但在我想询问是否在R中有一个函数允许我直接执行此操作,没有脚本/循环等。
扩展到以前的问题:
另一个问题是:如果我想在未来提前预测怎么办?当我输入日期不同于df的数据框时,predict
给我一个问题。
答案 0 :(得分:1)
您正在寻找通用函数predict()
,请尝试查看帮助页面?predict
和?predict.lm
。下面是一个小例子:
## lets make up some data and fit model:
library(zoo)
myTs <- zoo(mtcars, seq(as.Date("2016-01-01"), length.out = nrow(mtcars), by = 1))
fit <- lm(mpg ~ cyl + disp, data = myTs)
现在我们预测所有现有的观察结果:
> predict(fit)
2016-01-01 2016-01-02 2016-01-03 2016-01-04 2016-01-05 2016-01-06 2016-01-07 2016-01-08
21.84395 21.84395 26.08886 19.82676 14.55267 20.50602 14.55267 25.29227
2016-01-09 2016-01-10 2016-01-11 2016-01-12 2016-01-13 2016-01-14 2016-01-15 2016-01-16
25.41371 21.68752 21.68752 16.28581 16.28581 16.28581 12.24731 12.49431
2016-01-17 2016-01-18 2016-01-19 2016-01-20 2016-01-21 2016-01-22 2016-01-23 2016-01-24
12.90598 26.69196 26.75371 26.84839 25.83979 15.41718 15.70536 14.75851
2016-01-25 2016-01-26 2016-01-27 2016-01-28 2016-01-29 2016-01-30 2016-01-31 2016-02-01
13.72933 26.68578 25.83568 26.35438 14.73792 22.15271 15.76711 25.82127
或使用newdata参数进行新观察:
predict(fit, newdata = data.frame(cyl = 6, disp = 180))
21.43228
答案 1 :(得分:0)
modelr::add_predictions(df, lm)
会使用拟合值扩充数据框。如果您还需要置信区间,可以使用ciTools::add_ci(df, lm)
。
编辑:没关系。显然,这些包不支持动物园数据框。