机器学习笔记(时间序列):不同类型的图示
1 時(shí)間圖 time-plot
????????就是最普通的繪制一張隨時(shí)間變化的連點(diǎn)圖。不過在這一張圖中,可能會(huì)有時(shí)間序列的不同屬性:趨勢(shì)、季節(jié)性、周期性
1.0 R語言補(bǔ)充:設(shè)置時(shí)間序列
y <- ts(c(123,39,78,52,110), start=2012)?
?如果我們不是一年一個(gè)數(shù)據(jù),那么我們可以設(shè)置freq,表示一年的頻率
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)識(shí)別出來的是2020到2023,也就是3年
library(forecast) library(ggplot2)forecast::autoplot(y)+ggtitle('3-year data')+xlab('year')+ylab('hundred')?1.0.1 截取時(shí)間序列
1.0.1.1 使用window 函數(shù)
yJan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2020 5.0 3.0 3.1 3.2 3.3 3.4 3.5 3.3 3.2 4.0 4.1 4.2 2021 6.0 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 2022 10.0 9.0 8.0 8.5 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.5window(y,start=2021)Jan Feb Mar Apr May Jun Jul Aug 2021 6.0 4.0 4.1 4.2 4.3 4.4 4.5 4.6 2022 10.0 9.0 8.0 8.5 8.4 8.5 8.6 8.7Sep Oct Nov Dec 2021 4.7 4.8 4.9 5.0 2022 8.8 8.9 9.0 9.5想要截?cái)嗟侥硞€(gè)月份的話,也可以:
y_pre=window(y,start=2020,end=c(2021,12)) > y_preJan Feb Mar Apr May Jun Jul Aug Sep Oct 2020 5.0 3.0 3.1 3.2 3.3 3.4 3.5 3.3 3.2 4.0 2021 6.0 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8Nov Dec 2020 4.1 4.2 2021 4.9 5.01.0.1.2 使用subset函數(shù)
可以按照下標(biāo)截取(R語言是從1開始計(jì)數(shù)的)?
subset(y,start=2)Jan Feb Mar Apr May Jun Jul Aug 2020 3.0 3.1 3.2 3.3 3.4 3.5 3.3 2021 6.0 4.0 4.1 4.2 4.3 4.4 4.5 4.6 2022 10.0 9.0 8.0 8.5 8.4 8.5 8.6 8.7Sep Oct Nov Dec 2020 3.2 4.0 4.1 4.2 2021 4.7 4.8 4.9 5.0 2022 8.8 8.9 9.0 9.5?我們這里是按照月份劃分年的數(shù)據(jù),所以我們可以按照月份截取(如果按照季度,可以是quarter)
subset(y,month=1) Time Series: Start = 2020 End = 2022 Frequency = 1 [1] 5 6 10?1.0.1.3 head & tail
截取最前和最后的幾個(gè)
head(y,2)Jan Feb 2020 5 3head(y)Jan Feb Mar Apr May Jun 2020 5.0 3.0 3.1 3.2 3.3 3.4tail(y,2)Nov Dec 2022 9.0 9.5tail(y)Jul Aug Sep Oct Nov Dec 2022 8.6 8.7 8.8 8.9 9.0 9.51.1 趨勢(shì) trend
當(dāng)數(shù)據(jù)長(zhǎng)期增加或減少時(shí),就會(huì)出現(xiàn)趨勢(shì)。 它不必是線性的。
有時(shí)我們將趨勢(shì)稱為“改變方向”,即它可能從上升趨勢(shì)變?yōu)橄陆第厔?shì)。
1.2 季節(jié)性 seasonality
????????當(dāng)時(shí)間序列受到季節(jié)因素(例如一年中的某個(gè)時(shí)間或一周中的某一天)的影響時(shí),就會(huì)出現(xiàn)季節(jié)性模式。
????????季節(jié)性總是具有固定且已知的頻率。
1.3 周期性(循環(huán)) Cyclic
????????當(dāng)數(shù)據(jù)表現(xiàn)出非固定頻率的上升和下降時(shí),就會(huì)出現(xiàn)一個(gè)循環(huán)。
許多人將周期性行為與季節(jié)性行為混為一談(我之前有些博客可能也有這個(gè)問題,我會(huì)陸續(xù)更改),但它們確實(shí)完全不同: 如果波動(dòng)不是固定頻率的,那么它們是循環(huán)的; 如果頻率不變并且與日歷的某些方面相關(guān)聯(lián),則該模式是季節(jié)性的。
???????? 一般來說,周期的平均長(zhǎng)度比季節(jié)性模式的長(zhǎng)度要長(zhǎng),而且周期的幅度往往比季節(jié)性模式的幅度更易變化。
1.4 舉例說明
- ?每月房屋銷售(左上圖)顯示出每年內(nèi)的強(qiáng)烈季節(jié)性,以及一些大約 6-10 年的強(qiáng)烈周期性行為。 這一數(shù)據(jù)沒有明顯的趨勢(shì)。
- 美國(guó)國(guó)庫(kù)券合約(右上)顯示了 1981 年芝加哥市場(chǎng)連續(xù) 100 個(gè)交易日的結(jié)果。這里沒有季節(jié)性,但有明顯的下降趨勢(shì)。 可能,如果我們有一個(gè)更長(zhǎng)的序列,我們會(huì)看到這種下降趨勢(shì)實(shí)際上是一個(gè)長(zhǎng)周期的一部分,但僅從 100 天來看,它似乎只是一種趨勢(shì)。
- 澳大利亞季度發(fā)電量(左下)呈現(xiàn)強(qiáng)勁增長(zhǎng)趨勢(shì),具有很強(qiáng)的季節(jié)性。 這里沒有任何循環(huán)行為的證據(jù)。
- 谷歌收盤價(jià)(右下)的每日變化沒有趨勢(shì)、季節(jié)性或周期性行為。 隨機(jī)波動(dòng)似乎不太可預(yù)測(cè),也沒有強(qiáng)大的模式可以幫助開發(fā)預(yù)測(cè)模型。
2 周期性圖 seasonal plot
????????季節(jié)性圖類似于時(shí)間圖time plot,只是數(shù)據(jù)是針對(duì)觀察數(shù)據(jù)的各個(gè)“季節(jié)”繪制的。
?現(xiàn)在每個(gè)季節(jié)的數(shù)據(jù)都重疊了。 季節(jié)性圖可以更清楚地看到潛在的季節(jié)性模式,并且在識(shí)別模式發(fā)生變化的年份時(shí)特別有用。
????????通過上述周期性圖,很明顯,每年 1 月份的銷售額都會(huì)出現(xiàn)大幅增長(zhǎng)。 實(shí)際上,這些可能是 12 月下旬的銷售,因?yàn)榭蛻裟甑浊百?gòu)物,但銷售直到一兩周后才向政府登記。
????????該圖還顯示,2008 年 3 月的銷售額異常少(大多數(shù)其他年份顯示在 2 月和 3 月之間有所增加)。 2008 年 6 月的少量銷售額可能是由于在收集數(shù)據(jù)時(shí)對(duì)銷售額的統(tǒng)計(jì)不完整(比如統(tǒng)計(jì)的時(shí)候還在六月份)。
????????季節(jié)性圖的一個(gè)有用變化是使用極坐標(biāo)。 設(shè)置 polar=TRUE 使時(shí)間序列軸呈圓形而不是水平,如下所示。 ?
2.1 R語言補(bǔ)充
用和1.0一樣的數(shù)據(jù)的library
forecast::ggseasonplot(y,year.labels = TRUE,year.labels.left = TRUE)+ylab('hundred')+ggtitle('seasonal plot')?極坐標(biāo):
forecast::ggseasonplot(y,polar=TRUE)+ylab('hundred')+ggtitle('seasonal plot')?3 周期性子圖
另一種強(qiáng)調(diào)季節(jié)性模式的圖是在單獨(dú)的時(shí)間子圖中將每個(gè)季節(jié)的數(shù)據(jù)收集在一起。
?????????藍(lán)色水平線表示每個(gè)月的平均值。 這種形式的繪圖可以清楚地看到潛在的季節(jié)性模式,還可以顯示季節(jié)性隨時(shí)間的變化。 它對(duì)于識(shí)別特定季節(jié)內(nèi)的變化特別有用。
???????? 在這個(gè)例子中,情節(jié)并不是特別有啟發(fā)性。 但在某些情況下,這是查看隨時(shí)間變化的季節(jié)性變化的最有用的方法。
3.1R語言補(bǔ)充
個(gè)人嘗試中,加了forcast::反而報(bào)錯(cuò)
ggsubseriesplot(y)+ylab('hundred')+ggtitle('seasonal subseries plot')?4 散點(diǎn)圖 scatter plot
到目前為止討論的圖表對(duì)于可視化單個(gè)時(shí)間序列很有用。 探索時(shí)間序列之間的關(guān)系也很有用。
圖 2.7 顯示了 2014 年澳大利亞維多利亞州的兩個(gè)時(shí)間序列:半小時(shí)電力需求(千兆瓦)和溫度(攝氏度)。 溫度是針對(duì)維多利亞州最大城市墨爾本的,而需求值是針對(duì)整個(gè)州的。
我們可以通過繪制一個(gè)系列與另一個(gè)系列來研究需求和溫度之間的關(guān)系。
?4.1 R語言補(bǔ)充
假設(shè)我們有另一個(gè)時(shí)間序列x
x<-ts(c(5,6,7.1,2.2,5.3,1.4,2.5,6.3,3.2,4,5.1,4.2,6,4,4.1,3.2,2.3,8.4,0.5,4.6,4.7,3.8,4.9,5,12,7,8,6.5,8.4,5.5,9.6,7.7,9.8,10.9,9,6.5),start = 2020,frequency = 12)qplot(x,y)?5 相關(guān)性
????????計(jì)算相關(guān)系數(shù)來衡量?jī)蓚€(gè)變量之間關(guān)系的強(qiáng)度是很常見的。
???????? 變量 x 和 y 之間的相關(guān)性由下式給出
?????????r 的值始終介于 - 1 和 1 之間,負(fù)值表示負(fù)關(guān)系,正值表示正關(guān)系。
????????圖 2.9 中的圖表顯示了具有不同相關(guān)程度的數(shù)據(jù)集示例。
????????
?????????相關(guān)系數(shù)僅衡量線性關(guān)系的強(qiáng)度,有時(shí)可能會(huì)產(chǎn)生誤導(dǎo)。 例如,圖 2.8 所示的電力需求與溫度數(shù)據(jù)的相關(guān)性為 0.28,但非線性關(guān)系比這要強(qiáng)。
????????圖 2.10 中的圖都具有 0.82 的相關(guān)系數(shù),但它們的關(guān)系非常不同。 這表明查看數(shù)據(jù)圖而不是簡(jiǎn)單地依賴相關(guān)值是多么重要。
????????
5.1 相關(guān)性矩陣 scatter plot
比如我們現(xiàn)在有5個(gè)獨(dú)立的時(shí)間序列?
?要查看這五個(gè)時(shí)間序列之間的關(guān)系,我們可以將每個(gè)時(shí)間序列與其他時(shí)間序列進(jìn)行對(duì)比。 這些圖可以排列在散點(diǎn)圖矩陣中
?????????對(duì)于每個(gè)面板,縱軸上的變量由該行中的變量名給出,橫軸上的變量由該列中的變量名給出。
???????? 有許多選項(xiàng)可用于在每個(gè)面板中生成不同的圖。 在默認(rèn)版本中,相關(guān)性顯示在圖的右上半部分,而散點(diǎn)圖顯示在下半部分。 在對(duì)角線上顯示密度圖。
????????散點(diǎn)圖矩陣的價(jià)值在于它可以快速查看所有變量對(duì)之間的關(guān)系。 在此示例中,第二列圖顯示新南威爾士州北海岸的游客與新南威爾士州南海岸的游客之間存在很強(qiáng)的正相關(guān)關(guān)系,但新南威爾士州北海岸的游客與新南威爾士州南部?jī)?nèi)陸的游客之間沒有可檢測(cè)到的關(guān)系。
????????也可以看到異常值。 新南威爾士州大都會(huì)地區(qū)有一個(gè)異常高的季度,對(duì)應(yīng)于 2000 年悉尼奧運(yùn)會(huì)。 這在圖 2.12 左列的前兩個(gè)圖中最容易看出,其中 NSW Metro 的最大值與主要的觀測(cè)云是分開的。
5.2.1 R語言補(bǔ)充
GGally::ggpairs(data.frame(as.numeric(x), as.numeric(y)))?6 lag plot? 滯后圖
????????圖 2.13 顯示了澳大利亞啤酒季度產(chǎn)量的散點(diǎn)圖,其中橫軸顯示了時(shí)間序列的滯后值。 每個(gè)圖表顯示了針對(duì)不同 k 值繪制的 yt 與 yt?k 的關(guān)系圖。
????????
????????這里的顏色表示變量代表不同的季度。 點(diǎn)按時(shí)間順序連接成線。
???????? 這種關(guān)系在滯后 4 和 8 處是非常正向的,反映了數(shù)據(jù)的強(qiáng)烈季節(jié)性。(t和t-4;t和t-8之間的強(qiáng)正向關(guān)系) 出現(xiàn)滯后 2 和 6 的負(fù)相關(guān)是因?yàn)榉逯?#xff08;第四季度)與波谷(第二季度)相對(duì)應(yīng)
?6.1 補(bǔ)充 R語言實(shí)現(xiàn)
gglagplot((x))?7 自相關(guān) autocorrelation
????????正如相關(guān)性衡量?jī)蓚€(gè)變量之間線性關(guān)系的程度一樣,自相關(guān)衡量時(shí)間序列滯后值之間的線性關(guān)系。
????????有幾個(gè)自相關(guān)系數(shù),對(duì)應(yīng)于滯后圖中的每個(gè)面板。 例如,r1 測(cè)量 yt 和 yt-1 之間的關(guān)系,r2 測(cè)量 yt 和 yt-2 之間的關(guān)系,依此類推。
? ? ? ? rk可以寫成
? ? ? ? 其中T 是時(shí)間序列的長(zhǎng)度
?????????下表給出了啤酒生產(chǎn)數(shù)據(jù)的前九個(gè)自相關(guān)系數(shù)。
這些對(duì)應(yīng)于圖 2.13 中的九個(gè)散點(diǎn)圖。
????????繪制自相關(guān)系數(shù)以顯示自相關(guān)函數(shù)或 ACF。 該圖也稱為相關(guān)圖
????????
?在此圖中:
- r4 高于其他滯后。 這是由于數(shù)據(jù)中的季節(jié)性模式:峰值往往相隔四個(gè)季度,而谷底往往也相隔四個(gè)季度。
- r2 比其他滯后更負(fù),因?yàn)椴ü韧炔ǚ迓浜笏姆种?/li>
- 藍(lán)色虛線表示相關(guān)性是否顯著不同于零。
7.1 R語言實(shí)現(xiàn)
ggAcf(x)?7.2 ACF圖中 的趨勢(shì)和季節(jié)性
????????當(dāng)數(shù)據(jù)有趨勢(shì)時(shí),小滯后的自相關(guān)往往較大且為正,因?yàn)闀r(shí)間附近的觀測(cè)值也在附近。 因此,有趨勢(shì)的時(shí)間序列的 ACF 往往具有正值,隨著滯后的增加而緩慢下降。
????????當(dāng)數(shù)據(jù)是季節(jié)性的時(shí),季節(jié)性滯后(季節(jié)性頻率的倍數(shù))的自相關(guān)將大于其他滯后的自相關(guān)。
????????當(dāng)數(shù)據(jù)同時(shí)具有趨勢(shì)和季節(jié)性時(shí),會(huì)看到這些影響的組合。
???????? 圖 2.15 中繪制的每月澳大利亞電力需求序列顯示了趨勢(shì)和季節(jié)性。 其 ACF 如圖 2.16 所示。
????????
?
?????????隨著滯后增加,ACF 緩慢下降是由于趨勢(shì),而“扇形”形狀是由于季節(jié)性。
8 白噪聲
?不顯示自相關(guān)的時(shí)間序列稱為白噪聲。 圖 2.17 給出了一個(gè)白噪聲系列的例子。
set.seed(30)y <- ts(rnorm(50))autoplot(y) + ggtitle("White noise")?他的ACF是
?
?????????對(duì)于白噪聲序列,我們期望每個(gè)自相關(guān)接近于零。
???????? 當(dāng)然,它們不會(huì)完全等于零,因?yàn)榇嬖谝恍╇S機(jī)變化。
????????對(duì)于白噪聲序列,我們預(yù)計(jì) ACF 中 95% 的尖峰位于 ±2/√T 范圍內(nèi),其中 T 是時(shí)間序列的長(zhǎng)度。 通常將這些界限繪制在 ACF 圖上(上面的藍(lán)色虛線)。
???????? 如果一個(gè)或多個(gè)大尖峰超出這些界限,或者如果超過 5% 的尖峰超出這些界限,則該系列可能不是白噪聲。
????????在上例中,T=50,因此邊界為 ±2/√50=±0.28。 所有的自相關(guān)系數(shù)都在這些范圍內(nèi),因此數(shù)據(jù)是白噪聲。
9 相鄰點(diǎn)之間的殘差圖
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)library(forecast) res<-residuals(naive(y))library(ggplot2) autoplot(res)+ggtitle('residuals of neighbors')9.1 checkresiduals
checkresiduals((y))?
?
10 直方圖
gghistogram(y)?
參考資料:2.9 White noise | Forecasting: Principles?and?Practice (2nd ed) (otexts.com)?
總結(jié)
以上是生活随笔為你收集整理的机器学习笔记(时间序列):不同类型的图示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NTU 课程笔记:CV6422 置信区间
- 下一篇: 机器学习笔记 时间序列预测(最基本的方法