我有四个不同的每小时测量时间序列:
- 房屋内部的热量消耗
- 屋外温度
- 太阳辐射
- 风速
我希望能够预测房屋内部的热量消耗。每年和每天都有明显的季节性趋势。由于不同系列之间存在明显的相关性,因此我想使用ARIMAX模型拟合它们。可以使用包TSA中的arimax函数在R中完成。
我试图阅读有关此函数的文档,并阅读传递函数,但到目前为止,我的代码是:
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(热〜临时辐射风*时间)获得的更好的拟合度。
编辑: 基于一些评论,我删除了transfer,并添加了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是“一年中的第几天”,而时间是一天中的小时。温度再次是外界温度。这给了我以下结果:
更好,但远不及我所期望的。