文章目录
——整理的动态谐波回归的一些资料,可能有片面的,仅供参考
1. R中的动态回归模型(Dynamic Regression Models)
对一个时间序列{y(n)},设{x(n)}是{y(n)}的影响因素组成的时间序列,其中x(n)可以是一个向量。
动态回归模型的意思就是:先用一个“机器学习模型”,用{x(n)}当做输入,{y(n)}当做目标,训练出一个机器学习模型(R中基本都是线性函数,我看有的资料里称这种为线性动态回归)。训练完之后对于“机器学习模型”输出和{y(n)}的残差序列,再用一个“时间序列模型”去拟合这个残差序列。于是得到一个综合的模型。
动态回归模型的预测值 = 一个“机器学习模型”的预测值 + 一个“时间序列模型”的预测值
2. 动态谐波回归(Dynamic Harmonic Regression)
对于上述的动态回归模型,特别地,当{x(n)}是序列{y(n)}的傅里叶展开式中的部分傅里叶项的时候,称为动态谐波回归。
在R-forecast中,用函数{x(n)}=fourier({y(n)},K),提取{y(n)}的傅里叶展开式的前K对sin和cos项作为特征{x(n)}。关于fourier()函数更详细的工作原理,请参考R-fourier()计算方法。
3. 软件实现
3.1 动态回归
R中forecast包中很多预测算法可以充当上述的“时间序列模型”,例如auto.arima,nnetar等。预测函数参数中带有xreg参数的就是可以进行动态回归的函数。例如auto.arima(y,xreg=x),nnetar(y,xreg=x)等。
R中forecast包中都是用线性回归来当做上述的“机器学习模型”。
需要说明的是,在预测未来的数据的时候,需要通过xreg参数提供未来的数据的影响因素数据。
3.2 动态谐波回归
特别地,当3.1中 xreg=fourier(y,K),其中K是给定的一个常数,这时就是动态谐波回归了。
动态谐波回归的xreg每一列都是周期性的,所以对于未来的xreg,可以很方便的计算出来,未来的xreg用fourier(y,K,h=24)来预测未来24个点的xreg值。
4.为啥叫“谐波”?
简单来说,我理解的谐波就是:周期函数傅里叶分解之后,频率是原周期函数频率整数倍的那些分量。百度百科-谐波