R - calculate/evaluate 特定日期的时间序列模型
R - calculate/evaluate a time series model on a specific day
我使用回顾 window 对动物园数据框执行多元线性回归,如下所示:
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
现在我想在我有 X1、X2、X3、X4 值的给定日期计算 y。例如:我知道 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 中是否有一个函数可以让我直接做这个,w/o scripting/looping 等等
上一个问题的扩展:
另一个问题是:如果我想提前预测未来怎么办? predict
当我输入日期与 df 不同的数据帧时出现问题。
modelr::add_predictions(df, lm)
将使用拟合值扩充您的数据框。如果您还想要置信区间,可以使用 ciTools::add_ci(df, lm)
.
编辑:没关系。显然这些包不支持动物园数据框。
您正在寻找通用函数 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
我使用回顾 window 对动物园数据框执行多元线性回归,如下所示:
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
现在我想在我有 X1、X2、X3、X4 值的给定日期计算 y。例如:我知道 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 中是否有一个函数可以让我直接做这个,w/o scripting/looping 等等
上一个问题的扩展:
另一个问题是:如果我想提前预测未来怎么办? predict
当我输入日期与 df 不同的数据帧时出现问题。
modelr::add_predictions(df, lm)
将使用拟合值扩充您的数据框。如果您还想要置信区间,可以使用 ciTools::add_ci(df, lm)
.
编辑:没关系。显然这些包不支持动物园数据框。
您正在寻找通用函数 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