lee*_*ejy 7 modeling r time-series forecasting
我目前正在开展一个宠物项目,从历史基础油价预测未来的基础油价格.数据是每周一次,但在价格缺失之间有一段时间.
我对使用完整数据建模时间序列有点不错,但是当涉及到不规则数据时,我学到的模型可能不适用.我是否使用xts类并以常规方式在R中继续使用ARIMA模型?
在建立预测未来价格的模型后,我想考虑原油价格波动,柴油利润率,汽车销售,经济增长等(多变量?)来提高准确性.有人可以说明如何以有效的方式实现这一目标吗?在我看来,它看起来像一个迷宫.
编辑:修剪数据:https : //docs.google.com/document/d/18pt4ulTpaVWQhVKn9XJHhQjvKwNI9uQystLL4WYinrY/edit
编码:
Mod.fit<-arima(Y,order =c(3,2,6), method ="ML")
Run Code Online (Sandbox Code Playgroud)
结果:警告消息:在日志(s2)中:生成NaN
这个警告会影响我的模型准确度吗?
由于缺少数据,我无法使用ACF和PACF.有没有更好的方法来选择模型?我使用AIC(Akaike的信息准则)来比较使用该代码的不同ARIMA模型.ARIMA(3,2,6)给出了最小的AIC.
编码:
AIC<-matrix(0,6,6)
for(p in 0:5)
for(q in 0:5)
{
mod.fit<-arima(Y,order=c(p,2,q))
AIC[p+1,q+1]<-mod.fit$aic
p
}
AIC
Run Code Online (Sandbox Code Playgroud)
结果:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1396.913 1328.481 1327.896 1328.350 1326.057 1325.063
[2,] 1343.925 1326.862 1328.321 1328.644 1325.239 1318.282
[3,] 1334.642 1328.013 1330.005 1327.304 1326.882 1314.239
[4,] 1336.393 1329.954 1324.114 1322.136 1323.567 1316.150
[5,] 1319.137 1321.030 1320.575 1321.287 1323.750 1316.815
[6,] 1321.135 1322.634 1320.115 1323.670 1325.649 1318.015
Run Code Online (Sandbox Code Playgroud)
一般而言,您不需要先使用xts然后再执行ARIMA,就不需要额外的步骤了。缺失值记录NA为由处理arima(),如果使用method = "ML"则将准确处理;其他方法可能无法获得丢失数据的创新。之所以arima()可行,是因为将ARIMA模型拟合为状态空间表示形式。
如果数据是常规数据但缺少数据,则上述方法应该可以。
我说一般不使用xts的原因只是arima()需要单变量时间序列对象?ts作为其输入。但是,xts扩展并继承自Zoo对象,并且Zoo包确实为as.ts()class对象提供了一种方法"zoo"。因此,如果将数据放入zoo()或xts()对象中,则可以强制进行类化"ts",并且应NA在适当的位置包含,然后arima()将在适当的位置进行处理(即,没有太多的缺失值)。
| 归档时间: |
|
| 查看次数: |
5166 次 |
| 最近记录: |