我有四个不同的小时测量时间序列:
- 房屋内的热量消耗
- 屋外的温度
- 太阳辐射
- 风速
我希望能够预测房屋内的热量消耗。每年和每天都有明显的季节性趋势。由于不同系列之间存在明显的相关性,我想使用 ARIMAX 模型来拟合它们。这可以在 R 中使用包 TSA 中的函数 arimax 来完成。
我试图阅读有关此功能的文档,并阅读有关传输功能的信息,但到目前为止,我的代码:
regParams = ts.union(ts(dayy))
transferParams = ts.union(ts(temp))
model10 = arimax(heat,order=c(2,1,1),seasonal=list(order=c(0,1,1),period=24),xreg=regParams,xtransf=transferParams,transfer=list(c(1,1))
pred10 = predict(model10, newxreg=regParams)
给我:
其中黑线是实际测量数据,绿线是我的拟合模型。它不仅不是一个好的模型,而且显然有问题。
我承认我对 ARIMAX 模型和传递函数的了解是有限的。在函数 arimax() 中,(据我所知),xtransf 是我想使用(使用传递函数)来预测我的主要时间序列的外生时间序列。但是 xreg 和 xtransf 有什么区别呢?
更一般地说,我做错了什么?我希望能够比从 lm(热〜温度辐射风*时间)获得的更合适。
编辑: 根据一些评论,我删除了转移,并添加了 xreg:
regParams = ts.union(ts(dayy), ts(temp), ts(time))
model10 = arimax(heat,order=c(2,1,1),seasonal=list(order=c(0,1,1),period=24),xreg=regParams)
其中 dayy 是“一年中的第几天”,time 是一天中的小时。温度又是外面的温度。这给了我以下结果:
哪个更好,但与我预期的不太一样。