机器学习笔记 时间序列预测(基本数据处理,Box-Cox)
??數(shù)據(jù)調(diào)整
?????????調(diào)整歷史數(shù)據(jù)通常會導致更簡單的預測任務。
????????在這里,我們處理四種調(diào)整:日歷調(diào)整、人口調(diào)整、通貨膨脹調(diào)整和數(shù)學變換。
????????這些調(diào)整和轉(zhuǎn)換的目的是通過消除已知的變化源或通過使整個數(shù)據(jù)集的模式更加一致來簡化歷史數(shù)據(jù)中的模式。 更簡單的模式通常會導致更準確的預測。
1 日歷調(diào)整
????????在季節(jié)性數(shù)據(jù)中看到的一些變化可能是由于簡單的日歷效應。 在這種情況下,如果在擬合預測模型之前消除變化,通常更容易。
????????例如,如果您正在研究農(nóng)場的每月牛奶產(chǎn)量,除了全年的季節(jié)性變化外,由于每個月的天數(shù)不同,月份之間也會存在差異。
????????
?????????請注意,與每月總產(chǎn)量圖(上圖)相比,平均日產(chǎn)量圖(下圖)中的季節(jié)性模式要簡單得多。 通過查看平均每日產(chǎn)量而不是每月總產(chǎn)量,我們有效地消除了由于月份長度不同而導致的變化。 更簡單的模式通常更容易建模并導致更準確的預測。
2 人口調(diào)整
????????任何受人口變化影響的數(shù)據(jù)都可以調(diào)整為人均數(shù)據(jù)。 也就是說,考慮每人(或每千人或每百萬人)的數(shù)據(jù)而不是總數(shù)。
???????? 例如,如果您正在研究某個特定地區(qū)的醫(yī)院床位數(shù)量隨時間的變化,如果您通過考慮每千人的床位數(shù)量來消除人口變化的影響,那么結果會更容易解釋。 然后你可以看到床的數(shù)量是否真的增加了,或者增加是否完全是由于人口的增加。 總床位數(shù)可能增加,但每千人床位數(shù)減少。 當人口增長速度快于病床數(shù)量時,就會出現(xiàn)這種情況。
???????? 對于大多數(shù)受人口變化影響的數(shù)據(jù),最好使用人均數(shù)據(jù)而不是總數(shù)。
3 通貨膨脹調(diào)整
????????受貨幣價值影響的數(shù)據(jù)最好在擬合模型之前進行調(diào)整。
????????例如,由于通貨膨脹,過去幾十年來新房的平均成本將會增加。 今年 20 萬美元的房子和 20 年前 20 萬美元的房子不同。 出于這個原因,通常會調(diào)整金融時間序列,以便所有值都以特定年份的美元值表示。 例如,房價數(shù)據(jù)可能以 2000 年美元表示。
????????為了進行這些調(diào)整,使用了價格指數(shù)。 如果 zt 表示價格指數(shù),yt 表示 t 年的原始房價,則 xt=yt/zt ?z2000 給出 2000 年美元價值的調(diào)整后房價。 價格指數(shù)通常由政府機構構建。 對于消費品,常見的價格指數(shù)是消費者價格指數(shù)(或 CPI)。
4 數(shù)學調(diào)整
????????如果數(shù)據(jù)顯示隨序列水平增加或減少的變化,則數(shù)據(jù)轉(zhuǎn)換可能很有用。
???????? 例如,對數(shù)變換通常很有用。 如果我們將原始觀測值表示為 y1,...,yT 并將轉(zhuǎn)換后的觀測值表示為 w1,...,wT ,那么 wt=log(yt) 。
????????對數(shù)很有用,因為它們是可解釋的:對數(shù)值的變化是原始尺度上的相對(或百分比)變化。 因此,如果使用以 10 為底的對數(shù),則對數(shù)刻度增加 1 對應于原始刻度的 10 倍增。
????????對數(shù)轉(zhuǎn)換的另一個有用特性是它們將預測限制為在原始規(guī)模上保持正數(shù)。
?????????有時也使用其他轉(zhuǎn)換(盡管它們不是那么可解釋)。 例如,可以使用平方根和立方根。 這些被稱為冪變換,因為它們可以寫成形式
4.1Box-Cox 變換族?
?????????一個有用的變換族,包括對數(shù)和冪變換,是 Box-Cox 變換族,它取決于參數(shù) λ,定義如下:
????????
?????????Box-Cox 變換中的對數(shù)始終是自然對數(shù)(即以 e 為底)。 因此,如果 λ=0 ,則使用自然對數(shù),但如果 λ≠0 ,則使用冪變換,然后進行一些簡單的縮放。
????????如果 λ=1 ,則 wt=yt?1 ,因此變換后的數(shù)據(jù)向下移動,但時間序列的形狀沒有變化。 但對于 λ 的所有其他值,時間序列將改變形狀。
4.1.1 不同λ下Box-Cox的曲線
比如這是λ=1的時候的曲線:
λ=-1時候的曲線
?λ=2時候的曲線
?????????一個好的 λ 值可以使整個系列的季節(jié)變化的大小大致相同,因為這使得預測模型更簡單。 在這種情況下,λ=0.30 效果很好,盡管 0 到 0.5 之間的任何 λ 值都會給出類似的結果。
????????
?4.1.2 R語言實現(xiàn)
library(BoxCox)y<-ts(c(5,3,3.1,3.2,3.3,3.4,3.5,3.3,3.2,4,4.1,4.2,6,4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5,10,9,8,8.5,8.4,8.5,8.6,8.7,8.8,8.9,9,9.5),start = 2020,frequency = 12)b=boxcox(y~.,data=y) l=which(b$y==max(b$y))l #75b$x[l] #0.989899也就是這里0.989899就是最佳的λ,也就是'b=boxcox(y~.,data=y)'輸出的圖的最高點
? 4.1.3 允許負數(shù)的Box-Cox變換(及其逆變換)
???????BoxCox() 命令實際上實現(xiàn)了對 Box-Cox 變換的輕微修改,當 λ>0 時允許 yt 為負值:
????????
? ? ? ? 正數(shù)部分的yt,和原來的Box-Cox變換是一樣的
?????????選擇轉(zhuǎn)換后,我們需要預測轉(zhuǎn)換后的數(shù)據(jù)。 然后,我們需要逆向變換(或反向變換)以獲得原始尺度的預測。 反向 Box-Cox 變換由下式給出??????
?????????????????
?5 偏差調(diào)整
????????使用諸如 Box-Cox 變換之類的數(shù)學變換的一個問題是,反向變換的點預測將不是預測分布的平均值。 事實上,它通常是預測分布的中位數(shù)(假設變換空間上的分布是對稱的)。
????????出于許多目的,這是可以接受的,但有時需要平均預測。 例如,您可能希望將各個地區(qū)的銷售預測相加,形成整個國家的預測。 但是中位數(shù)不加起來,而平均值加起來。
以不考慮負數(shù)的Box-Cox為例:
它的逆變換為
?而逆變換的均值為:
?其中 是 h 步預測方差。 預測方差越大,均值和中位數(shù)之間的差異越大。 ????????
(3.1改)給出的簡單反向變換預測與(3.2)給出的平均值之間的差異稱為偏差。 當我們使用平均值而不是中位數(shù)時,我們說點預測已經(jīng)過偏差調(diào)整 bias-adjusted。
5.1 R語言實現(xiàn)
????????要了解這種偏差調(diào)整有多大差異,請考慮以下示例,我們使用帶有對數(shù)變換 (λ=0) 的漂移方法預測雞蛋的年平均價格。 在這種情況下,對數(shù)轉(zhuǎn)換有助于確保預測和預測區(qū)間保持正數(shù)。
?漂移方法見:機器學習筆記 時間序列預測(最基本的方法【benchmark】)_UQI-LIUWJ的博客-CSDN博客
library(forecast)fc<-rwf(y,drift=TRUE,h=50)fc1<-rwf(y,drift=TRUE,h=50,biasadj = TRUE)autoplot(y)+autolayer(fc,series='simple back transformation')+autolayer(fc1,series = 'bias adjusted',PI=FALSE)總結
以上是生活随笔為你收集整理的机器学习笔记 时间序列预测(基本数据处理,Box-Cox)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习笔记 时间序列预测(最基本的方法
- 下一篇: 机器学习笔记:(时间序列中的线性回归)如