原文鏈接:http://tecdat.cn/?p=9024
用GAM進行建模時間序列
我已經准備了一個文件,其中包含四個用電時間序列以進行分析。數據操作將由data.table
程序包完成
將提及的智能電表數據讀到data.table
。
使用GAM回歸模型。將工作日的字符轉換為整數,並使用recode
包中的函數car
重新編碼工作日,以適應一周中出現的情況:1.星期一,…,7星期日。
將信息存儲在日期變量中,以簡化工作。
讓我們看一下用電量的一些數據並對其進行分析。
在繪制的時間序列中可以看到兩個主要的季節性:每日和每周。我們在一天中有48個測量值,在一周中有7天,因此這將是我們用來對響應變量進行建模的自變量–電力負荷。
訓練我們的第一個GAM。通過平滑函數s
對自變量建模,對於每日季節性,使用三次回歸樣條,對於每周季節性,使用P樣條。
首先是其可視化功能。
我們在這里可以看到變量對電力負荷的影響。在左圖中,白天的負載峰值約為下午3點。在右邊的圖中,我們可以看到在周末消費量減少了。
讓我們使用summary
函數對第一個模型進行診斷。
EDF:估計的自由度–可以像對給定變量進行平滑處理那樣來解釋(較高的EDF值表示更復雜的樣條曲線)。P值:給定變量對響應變量的統計顯着性,通過F檢驗進行檢驗(越低越好)。\(R ^ 2 \)–調整后的R平方(越高越好)。我們可以看到R-sq。(adj)值有點低...
讓我們繪制擬合值:
我們需要將兩個自變量的相互作用包括到模型中。
第一種交互類型對兩個變量都使用了一個平滑函數。
R平方值表明結果要好得多。
似乎也很好,p值為0,這意味着自變量很重要。擬合值圖:
現在,讓我們嘗試上述張量積交互。這可以通過function完成te
,也可以定義基本函數。
與以前的模型相似gam_2
。
非常相似的結果。讓我們看一下擬合值:
與gam_2
模型相比,只有一點點差異,看起來te
更合身。
我們可以在這里看到R方略有上升。
讓我們繪制擬合值:
這似乎比gam_3
模型好得多。
我們可以看到R平方比模型gam_4
低,這是因為我們過度擬合了模型。證明GCV程序(lambda和EDF的估計)工作正常。
因此,讓我們在案例(模型)中嘗試ti
方法。
然后使用t2
。
我還打印了最后三個模型的GCV得分值,這也是在一組擬合模型中選擇最佳模型的良好標准。我們可以看到,對於t2
相應模型gam_6
,GCV值最低。
在統計中廣泛使用的其他模型選擇標准是AIC(Akaike信息准則)。讓我們看看三個模型:
最低值在gam_6
模型中。讓我們再次查看擬合值。
我們可以看到的模型的擬合值gam_4
和gam_6
非常相似。可以使用軟件包的更多可視化和模型診斷功能來比較這兩個模型。
第一個是function gam.check
,它繪制了四個圖:殘差的QQ圖,線性預測變量與殘差,殘差的直方圖以及擬合值與響應的關系圖。讓我們為它們制作模型gam_4
和gam_6
。
我們可以再次看到模型非常相似,只是在直方圖中可以看到一些差異。
該模型gam_6
有更多的“波浪形”的輪廓。因此,這意味着它對響應變量的適應性更高,而平滑因子更低。
我們可以看到最高峰值是Daily變量的值接近30(下午3點),而Weekly變量的值是1(星期一)。
再次可以看到,電力負荷的最高值是星期一的下午3:00,直到星期四都非常相似,然后負荷在減少(周末)。