如何用多元回归预测ARIMA?
我的问题的完整R数据和代码如下: 我是R新手,在时间序列分析方面还是初学者,所以请原谅我的无知 我试图用2个虚拟编码回归器对一些入学数据进行建模和预测。我已经使用了如何用多元回归预测ARIMA?,r,time-series,forecasting,arima,R,Time Series,Forecasting,Arima,我的问题的完整R数据和代码如下: 我是R新手,在时间序列分析方面还是初学者,所以请原谅我的无知 我试图用2个虚拟编码回归器对一些入学数据进行建模和预测。我已经使用了auto.arima来适应模型: model您有两个问题。其中之一是R中的各种预测功能(有意地?)使您感到困难 第一个问题是,您需要为预测期定义回归系数的值。使用window()从x中提取相关数据: 产生 $pred Time Series: Start = c(2017, 3) End = c(2019, 1) Frequenc
auto.arima
来适应模型:
model您有两个问题。其中之一是R中的各种预测功能(有意地?)使您感到困难
第一个问题是,您需要为预测期定义回归系数的值。使用window()
从x
中提取相关数据:
产生
$pred
Time Series:
Start = c(2017, 3)
End = c(2019, 1)
Frequency = 5
[1] 52.00451 52.00451 52.00451 52.00451 52.00451 52.00451 52.00451 52.00451
[9] 52.00451
$se
Time Series:
Start = c(2017, 3)
End = c(2017, 3)
Frequency = 5
[1] 17.13345
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
2017.40 39.91035 17.612358 62.20834 5.808514 74.01219
2017.60 59.51003 32.783451 86.23661 18.635254 100.38481
2017.80 69.81000 39.290834 100.32917 23.134962 116.48505
2018.00 57.49140 23.601444 91.38136 5.661183 109.32162
2018.20 55.45759 18.503034 92.41214 -1.059524 111.97470
2018.40 34.57866 -7.306747 76.46406 -29.479541 98.63686
2018.60 52.30199 6.702068 97.90192 -17.437074 122.04106
2018.80 61.61591 12.582055 110.64977 -13.374900 136.60672
2019.00 50.47661 -1.765945 102.71917 -29.421485 130.37471
您还可以使用auto.arima()
。令人困惑的是,这次forecast()
(仍然发送到forecast.Arima()
)确实有效:
是的,你得到的预测是原来的五倍。第一列是预期预测,其他列给出预测间隔。这些由level
参数到forecast()
控制forecast()
函数来自forecast包,并与来自该包的模型函数一起工作。这就是为什么可以使用forecast(model\u par2,xreg=x\u fcst)
从auto.arima()生成预测
arima()
函数来自stats包,因此不能保证它能与forecast()
一起工作。要指定您自己的ARIMA模型,您可以使用ARIMA()
函数,其行为与ARIMA()
非常相似,但您可以使用forecast(model\u par2,xreg=x\u fcst)
从中生成预测,并且,要继续处理整个时间序列(而不是部分时间序列),我必须预测回归器吗?我实际上知道未来的值(假设它是虚拟的,并且条件不会改变),所以我是否应该用所需的适当数量的数据加载新数据?您需要为您希望预测的时段指定回归值。我不完全确定你所说的“继续整个时间序列”是什么意思,你是指样本拟合吗?然后,您需要相应的采样期内的回归值。对于未来,您需要提供已知值,或者预测回归器本身。(其实是一样的)谢谢。这是有道理的。回到原来的问题,是否没有办法将forecast
与自定义模型一起使用,而不是auto.arima
?指定的模型为(1,1,1)(1,0,0)[5],用于注册(非部分注册)。我想对部分数据使用该模型。上述代码使用predict
适用于这种情况,但是predict
与auto.arima
结果相比似乎不那么准确,后者更接近实际结果。然而,带有enroll_partial的auto.arima给出了一个不同的模型。我有点搞不清楚您到底在寻找什么。你指的是什么定制型号?你所说的“使用”模型是什么意思?在模型形式保持不变的情况下重新调整系数,还是只应用它而不重新调整新数据?也许考虑考虑一个新的问题,以一个明确的最小的工作例子,并准确地解释你正在寻找什么。我指的是从原始时间序列数据(1997-2019)中提取原始ARIMA模型的系数,并将其应用于截断数据(1997-2017),以测试模型预测的准确性。从Mitchell O'Hara-Wild的评论中,我现在明白了,我应该使用capital-AArima()
来指定自定义模型。谢谢!这很有效。我做了以下操作:model\u partial
$pred
Time Series:
Start = c(2017, 3)
End = c(2019, 1)
Frequency = 5
[1] 52.00451 52.00451 52.00451 52.00451 52.00451 52.00451 52.00451 52.00451
[9] 52.00451
$se
Time Series:
Start = c(2017, 3)
End = c(2017, 3)
Frequency = 5
[1] 17.13345
model_par2 <- auto.arima(enroll_partial, xreg=x_par)
forecast(model_par2,xreg=x_fcst)
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
2017.40 39.91035 17.612358 62.20834 5.808514 74.01219
2017.60 59.51003 32.783451 86.23661 18.635254 100.38481
2017.80 69.81000 39.290834 100.32917 23.134962 116.48505
2018.00 57.49140 23.601444 91.38136 5.661183 109.32162
2018.20 55.45759 18.503034 92.41214 -1.059524 111.97470
2018.40 34.57866 -7.306747 76.46406 -29.479541 98.63686
2018.60 52.30199 6.702068 97.90192 -17.437074 122.04106
2018.80 61.61591 12.582055 110.64977 -13.374900 136.60672
2019.00 50.47661 -1.765945 102.71917 -29.421485 130.37471