根據我們對溫度的預測,我們可以預測電力消耗。繪製電力消耗序列圖:
我們可以嘗試一個非常簡單的模型,其中日期Y_t的消耗量是時間,溫度(以多項式形式表示)以及工業生產指數IPI_t的函數。
lm(Load~1+Time+as.factor(Week)+poly(Temp,3)+Temp+IPI,data=elect )溫度影響的多項式函數來自下圖(去除線性趨勢後的消耗序列)
我們還可以假設自回歸形式,其中Y_ {t} 是Y_ {t-1} 的函數
lm(Load~1+Load1+Time+as.factor(Week)+poly(Temp,3)+Temp1+IPI,data=elect然後,我們可以嘗試進行預測。第二個模型的問題是自回歸部分。要預測Y_ {t + h} ,我們必須使用在t + h-1,Y ^ t + h − 1中所作的預測。
IPI = elect[futur,"IPI"])for(t in 1:110){base_prevision[t+1,"Load1"] = p}然後,我們可以預測 Y ^ t與觀察值 Yt進行比較。
我們在夏季估計良好(我們預測了8月上半月的高峰),但我們低估了冬季的消耗量。
最後,我們可以忽略解釋變量,而直接嘗試建立時間序列模型。
plot(elect[passe,"Load"],type="l")
令人擔憂的是該序列的異方差,其最小斜率低於最大斜率。
n=length(passe)="l")m=aggregate(electby=list(as.fpoints(sort((1xM=((1:n)[vM])regm=lm(m$x~xm,col="blue")regM=lm(M$x~xM,col="blue")abline(regm,lty=2)abline(regM,lty=2)
經典(簡單)的解決方案是取對數
plot(electplot(z,type="l")B = data.frame(z=z,t=1:length
然後,我們必須消除線性趨勢,以平穩序列
z = residuals(lm(z~t,data=B))
arima(Z,order = c(4,0,0),seasonal = list(order = c(1第一個模型是穩定的,沒有單位根。我們可以嘗試引入季節性單位根
arima(Z,order = c(0,0,0),seasonal = list(order = c(0,1,最後,最後一個要簡單一些
arima(Z,order = c(1,0,0),seasonal = list(order = c(2,0,0)))然後,我們將所有預測存儲在資料庫中
然後將線性趨勢添加到殘差的預測中
在這裡,我們在 logY上建立了線性模型,即 logY〜N(μ,σ2),因此 E [Y] = exp(μ+σ2/ 2)
sqrt(predict(modelz1,n.ahead = 111)$se^2+sigma^2),
我們在這裡假設兩個模型(線性趨勢和自回歸模型的線性)的預測估計量是獨立的,因此我們可以對方差項求和。另外,Y的預測是
exp(DOz$z1+1/2*DONNseu$seu1^2),我們比較三個模型的預測(與觀察值)
我們與之前的預測進行比較,
lines(futur,base_previcol="orange")
夏季預測會有所偏差,而冬季預測我們有所改善。
更多內容,請點擊左下角「閱讀原文」查看報告全文
關注我們
案例精選、技術乾貨 第一時間與您分享
長按二維碼加關注
更多內容,請點擊左下角「閱讀原文」查看報告全文