时间序列建模与不规则数据

时间:2011-11-18 09:50:35

标签: r modeling 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")

结果:         警告信息:         在log(s2)中:生成NaNs

此警告会影响我的模型准确度吗?

由于缺少数据,我无法使用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

结果:

              [,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

1 个答案:

答案 0 :(得分:5)

一般情况下,您不需要使用 xts ,然后执行ARIMA,需要额外的步骤。记录为NA的缺失值由arima()处理,如果使用method = "ML",则会完全处理;其他方法可能无法获得缺失数据的创新。这是有效的,因为arima()在状态空间表示中符合ARIMA模型。

如果数据是常规但数据丢失,则上述情况应该没问题。

我说的原因一般不使用 xts 只是arima()需要一个单变量的时间序列对象?ts作为输入。但是, xts 扩展并继承自 zoo 对象, zoo 提供as.ts()方法对于类"zoo"的对象。因此,如果您将数据转换为zoo()xts()对象,则可以强制转换为"ts"类,并且应该在适当的位置包含NA arima() {{1}} 1}}然后将处理它是否可以(即没有太多的缺失值)。