文章目錄
——整理的動態諧波迴歸的一些資料,可能有片面的,僅供參考
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.爲啥叫“諧波”?
簡單來說,我理解的諧波就是:週期函數傅里葉分解之後,頻率是原週期函數頻率整數倍的那些分量。百度百科-諧波