間序列分析實(shí)戰(zhàn):從數(shù)據(jù)平穩(wěn)化到ARIMA建模的完整指南)
1. 從“小白”到入門(mén)為什么時(shí)間序列值得你花時(shí)間如果你正在接觸數(shù)學(xué)建模或者對(duì)數(shù)據(jù)分析感興趣那么“時(shí)間序列”這個(gè)詞你肯定不陌生。它聽(tīng)起來(lái)有點(diǎn)學(xué)術(shù)有點(diǎn)復(fù)雜很多新手一看到ARIMA、平穩(wěn)性檢驗(yàn)這些術(shù)語(yǔ)就頭大直接勸退。但我想說(shuō)的是時(shí)間序列可能是你從“理論派”邁向“實(shí)戰(zhàn)派”數(shù)據(jù)分析師最關(guān)鍵的一塊敲門(mén)磚。為什么因?yàn)楝F(xiàn)實(shí)世界的數(shù)據(jù)絕大多數(shù)都自帶時(shí)間戳。從每天的股票價(jià)格、每小時(shí)的網(wǎng)站訪問(wèn)量、每月的銷售額到每分鐘的傳感器讀數(shù)它們都是按時(shí)間順序排列的這就是時(shí)間序列數(shù)據(jù)。學(xué)會(huì)分析它就等于掌握了理解世界動(dòng)態(tài)變化的一把鑰匙。很多人把時(shí)間序列建模想得太高深覺(jué)得那是統(tǒng)計(jì)學(xué)家的事。其實(shí)不然它的核心思想非常樸素過(guò)去發(fā)生的事情會(huì)影響未來(lái)。我們做時(shí)間序列分析本質(zhì)上就是在數(shù)據(jù)中尋找這種“記憶”或“慣性”的規(guī)律。比如今天的天氣大概率會(huì)影響明天的天氣上個(gè)月的銷量對(duì)下個(gè)月的銷量有參考價(jià)值。建模的目的就是把這個(gè)規(guī)律量化出來(lái)用來(lái)預(yù)測(cè)未來(lái)或者理解過(guò)去變化的驅(qū)動(dòng)因素。這篇指南我就想拋開(kāi)那些讓人望而生畏的公式推導(dǎo)當(dāng)然必要的原理會(huì)講清楚用最直白的方式帶你走一遍時(shí)間序列分析的完整流程。我會(huì)重點(diǎn)分享那些我踩過(guò)的坑、容易誤解的概念以及如何一步步從一堆雜亂的時(shí)間數(shù)據(jù)里挖出有價(jià)值的結(jié)論。無(wú)論你是參加數(shù)學(xué)建模比賽還是處理工作中的業(yè)務(wù)數(shù)據(jù)這套“小白指南”都能讓你快速上手避開(kāi)新手最常見(jiàn)的那些雷區(qū)。2. 萬(wàn)事開(kāi)頭難拿到數(shù)據(jù)后第一件該做的事當(dāng)你拿到一份時(shí)間序列數(shù)據(jù)比如一個(gè)CSV文件第一反應(yīng)可能就是想趕緊畫(huà)個(gè)圖看看趨勢(shì)或者直接套個(gè)模型跑一下。別急這往往是新手犯的第一個(gè)錯(cuò)誤。在按動(dòng)任何建模按鈕之前你需要像偵探勘察現(xiàn)場(chǎng)一樣先對(duì)你的數(shù)據(jù)做一個(gè)全面的“體檢”。這個(gè)階段做得好能幫你省掉后面一大半的麻煩。2.1 數(shù)據(jù)導(dǎo)入與初步觀察別讓格式問(wèn)題坑了你假設(shè)你有一份某商品過(guò)去三年的每日銷售額數(shù)據(jù)。用Python的pandas讀入后別急著df.head()一下就完事。首先確認(rèn)你的“時(shí)間列”已經(jīng)被正確識(shí)別為時(shí)間戳格式。這是最基礎(chǔ)也最容易出錯(cuò)的一步。很多從數(shù)據(jù)庫(kù)或Excel導(dǎo)出的數(shù)據(jù)時(shí)間列可能是字符串比如“2023-01-01”。你必須用pd.to_datetime()函數(shù)把它轉(zhuǎn)換成pandas能理解的datetime類型。我強(qiáng)烈建議你轉(zhuǎn)換后將這一列設(shè)置為數(shù)據(jù)的索引df.set_index(‘date’, inplaceTrue)。這樣做的好處是后續(xù)所有的繪圖、重采樣、滑動(dòng)窗口計(jì)算都會(huì)變得異常方便。接下來(lái)檢查數(shù)據(jù)的完整性。時(shí)間序列最怕有“洞”。使用df.index.is_unique檢查是否有重復(fù)的時(shí)間點(diǎn)用df.asfreq(‘D’)假設(shè)是日數(shù)據(jù)重新采樣到固定頻率可以立刻暴露出哪些日期有數(shù)據(jù)缺失。缺失值怎么處理這里有個(gè)經(jīng)驗(yàn)對(duì)于時(shí)間序列簡(jiǎn)單的用前后均值填充有時(shí)會(huì)引入虛假的平穩(wěn)性。我的建議是如果缺失不多比如少于5%可以考慮線性插值如果缺失較多可能需要思考是數(shù)據(jù)采集問(wèn)題還是業(yè)務(wù)本身有中斷如節(jié)假日后者需要更復(fù)雜的處理甚至引入外部變量。2.2 可視化用眼睛先“建模”人眼是強(qiáng)大的模式識(shí)別器。在動(dòng)用任何統(tǒng)計(jì)檢驗(yàn)之前先畫(huà)幾張圖。時(shí)序圖這是最基本的df[‘sales’].plot()。看什么看整體趨勢(shì)是上升、下降還是平穩(wěn)、季節(jié)性是否每隔固定周期如一年、一月出現(xiàn)重復(fù)的波動(dòng)、以及是否存在明顯的異常點(diǎn)某個(gè)點(diǎn)突然飆升或暴跌。子圖分解使用statsmodels庫(kù)的seasonal_decompose函數(shù)可以把一條時(shí)間序列拆解成趨勢(shì)Trend、季節(jié)性Seasonality和殘差Residual三部分。這個(gè)圖非常直觀能讓你一眼看出數(shù)據(jù)的主要構(gòu)成。如果季節(jié)性波動(dòng)非常強(qiáng)那么你后續(xù)的模型就必須考慮季節(jié)性因素如果趨勢(shì)明顯你可能需要先做差分。直方圖與Q-Q圖看看數(shù)據(jù)的分布。很多時(shí)間序列模型如ARIMA假設(shè)殘差是正態(tài)分布的。通過(guò)直方圖和Q-Q圖可以初步判斷數(shù)據(jù)是否嚴(yán)重偏離正態(tài)。如果嚴(yán)重偏離可能需要對(duì)數(shù)據(jù)做變換如取對(duì)數(shù)。注意畫(huà)圖時(shí)一定要確保時(shí)間軸是正確的。我曾經(jīng)遇到過(guò)因?yàn)闀r(shí)區(qū)沒(méi)統(tǒng)一導(dǎo)致畫(huà)出來(lái)的趨勢(shì)出現(xiàn)詭異跳變的情況。檢查索引是否為單調(diào)遞增df.index.is_monotonic_increasing這也是個(gè)好習(xí)慣。3. 平穩(wěn)性時(shí)間序列建模的“入場(chǎng)券”這是時(shí)間序列分析中最核心、也最讓新手困惑的概念之一。你可以這么理解一個(gè)平穩(wěn)的時(shí)間序列其統(tǒng)計(jì)性質(zhì)如均值、方差不隨時(shí)間變化。想象一下你在分析一條河的水位。如果這條河沒(méi)有筑壩雨季水位高旱季水位低它的均值在變這就是不平穩(wěn)。如果我們?cè)谏嫌涡蘖藗€(gè)大水庫(kù)無(wú)論雨季旱季都保持水位恒定那它就是平穩(wěn)的。為什么要求平穩(wěn)因?yàn)榻^大多數(shù)經(jīng)典時(shí)間序列模型如AR、MA、ARIMA的理論基礎(chǔ)都建立在平穩(wěn)性假設(shè)之上。用不平穩(wěn)的數(shù)據(jù)去擬合這些模型就像用尺子去量一個(gè)不斷膨脹的氣球結(jié)果毫無(wú)意義。3.1 如何判斷平穩(wěn)性——ADF檢驗(yàn)的實(shí)戰(zhàn)解讀理論上看時(shí)序圖如果沒(méi)明顯趨勢(shì)和季節(jié)性可以粗略認(rèn)為平穩(wěn)。但我們需要更嚴(yán)謹(jǐn)?shù)慕y(tǒng)計(jì)檢驗(yàn)。最常用的就是增強(qiáng)迪基-富勒檢驗(yàn)Augmented Dickey-Fuller Test, ADF檢驗(yàn)。在Python中用statsmodels.tsa.stattools.adfuller()可以輕松完成。新手常犯的錯(cuò)誤是只看p值。ADF檢驗(yàn)的原假設(shè)H0是“時(shí)間序列是非平穩(wěn)的”。所以如果p值小于顯著性水平通常取0.05我們拒絕原假設(shè)認(rèn)為序列是平穩(wěn)的。如果p值大于0.05則無(wú)法拒絕原假設(shè)認(rèn)為序列是非平穩(wěn)的。但這里有個(gè)大坑ADF檢驗(yàn)的結(jié)果對(duì)檢驗(yàn)中包含的項(xiàng)如常數(shù)項(xiàng)、趨勢(shì)項(xiàng)非常敏感。adfuller()函數(shù)有個(gè)參數(shù)叫regression通常有‘c’僅常數(shù)項(xiàng)、‘ct’常數(shù)項(xiàng)和趨勢(shì)項(xiàng)、‘ctt’常數(shù)、線性和二次趨勢(shì)項(xiàng)、‘nc’無(wú)常數(shù)無(wú)趨勢(shì)。選哪個(gè)我的經(jīng)驗(yàn)法則是先畫(huà)圖觀察。如果你的時(shí)序圖看起來(lái)圍繞一個(gè)非零的均值波動(dòng)用‘c’如果有一個(gè)明顯的上升或下降趨勢(shì)用‘ct’。如果不確定可以都試一下但最終解釋要結(jié)合圖形。我曾有一次分析GDP數(shù)據(jù)用‘c’檢驗(yàn)得出不平穩(wěn)但用‘ct’考慮了增長(zhǎng)趨勢(shì)后就變得平穩(wěn)了這直接影響了后續(xù)的建模策略。3.2 讓數(shù)據(jù)變平穩(wěn)的“三板斧”如果檢驗(yàn)發(fā)現(xiàn)數(shù)據(jù)不平穩(wěn)別慌我們有辦法把它“弄平穩(wěn)”。差分這是最常用、最有效的方法。原理很簡(jiǎn)單計(jì)算當(dāng)前時(shí)刻的值和前一時(shí)刻的差值df[‘sales_diff’] df[‘sales’].diff()。一階差分不行就二階差分對(duì)差分后的序列再差分。在數(shù)學(xué)建模中絕大多數(shù)經(jīng)濟(jì)、金融數(shù)據(jù)的趨勢(shì)通過(guò)一階或二階差分都能消除。差分后的序列其數(shù)值表示的是“變化量”更容易滿足平穩(wěn)性。對(duì)數(shù)變換如果數(shù)據(jù)有指數(shù)增長(zhǎng)趨勢(shì)比如某些用戶數(shù)、流量數(shù)據(jù)方差會(huì)隨著均值增大而增大這叫異方差。先取對(duì)數(shù)np.log(df[‘sales’])可以壓縮數(shù)據(jù)的尺度穩(wěn)定方差然后再對(duì)取對(duì)數(shù)后的數(shù)據(jù)做差分這就是“對(duì)數(shù)差分”在金融里常用來(lái)計(jì)算收益率。季節(jié)性差分如果數(shù)據(jù)有強(qiáng)烈的季節(jié)性比如月度數(shù)據(jù)有年周期那么可以做周期差分。df[‘sales_sdiff’] df[‘sales’] - df[‘sales’].shift(12)。這能消除以12為周期的季節(jié)性波動(dòng)。一個(gè)標(biāo)準(zhǔn)的操作流程是先做對(duì)數(shù)變換如果需要再做差分消除趨勢(shì)最后做季節(jié)性差分消除季節(jié)性。每做一步都重新畫(huà)圖并用ADF檢驗(yàn)直到通過(guò)為止。記住我們的目標(biāo)是得到一個(gè)在統(tǒng)計(jì)上平穩(wěn)的序列這是后續(xù)建模的堅(jiān)實(shí)基礎(chǔ)。4. 模型識(shí)別ACF與PACF圖是你的“藏寶圖”數(shù)據(jù)平穩(wěn)之后接下來(lái)就要選擇具體的模型了。對(duì)于經(jīng)典的ARIMA模型我們需要確定三個(gè)核心參數(shù)p自回歸階數(shù)d差分階數(shù)q移動(dòng)平均階數(shù)。其中d我們?cè)谄椒€(wěn)化階段已經(jīng)確定了做了幾次差分d就是幾。現(xiàn)在我們需要借助兩個(gè)強(qiáng)大的工具——自相關(guān)函數(shù)圖ACF和偏自相關(guān)函數(shù)圖PACF——來(lái)猜測(cè)p和q。4.1 ACF圖看“總影響力”ACF描述的是當(dāng)前時(shí)刻的序列值與過(guò)去任意時(shí)刻序列值之間的相關(guān)性。比如滯后階數(shù)k1的ACF就是今天和昨天的相關(guān)性k2是今天和前天的相關(guān)性以此類推。怎么看在ACF圖上我們看的是拖尾和截尾。如果ACF圖是拖尾逐漸衰減到0說(shuō)明存在長(zhǎng)期記憶。如果ACF圖在滯后q階后突然截?cái)嘀蟮闹刀荚谥眯艆^(qū)間內(nèi)這暗示著一個(gè)MA(q)模型。新手誤區(qū)ACF圖在滯后0處永遠(yuǎn)是1自己和自己完全相關(guān)所以從滯后1開(kāi)始看。另外因?yàn)槌闃硬▌?dòng)即使理論上是0估計(jì)出來(lái)的ACF值也可能在置信區(qū)間外輕微波動(dòng)這不一定代表顯著。4.2 PACF圖看“直接影響力”P(pán)ACF是在剔除了中間滯后項(xiàng)的影響后當(dāng)前值與過(guò)去某特定滯后值的“純”相關(guān)性。比如PACF(2)衡量的是今天和前天之間的相關(guān)性但已經(jīng)扣除了昨天滯后1帶來(lái)的間接影響。怎么看同樣看截尾和拖尾。如果PACF圖在滯后p階后突然截?cái)噙@暗示著一個(gè)AR(p)模型。4.3 實(shí)戰(zhàn)中的看圖口訣與陷阱有一個(gè)經(jīng)典的口訣AR模型看PACF截尾MA模型看ACF截尾。對(duì)于ARIMA(p,d,q)如果PACF截尾ACF拖尾 - 考慮AR模型p由PACF截尾處決定。如果ACF截尾PACF拖尾 - 考慮MA模型q由ACF截尾處決定。如果兩者都拖尾- 考慮ARMA或ARIMA模型p和q需要結(jié)合其他方法確定。如果兩者都截尾- 可能要考慮ARMA模型。但現(xiàn)實(shí)遠(yuǎn)比理論復(fù)雜。我遇到最多的情況是ACF和PACF都拖尾得很慢沒(méi)有明顯的截?cái)帱c(diǎn)。這時(shí)候口訣就失效了。怎么辦檢查平穩(wěn)性首先回頭確認(rèn)你的數(shù)據(jù)真的平穩(wěn)了嗎不平穩(wěn)的數(shù)據(jù)ACF/PACF衰減非常慢。考慮季節(jié)性如果你的數(shù)據(jù)有季節(jié)性ACF圖會(huì)在季節(jié)周期倍數(shù)處如122436…對(duì)于月度數(shù)據(jù)出現(xiàn)顯著的峰值。這時(shí)候你需要的是季節(jié)性ARIMA模型SARIMA它比普通ARIMA多了季節(jié)性部分的P, D, Q參數(shù)。使用信息準(zhǔn)則輔助當(dāng)看圖不確定時(shí)可以用“網(wǎng)格搜索”配合信息準(zhǔn)則如AIC BIC。AIC/BIC越小模型擬合越好且越簡(jiǎn)潔。你可以遍歷一個(gè)合理的p和q范圍比如0到3擬合所有組合的ARIMA模型選擇AIC最小的那個(gè)。pmdarima庫(kù)的auto_arima函數(shù)就是干這個(gè)的它能自動(dòng)化這個(gè)過(guò)程對(duì)新手非常友好。提示不要過(guò)度依賴自動(dòng)化工具。auto_arima是個(gè)好起點(diǎn)但它給出的不一定是最優(yōu)解尤其是當(dāng)數(shù)據(jù)有復(fù)雜季節(jié)性或多個(gè)突變點(diǎn)時(shí)。最終模型的選擇需要結(jié)合ACF/PACF圖、信息準(zhǔn)則以及你對(duì)業(yè)務(wù)的理解來(lái)綜合判斷。有時(shí)候一個(gè)更簡(jiǎn)潔的模型參數(shù)更少可能比AIC稍小的復(fù)雜模型在預(yù)測(cè)上更穩(wěn)健。5. 參數(shù)估計(jì)與模型診斷別急著慶祝考驗(yàn)剛開(kāi)始當(dāng)你通過(guò)看圖或網(wǎng)格搜索初步確定了(p,d,q)的組合并擬合出模型后千萬(wàn)別以為大功告成了。這就像醫(yī)生開(kāi)了藥還得看看病人吃了有沒(méi)有副作用。模型診斷就是檢查“副作用”的關(guān)鍵步驟目的是確認(rèn)我們擬合的模型是否充分提取了數(shù)據(jù)中的信息留下的殘差是不是白噪聲5.1 殘差分析核心中的核心擬合模型后我們會(huì)得到預(yù)測(cè)值以及實(shí)際值與預(yù)測(cè)值的差這就是殘差。一個(gè)“好”的模型其殘差序列應(yīng)該看起來(lái)像白噪聲——即均值為0、方差恒定、且各時(shí)刻互不相關(guān)的隨機(jī)序列。殘差時(shí)序圖首先畫(huà)殘差隨時(shí)間變化的圖。它應(yīng)該圍繞0隨機(jī)波動(dòng)沒(méi)有明顯的趨勢(shì)或周期性。如果還有趨勢(shì)或周期說(shuō)明模型沒(méi)把趨勢(shì)/季節(jié)性提取干凈。殘差A(yù)CF/PACF圖這是診斷的重中之重。計(jì)算殘差序列的ACF和PACF圖。在一個(gè)理想的擬合下殘差的ACF和PACF在所有滯后階數(shù)除了0上都應(yīng)該沒(méi)有顯著超出置信區(qū)間的值。如果還有顯著的尖峰比如在滯后1階或某個(gè)季節(jié)周期上顯著說(shuō)明還有信息沒(méi)被模型捕捉你需要增加相應(yīng)的p或q或季節(jié)性的P, Q參數(shù)。正態(tài)性檢驗(yàn)可以用Q-Q圖或夏皮羅-威爾克檢驗(yàn)。雖然ARIMA不嚴(yán)格要求殘差正態(tài)但正態(tài)的殘差會(huì)讓預(yù)測(cè)區(qū)間更準(zhǔn)確。嚴(yán)重偏離時(shí)可能需要對(duì)原始數(shù)據(jù)做變換。5.2 Ljung-Box檢驗(yàn)定量的判斷除了看圖我們還需要一個(gè)定量的統(tǒng)計(jì)檢驗(yàn)。Ljung-Box檢驗(yàn)的原假設(shè)是殘差序列在檢驗(yàn)的滯后階數(shù)內(nèi)是純隨機(jī)的即白噪聲。通常我們會(huì)檢驗(yàn)多個(gè)滯后階數(shù)比如10 20。如果p值很大0.05我們不能拒絕原假設(shè)認(rèn)為殘差是白噪聲模型通過(guò)診斷。如果p值很小0.05我們拒絕原假設(shè)認(rèn)為殘差還存在自相關(guān)模型擬合不充分。在statsmodels中你可以用acorr_ljungbox函數(shù)對(duì)殘差進(jìn)行檢驗(yàn)。我個(gè)人的習(xí)慣是結(jié)合看圖定性和LB檢驗(yàn)定量只有當(dāng)兩者都通過(guò)時(shí)才認(rèn)為模型是可以接受的。5.3 過(guò)擬合與信息準(zhǔn)則的再審視在診斷時(shí)也要防止過(guò)擬合。一個(gè)模型參數(shù)很多p和q很大可能能把歷史數(shù)據(jù)擬合得非常好殘差很小但預(yù)測(cè)未來(lái)卻一塌糊涂。這就是過(guò)擬合。除了看診斷圖我們還要回頭看看信息準(zhǔn)則AIC/BIC。BIC比AIC對(duì)參數(shù)數(shù)量懲罰更重所以BIC選出的模型通常更簡(jiǎn)潔。在AIC相差不大的情況下優(yōu)先選擇BIC更小的模型或者參數(shù)更少的模型往往能獲得更好的預(yù)測(cè)效果。我自己在建模比賽中就吃過(guò)虧一開(kāi)始用auto_arima選了一個(gè)ARIMA(3,1,3)模型AIC最小樣本內(nèi)擬合完美。但一用來(lái)預(yù)測(cè)未來(lái)幾期誤差大得離譜。后來(lái)我手動(dòng)分析ACF/PACF選擇了一個(gè)更簡(jiǎn)潔的ARIMA(1,1,1)模型雖然AIC稍高一點(diǎn)但樣本外預(yù)測(cè)穩(wěn)定性卻好得多。這個(gè)教訓(xùn)告訴我模型不是為了完美解釋過(guò)去而是為了可靠地預(yù)測(cè)未來(lái)。簡(jiǎn)潔和穩(wěn)健常常比復(fù)雜的完美擬合更重要。6. 預(yù)測(cè)與評(píng)估模型的終極考場(chǎng)模型通過(guò)診斷終于來(lái)到了最后一步預(yù)測(cè)。這是檢驗(yàn)?zāi)P蛢r(jià)值的唯一標(biāo)準(zhǔn)。但預(yù)測(cè)不是簡(jiǎn)單調(diào)用一個(gè)forecast()函數(shù)就完了里面有很多細(xì)節(jié)決定成敗。6.1 預(yù)測(cè)的兩種方式動(dòng)態(tài) vs 靜態(tài)你需要理解兩種預(yù)測(cè)方式靜態(tài)預(yù)測(cè)One-step-ahead Forecast在預(yù)測(cè)每一步時(shí)都使用真實(shí)的上一期觀測(cè)值。這通常用于模型評(píng)估因?yàn)樗艿玫嚼碚撋献顑?yōu)的一步預(yù)測(cè)誤差。動(dòng)態(tài)預(yù)測(cè)Dynamic Forecast在預(yù)測(cè)多步時(shí)使用模型自己預(yù)測(cè)出來(lái)的值作為下一步的輸入。比如預(yù)測(cè)未來(lái)5天第一天用真實(shí)數(shù)據(jù)預(yù)測(cè)第二天就用第一天的預(yù)測(cè)值來(lái)預(yù)測(cè)以此類推。這才是真正的“未來(lái)預(yù)測(cè)”場(chǎng)景。在評(píng)估模型時(shí)我們通常會(huì)將數(shù)據(jù)分為訓(xùn)練集和測(cè)試集。用訓(xùn)練集擬合模型然后用靜態(tài)預(yù)測(cè)的方式在測(cè)試集上進(jìn)行一步預(yù)測(cè)計(jì)算誤差。這樣可以模擬模型在“已知部分未來(lái)”時(shí)的表現(xiàn)。而當(dāng)我們最終要預(yù)測(cè)完全未知的未來(lái)時(shí)就必須使用動(dòng)態(tài)預(yù)測(cè)。6.2 預(yù)測(cè)結(jié)果的不確定性置信區(qū)間任何一個(gè)負(fù)責(zé)任的預(yù)測(cè)都必須附帶置信區(qū)間比如95%置信區(qū)間。它給出了預(yù)測(cè)值可能的波動(dòng)范圍反映了預(yù)測(cè)的不確定性。置信區(qū)間越寬說(shuō)明模型越不確定。在statsmodels中g(shù)et_forecast()方法會(huì)返回帶有置信區(qū)間的預(yù)測(cè)結(jié)果。一定要把這個(gè)區(qū)間畫(huà)出來(lái)它能告訴你你的點(diǎn)預(yù)測(cè)值那個(gè)具體的數(shù)其實(shí)只是一個(gè)“最可能”的估計(jì)真實(shí)值落在這個(gè)區(qū)間里的概率是95%。在向別人匯報(bào)預(yù)測(cè)結(jié)果時(shí)只給點(diǎn)預(yù)測(cè)而不給區(qū)間是不專業(yè)的表現(xiàn)。6.3 評(píng)估指標(biāo)哪個(gè)數(shù)字說(shuō)了算如何量化預(yù)測(cè)的好壞常用的指標(biāo)有均方誤差MSE和均方根誤差RMSE衡量預(yù)測(cè)值與真實(shí)值之間的平均偏差對(duì)大的誤差懲罰更重。RMSE和原始數(shù)據(jù)同量綱更易解釋。平均絕對(duì)誤差MAE衡量平均絕對(duì)偏差對(duì)異常值不如MSE敏感。平均絕對(duì)百分比誤差MAPE用百分比表示誤差便于比較不同量級(jí)序列的預(yù)測(cè)精度。但它有個(gè)缺點(diǎn)當(dāng)真實(shí)值接近0時(shí)MAPE會(huì)趨于無(wú)窮大此時(shí)不適用。沒(méi)有哪個(gè)指標(biāo)是完美的。我的建議是主要看RMSE和MAE輔助看MAPE如果數(shù)據(jù)沒(méi)有零值附近的值。更重要的是將這些指標(biāo)與一個(gè)簡(jiǎn)單基準(zhǔn)模型進(jìn)行比較。最常用的基準(zhǔn)是“樸素預(yù)測(cè)法”比如用上一期的值作為下一期的預(yù)測(cè)對(duì)于平穩(wěn)序列或者用上一季節(jié)同期的值對(duì)于有季節(jié)性的序列。如果你的復(fù)雜ARIMA模型預(yù)測(cè)精度還不如這個(gè)簡(jiǎn)單的基準(zhǔn)那這個(gè)復(fù)雜模型就沒(méi)有實(shí)用價(jià)值。這個(gè)過(guò)程叫做“Mincer-Zarnowitz回歸”的一種簡(jiǎn)單實(shí)踐確保你的模型至少要比最簡(jiǎn)單的直覺(jué)預(yù)測(cè)更強(qiáng)。走到這一步你已經(jīng)完成了一個(gè)完整的時(shí)間序列分析閉環(huán)從數(shù)據(jù)審視、平穩(wěn)化、模型識(shí)別、參數(shù)估計(jì)、模型診斷到最終預(yù)測(cè)評(píng)估。這個(gè)過(guò)程可能不會(huì)一次成功往往需要在這些步驟之間反復(fù)迭代。比如診斷失敗就回去重新識(shí)別模型預(yù)測(cè)效果不好可能需要考慮引入外部變量。但只要你掌握了這個(gè)框架你就有了應(yīng)對(duì)時(shí)間序列問(wèn)題的基本地圖剩下的就是在這張地圖上根據(jù)具體地形你的數(shù)據(jù)特點(diǎn)去探索和優(yōu)化了。時(shí)間序列建模是一門(mén)藝術(shù)更是一門(mén)手藝多練、多思考、多踩坑你就能從“小白”快速成長(zhǎng)起來(lái)。