聯(lián)與ARIMA的煤炭價格預(yù)測建模實戰(zhàn))
簡介這份PDF文檔是五一數(shù)學(xué)建模競賽A題的完整參賽論文主題為“煤炭價格預(yù)測問題研究”面向備戰(zhàn)數(shù)學(xué)建模競賽的高校學(xué)生及指導(dǎo)教師也適合希望系統(tǒng)學(xué)習(xí)灰色關(guān)聯(lián)分析、時間序列與逐步回歸等建模方法的讀者。資源包共1個PDF文件大小約1.82MB內(nèi)容涵蓋承諾書、問題重述、模型假設(shè)、符號說明、問題分析及模型建立求解等完整章節(jié)結(jié)構(gòu)規(guī)范可直接作為論文寫作與建模思路的參考范本。論文圍繞秦皇島港動力煤價格運用灰色關(guān)聯(lián)分析量化排序國家政策、市場供需、氣候變化等影響因素借助時間序列與隨機模擬預(yù)測未來31天、35周、36個月的價格走勢并通過逐步回歸處理多重共線性問題配合靈敏度分析檢驗?zāi)P头€(wěn)定性最終提出穩(wěn)定煤炭市場的政策建議。目前已有4996人學(xué)習(xí)下載適合需要掌握完整建模流程、學(xué)習(xí)論文排版與結(jié)果表達(dá)的中高級參賽者參考借鑒。1. 從一份競賽 PDF 說起煤炭價格預(yù)測到底在考什么五一數(shù)學(xué)建模競賽的 A 題題目叫“煤炭價格預(yù)測問題研究”核心就四件事找出影響煤炭價格的主要因素并排序、用時間序列預(yù)測未來 31 天/35 周/36 個月的價格、用逐步回歸建一個能解釋價格變化的多元線性方程、最后給政策建議。這份 PDF 不是教程是一份完整的參賽論文包含承諾書、問題重述、假設(shè)、符號說明、四個問題的建模求解過程、模型評價和 Matlab 代碼附錄。如果你正在準(zhǔn)備數(shù)學(xué)建模競賽或者需要一套“灰色關(guān)聯(lián) ARIMA 逐步回歸”的完整落地范例這份資料的價值在于它把從數(shù)據(jù)預(yù)處理到模型檢驗的每一步都寫出來了包括 SPSS 的輸出表格、Matlab 代碼、殘差白噪聲檢驗的判據(jù)。適合已經(jīng)學(xué)過概率統(tǒng)計和回歸分析、但不知道怎么把方法串成一篇完整論文的人。下面我按“數(shù)據(jù)怎么進(jìn)、模型怎么選、參數(shù)怎么定、結(jié)果怎么驗”的順序拆一遍。2. 灰色關(guān)聯(lián)分析9 個指標(biāo)怎么排出影響程度2.1 為什么選灰色關(guān)聯(lián)而不是皮爾遜相關(guān)問題一要求對影響煤炭價格的因素排序數(shù)據(jù)是 2019 年 5 月到 2020 年 3 月共 11 個月的月度數(shù)據(jù)樣本量極小。皮爾遜相關(guān)系數(shù)要求數(shù)據(jù)服從正態(tài)分布、樣本量足夠11 個點做相關(guān)性分析置信區(qū)間寬得沒法看?;疑P(guān)聯(lián)分析的優(yōu)勢就在這里它對數(shù)據(jù)量和分布沒有嚴(yán)格要求通過比較序列曲線幾何形狀的相似程度來判斷關(guān)聯(lián)度樣本少也能算出穩(wěn)定的排序。論文里選的 9 個指標(biāo)是煤炭進(jìn)口量、煤炭產(chǎn)量、煤炭出口量、全國鐵路煤炭發(fā)運量、居民消費者價格指數(shù)、全國煤炭企業(yè)庫存、GDP、煤炭加工成本指數(shù)、秦皇島平均最高氣溫。母序列是煤炭價格子序列是這 9 個指標(biāo)。2.2 Matlab 實現(xiàn)從數(shù)據(jù)標(biāo)準(zhǔn)化到關(guān)聯(lián)度排序論文附錄給出了完整的 Matlab 代碼我把它拆成可獨立運行的版本并補上關(guān)鍵注釋clear; clc; % price 為 11*10 數(shù)組第 1 列是煤炭價格母序列第 2-10 列是 9 個指標(biāo) load price.mat % 均值化處理每列除以該列均值消除量綱 Mean mean(price); price_norm price ./ repmat(Mean, size(price,1), 1); Y price_norm(:,1); % 母序列 X price_norm(:,2:end); % 子序列 % 計算絕對差矩陣 |X0(k) - Xi(k)| absX0Xi abs(X - repmat(Y, 1, size(X,2))); a min(min(absX0Xi)); % 兩級最小差 b max(max(absX0Xi)); % 兩級最大差 rho 0.5; % 分辨系數(shù)一般取 0.5 % 關(guān)聯(lián)系數(shù)矩陣 lambda (a rho*b) ./ (absX0Xi rho*b); % 每個指標(biāo)的灰色關(guān)聯(lián)度 關(guān)聯(lián)系數(shù)按行求均值 disp(各指標(biāo)灰色關(guān)聯(lián)度); disp(mean(lambda));邏輯說明均值化處理是灰色關(guān)聯(lián)分析的標(biāo)準(zhǔn)去量綱方式比極差標(biāo)準(zhǔn)化更溫和不會把最小值壓成 0。分辨系數(shù) rho 取 0.5 是論文里的選擇它的作用是調(diào)整關(guān)聯(lián)系數(shù)之間的差異顯著性——rho 越小差異越大rho 越大差異越小。一般取 0.5 是折中方案如果排序結(jié)果區(qū)分度不夠可以降到 0.3 試試。參數(shù)說明price.mat是 11 行 10 列的矩陣行對應(yīng)月份列對應(yīng)指標(biāo)。如果你換一組數(shù)據(jù)只要保證第一列是因變量、后面是自變量行列數(shù)對應(yīng)即可。repmat的作用是把均值向量復(fù)制成和原矩陣同尺寸避免用循環(huán)。2.3 結(jié)果解讀與排序邏輯論文跑出來的關(guān)聯(lián)度排序是居民消費者價格指數(shù) 0.9779 煤炭加工成本指數(shù) 0.9622 全國鐵路煤炭發(fā)運量 0.9511 煤炭產(chǎn)量 0.9353 GDP 0.9328 煤炭進(jìn)口量 0.8627 煤炭出口量 0.7559 秦皇島平均最高氣溫 0.6777 全國煤炭企業(yè)庫存 0.6559。最終歸納為四個主要因素經(jīng)濟水平、煤炭生產(chǎn)成本、煤炭產(chǎn)量、季節(jié)因素。這里有個容易翻車的地方關(guān)聯(lián)度排序不等于因果排序?;疑P(guān)聯(lián)只能說明兩個序列的變化趨勢同步不能證明誰導(dǎo)致誰。論文在結(jié)論里寫“影響程度從大到小”是競賽語境下的表述實際寫報告時最好加一句“關(guān)聯(lián)度反映的是變化趨勢的協(xié)同性因果方向需結(jié)合經(jīng)濟學(xué)邏輯判斷”。3. ARIMA 時間序列31 天、35 周、36 個月怎么分別建模3.1 三個時間尺度為什么用三個不同模型問題二要求預(yù)測未來 31 天、35 周、36 個月但原始數(shù)據(jù)是周度價格。論文的處理思路是周度數(shù)據(jù)用 ARIMA(1,1,18) 預(yù)測未來 35 周月度數(shù)據(jù)用 ARIMA(0,1,1)(0,0,0) 預(yù)測未來 36 個月日度數(shù)據(jù)因為一周內(nèi)價格波動很小用“周均值 隨機波動”的方式模擬波動邊界通過對每周最大值和最小值分別建 ARIMA(1,1,18) 來預(yù)測。這里的關(guān)鍵判斷是不同時間尺度的數(shù)據(jù)生成過程不一樣強行用一個模型套三個尺度殘差檢驗大概率過不了。周度數(shù)據(jù)有明顯的短期自相關(guān)月度數(shù)據(jù)經(jīng)過差分后趨于平穩(wěn)日度數(shù)據(jù)在周內(nèi)近似隨機。分開建模是務(wù)實的選擇。3.2 SPSS 專家建模器的參數(shù)設(shè)置與白噪聲檢驗論文用 SPSS 的時間序列建模器完成 ARIMA 建模。操作路徑是分析 → 時間序列預(yù)測 → 創(chuàng)建傳統(tǒng)模型 → 條件選擇“專家建模器”。專家建模器會自動在 ARIMA 和指數(shù)平滑之間選優(yōu)評價標(biāo)準(zhǔn)是標(biāo)準(zhǔn)化 BIC。以周度預(yù)測為例選出的模型是 ARIMA(1,1,18)平穩(wěn) R 方 0.295R 方 0.992正態(tài)化 BIC 5.160。R 方接近 1 說明擬合很好但平穩(wěn) R 方只有 0.295說明模型對趨勢的解釋力有限主要靠差分和滯后項在擬合。這不是問題時間序列預(yù)測本來就不追求解釋力追求的是殘差白噪聲。殘差檢驗看兩個東西ACF 和 PACF 圖是否所有滯后階數(shù)都落在置信區(qū)間內(nèi)楊-博克斯 Q 統(tǒng)計量的 p 值是否大于 0.05。論文里月度模型的 Q(18) 20.568p 0.246大于 0.05不能拒絕“殘差是白噪聲”的原假設(shè)模型可接受。注意p 值大于 0.05 只是“不能拒絕原假設(shè)”不等于“證明殘差是白噪聲”。樣本量小的時候Q 檢驗的功效很低最好結(jié)合 ACF/PACF 圖一起看。3.3 日度價格的隨機模擬從周最大值最小值到每天價格論文的日度預(yù)測思路值得單獨說。它先對每周的最大值和最小值分別建 ARIMA(1,1,18)預(yù)測未來 35 周的最大值 a_i 和最小值 b_i然后取周均值 c_i (a_i b_i)/2。第 i 周第 j 天的價格用公式 d_ij (a_i - c_i) * rand c_i 生成rand 是 [-1,1] 的隨機數(shù)。Matlab 實現(xiàn)如下% a 和 b 分別是預(yù)測的未來 5 周最大值和最小值 a [470.3, 468.1, 466.7, 466.2, 466.2]; b [5.6, 6.3, 7.4, 8.7, 10.4]; c []; for i 1:5 for j 1:7 % 在周均值附近生成隨機波動 c [c, a(i) b(i) * (2*rand(1) - 1)]; end end邏輯說明2*rand(1)-1把隨機數(shù)映射到 [-1,1]再乘以 b(i) 作為波動幅度。這里 b(i) 在論文里實際是“最大值與均值的差”不是最小值變量命名有點繞看代碼時注意區(qū)分。這個方法的本質(zhì)是用均勻分布模擬日度波動優(yōu)點是簡單、可復(fù)現(xiàn)缺點是波動邊界是硬截斷真實價格可能在邊界外。參數(shù)說明如果你要改預(yù)測周數(shù)改循環(huán)上限即可如果要改波動分布把rand換成randn就是正態(tài)波動但要注意正態(tài)分布沒有天然邊界需要額外截斷。4. 逐步回歸多重共線性下怎么篩出有效變量4.1 為什么直接用 9 個指標(biāo)做回歸會翻車問題三要求建一個多元線性回歸方程來描述煤炭價格變化。如果直接把問題一的 9 個指標(biāo)全部塞進(jìn)回歸大概率會遇到多重共線性GDP 和居民消費者價格指數(shù)高度相關(guān)煤炭產(chǎn)量和鐵路發(fā)運量高度相關(guān)煤炭進(jìn)口量和出口量也可能相關(guān)。多重共線性會導(dǎo)致回歸系數(shù)估計不穩(wěn)定符號可能反直覺t 檢驗失效。論文選擇向后逐步回歸用 SPSS 完成。向后逐步回歸的邏輯是先把所有變量放進(jìn)去然后逐步剔除對模型貢獻(xiàn)不顯著p 值大于 0.05 或 0.1的變量直到所有剩余變量都顯著。4.2 SPSS 逐步回歸的操作與輸出解讀操作路徑分析 → 回歸 → 線性 → 方法選“向后”。因變量選煤炭價格自變量選 9 個指標(biāo)。SPSS 會輸出多個模型每個模型剔除一個變量看最后一個模型的系數(shù)和顯著性。論文最終保留的變量是煤炭生產(chǎn)成本指數(shù)x8和秦皇島日均最高氣溫x9回歸方程是價格 422.072 1.548 * x8 0.696 * x9模型 2 的 R 0.948R 方 0.899調(diào)整后 R 方 0.874F 統(tǒng)計量對應(yīng) p 值小于 0.05。每個回歸系數(shù)的 t 檢驗 p 值也都小于 0.05。系數(shù)解讀煤炭生產(chǎn)成本指數(shù)每上升 1 個單位煤炭價格上升 1.548 元/噸秦皇島日均最高氣溫每上升 1℃煤炭價格上升 0.696 元/噸。第二個結(jié)論有點反直覺——通常認(rèn)為冬季取暖用煤多、價格高但模型顯示夏季價格更高。論文的解釋是夏季用電高峰帶動電煤需求加上水電出力受季節(jié)影響火電補位推高煤價。這個解釋在競賽語境下能自圓其說但實際市場中季節(jié)性規(guī)律受庫存、進(jìn)口、政策等多因素調(diào)節(jié)不能單看氣溫。4.3 回歸模型的靈敏度分析與邊界論文對回歸方程做了靈敏度分析核心結(jié)論是煤炭價格對生產(chǎn)成本最敏感對氣溫的敏感度次之。這里有個邊界要注意逐步回歸剔除變量時被剔除的變量不是“沒有影響”而是“在當(dāng)前樣本下加入它不能顯著提升模型擬合優(yōu)度”。樣本量只有 11 個月剔除變量很可能是樣本不足導(dǎo)致的不代表這些因素在更長的時間尺度上不重要。論文自己在“模型不足與改進(jìn)”里也承認(rèn)了這一點向前逐步回歸過度追求模型精確性反而帶來對影響因素解釋的片面性只用了近一年數(shù)據(jù)模型缺乏長期預(yù)測能力。這個自我批評是誠實的也是這份資料值得看的地方——它沒有把模型吹成萬能。5. 避坑與排查這份資料里沒寫但你會遇到的問題5.1 灰色關(guān)聯(lián)度排序和回歸系數(shù)符號不一致現(xiàn)象灰色關(guān)聯(lián)分析里 GDP 排第 5但逐步回歸把 GDP 剔除了煤炭產(chǎn)量關(guān)聯(lián)度排第 4也被剔除了。原因灰色關(guān)聯(lián)分析衡量的是序列曲線的形狀相似性不控制變量之間的相互影響逐步回歸是在控制其他變量的條件下看單個變量的邊際貢獻(xiàn)。兩個方法的評價維度不同排序不一致是正常的。解決在論文里分別說明兩個方法的用途——灰色關(guān)聯(lián)用于初步篩選和排序逐步回歸用于在共線性約束下找精簡模型。不要強行讓兩個排序一致。5.2 ARIMA 模型殘差檢驗 p 值剛好卡在 0.05 附近現(xiàn)象Q 統(tǒng)計量的 p 值在 0.04 到 0.06 之間拒絕和不拒絕原假設(shè)的邊界上。原因樣本量小的時候Q 檢驗的統(tǒng)計量本身波動大p 值不穩(wěn)定。滯后階數(shù)的選擇也會影響結(jié)果滯后太少可能漏掉自相關(guān)滯后太多會損失自由度。解決不要只看 p 值。同時看 ACF 和 PACF 圖如果所有滯后階數(shù)都在置信區(qū)間內(nèi)即使 p 值略小于 0.05也可以認(rèn)為殘差近似白噪聲。如果圖上有明顯的超出置信區(qū)間的滯后項即使 p 值大于 0.05也要考慮改進(jìn)模型。5.3 日度隨機模擬的結(jié)果每次運行都不一樣現(xiàn)象Matlab 代碼里的rand沒有設(shè)種子每次運行生成的 31 天價格都不同。原因rand默認(rèn)以系統(tǒng)時間初始化隨機數(shù)生成器每次調(diào)用序列不同。解決在代碼開頭加rng(42)固定隨機種子保證結(jié)果可復(fù)現(xiàn)。如果論文要求給出確定的預(yù)測值可以跑多次取均值或者直接用周均值作為日度預(yù)測值在論文里說明“日度波動在周均值附近隨機分布”。5.4 月度預(yù)測和周度預(yù)測的數(shù)據(jù)對不上現(xiàn)象論文里未來 12 個月的預(yù)測價格和未來 35 周的預(yù)測價格在時間重疊區(qū)間不一致。原因兩個模型是獨立建的ARIMA(1,1,18) 和 ARIMA(0,1,1)(0,0,0) 的參數(shù)不同預(yù)測路徑自然不同。解決論文在“模型缺點”里承認(rèn)了這個問題。實際處理時可以以月度模型為準(zhǔn)做長期預(yù)測以周度模型為準(zhǔn)做短期預(yù)測在重疊區(qū)間取加權(quán)平均或者統(tǒng)一用一個模型的不同時間聚合方式。競賽里如果時間緊直接在論文里說明不一致的原因即可評委通常能接受。5.5 數(shù)據(jù)插值方法選擇影響結(jié)論現(xiàn)象論文對缺失數(shù)據(jù)用了臨近線性插值和算術(shù)平均不同插值方法可能改變灰色關(guān)聯(lián)度的排序。原因插值方法會改變序列的均值和方差進(jìn)而影響標(biāo)準(zhǔn)化后的關(guān)聯(lián)系數(shù)。解決在論文里明確寫出插值方法并做敏感性分析——換一種插值方法比如樣條插值看排序是否穩(wěn)定。如果排序變化大說明結(jié)論對數(shù)據(jù)預(yù)處理敏感需要謹(jǐn)慎表述。6. 從這份 PDF 里能復(fù)用的三個進(jìn)階技巧6.1 用 BIC 而不是 R 方來選 ARIMA 階數(shù)R 方衡量的是擬合優(yōu)度但時間序列模型如果階數(shù)太高R 方會一直上升導(dǎo)致過擬合。BIC 同時考慮殘差大小和參數(shù)個數(shù)參數(shù)越多懲罰越大。論文里周度模型的 BIC 是 5.160月度模型是 6.985都比較小說明模型復(fù)雜度可控。實際操作中在 SPSS 專家建模器里把“離群值處理”關(guān)掉讓 BIC 自己選通常比手動試階數(shù)更穩(wěn)。6.2 把灰色關(guān)聯(lián)度作為回歸的預(yù)篩選如果自變量很多比如超過 15 個直接做逐步回歸計算量大且容易過擬合??梢韵扔没疑P(guān)聯(lián)分析篩掉關(guān)聯(lián)度低于某個閾值的變量再做逐步回歸。論文里 9 個指標(biāo)不算多所以直接做了逐步回歸。如果指標(biāo)擴展到 20 個以上建議先篩后回歸。6.3 殘差白噪聲檢驗的完整流程論文里的檢驗流程是先看 ACF/PACF 圖再算 Q 統(tǒng)計量。我一般會再加一步把殘差畫成時序圖看有沒有明顯的聚集或周期。如果殘差圖上有連續(xù)多個點在同側(cè)說明模型沒有捕捉到某個周期性因素。這一步不需要額外軟件SPSS 的殘差序列圖就能看。6.4 政策建議怎么寫才不空論文的政策建議部分給了三條加強宏觀調(diào)控、建立煤炭成本價格指數(shù)、發(fā)展新能源。這三條都是從模型結(jié)論推出來的——因為回歸顯示生產(chǎn)成本和氣溫顯著所以建議監(jiān)控成本、應(yīng)對季節(jié)性波動因為模型有局限性所以建議發(fā)展新能源降低長期依賴。寫政策建議時每一條都要對應(yīng)到模型里的一個具體發(fā)現(xiàn)不要寫“加強監(jiān)管”“促進(jìn)發(fā)展”這種放之四海而皆準(zhǔn)的話。6.5 論文結(jié)構(gòu)的可復(fù)用模板這份 PDF 的結(jié)構(gòu)是承諾書 → 問題重述 → 假設(shè) → 符號說明 → 問題分析 → 四個問題的建模求解 → 模型評價 → 參考文獻(xiàn) → 附錄代碼。數(shù)學(xué)建模競賽論文基本都可以套這個結(jié)構(gòu)。區(qū)別在于中間四個問題的建模方法不同。如果你拿到的是預(yù)測類題目把灰色關(guān)聯(lián)換成相關(guān)性分析、把 ARIMA 換成 LSTM 或灰色預(yù)測結(jié)構(gòu)不用大改。提示附錄代碼不要直接復(fù)制論文里的論文里的代碼是片段缺少數(shù)據(jù)加載和結(jié)果輸出。我一般會補上save命令把中間結(jié)果存成 mat 文件方便復(fù)現(xiàn)和調(diào)試。從那以后我每次做時間序列建模都會先把數(shù)據(jù)按不同時間尺度拆開分別做平穩(wěn)性檢驗和白噪聲檢驗再決定用幾個模型。這份 PDF 最大的價值不是它的結(jié)論而是它把“數(shù)據(jù)少、指標(biāo)多、時間尺度混雜”這種典型競賽場景下的完整處理流程攤開了給你看。希望幫到你。本文還有配套的精品資源點擊獲取