R語言中時(shí)間序列分析淺析
時(shí)間序列是將統(tǒng)一統(tǒng)計(jì)值按照時(shí)間發(fā)生的先后順序來進(jìn)行排列,時(shí)間序列分析的主要目的是根據(jù)已有數(shù)據(jù)對(duì)未來進(jìn)行預(yù)測(cè)。
一個(gè)穩(wěn)定的時(shí)間序列中常常包含兩個(gè)部分,那么就是:有規(guī)律的時(shí)間序列+噪聲。所以,在以下的方法中,主要的目的就是去過濾噪聲值,讓我們的時(shí)間序列更加的有分析意義。
語法
時(shí)間序列分析中ts()函數(shù)的基本語法是
timeseries.object.name <- ts(data, start, end, frequency)
以下是所使用的參數(shù)的描述
- data是包含在時(shí)間序列中使用的值的向量或矩陣。
- start以時(shí)間序列指定第一次觀察的開始時(shí)間。
- end指定時(shí)間序列中最后一次觀測(cè)的結(jié)束時(shí)間。
- frequency指定每單位時(shí)間的觀測(cè)數(shù)。
除了參數(shù)“data”,所有其他參數(shù)是可選的。
時(shí)間序列的預(yù)處理:
- 平穩(wěn)性檢驗(yàn):
拿到一個(gè)時(shí)間序列之后,我們首先要對(duì)其穩(wěn)定性進(jìn)行判斷,只有非白噪聲的穩(wěn)定性時(shí)間序列才有分析的意義以及預(yù)測(cè)未來數(shù)據(jù)的價(jià)值。
所謂平穩(wěn),是指統(tǒng)計(jì)值在一個(gè)常數(shù)上下波動(dòng)并且波動(dòng)范圍是有界限的。如果有明顯的趨勢(shì)或者周期性,那么就是不穩(wěn)定的。一般判斷有三種方法:
- 畫出時(shí)間序列的趨勢(shì)圖,看趨勢(shì)判斷
- 畫自相關(guān)圖和偏相關(guān)圖,平穩(wěn)時(shí)間序列的自相關(guān)圖和偏相關(guān)圖,要么拖尾,要么截尾。
- 檢驗(yàn)序列中是否存在單位根,如果存在單位根,就是非平穩(wěn)時(shí)間序列。
在R語言中,DF檢測(cè)是一種檢測(cè)穩(wěn)定性的方法,如果得出的P值小于臨界值,則認(rèn)為是序列是穩(wěn)定的。
- 白噪聲檢驗(yàn)
白噪聲序列,又稱為純隨機(jī)性序列,序列的各個(gè)值之間沒有任何的相關(guān)關(guān)系,序列在進(jìn)行無序的隨機(jī)波動(dòng),可以終止對(duì)該序列的分析,因?yàn)閺陌自肼曅蛄兄惺翘崛〔坏饺魏斡袃r(jià)值的信息的。
- 平穩(wěn)時(shí)間序列的參數(shù)特點(diǎn)
均值和方差為常數(shù),并且具有與時(shí)間無關(guān)的自協(xié)方差。
時(shí)間序列建模步驟:
- 拿到被分析的時(shí)間序列數(shù)據(jù)集。
- 對(duì)數(shù)據(jù)繪圖,觀測(cè)其平穩(wěn)性。若為非平穩(wěn)時(shí)間序列要先進(jìn)行 d 階差分運(yùn)算后化為平穩(wěn)時(shí)間序列,此處的 d 即為 ARIMA(p,d,q) 模型中的 d ;若為平穩(wěn)序列,則用 ARMA(p,q) 模型。所以 ARIMA(p,d,q) 模型區(qū)別于 ARMA(p,q) 之處就在于前者的自回歸部分的特征多項(xiàng)式含有d個(gè)單位根。
- 對(duì)得到的平穩(wěn)時(shí)間序列分別求得其自相關(guān)系數(shù) ACF 和偏自相關(guān)系數(shù) PACF ,通過對(duì)自相關(guān)圖和偏自相關(guān)圖的分析,得到最佳的階層 p 和階數(shù) q。由以上得到的 d、q、p ,得到 ARIMA 模型。
- 模型診斷。進(jìn)行診斷分析,以證實(shí)所得模型確實(shí)與所觀察到的數(shù)據(jù)特征相符。若不相符,重新回到第(3)步。
例
考慮從2012年1月開始的一個(gè)地方的年降雨量細(xì)節(jié)。我們創(chuàng)建一個(gè)R時(shí)間序列對(duì)象為期12個(gè)月并繪制它。
# Get the data points in form of a R vector. rainfall <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071) # Convert it to a time series object. rainfall.timeseries <- ts(rainfall,start = c(2012,1),frequency = 12) # Print the timeseries data. print(rainfall.timeseries) # Give the chart file a name. png(file = "rainfall.png") # Plot a graph of the time series. plot(rainfall.timeseries) # Save the file. dev.off()
當(dāng)我們執(zhí)行上面的代碼,它產(chǎn)生以下結(jié)果及圖表
Jan Feb Mar Apr May Jun Jul Aug Sep 2012 799.0 1174.8 865.1 1334.6 635.4 918.5 685.5 998.6 784.2 Oct Nov Dec 2012 985.0 882.8 1071.0
時(shí)間序列圖
不同的時(shí)間間隔
ts()函數(shù)中的頻率參數(shù)值決定了測(cè)量數(shù)據(jù)點(diǎn)的時(shí)間間隔。 值為12表示時(shí)間序列為12個(gè)月。 其他值及其含義如下
- 頻率= 12指定一年中每個(gè)月的數(shù)據(jù)點(diǎn)。
- 頻率= 4每年的每個(gè)季度的數(shù)據(jù)點(diǎn)。
- 頻率= 6每小時(shí)的10分鐘的數(shù)據(jù)點(diǎn)。
- 頻率= 24 * 6將一天的每10分鐘的數(shù)據(jù)點(diǎn)固定。
多時(shí)間序列
我們可以通過將兩個(gè)系列組合成一個(gè)矩陣,在一個(gè)圖表中繪制多個(gè)時(shí)間序列。
# Get the data points in form of a R vector. rainfall1 <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071) rainfall2 <- c(655,1306.9,1323.4,1172.2,562.2,824,822.4,1265.5,799.6,1105.6,1106.7,1337.8) # Convert them to a matrix. combined.rainfall <- matrix(c(rainfall1,rainfall2),nrow = 12) # Convert it to a time series object. rainfall.timeseries <- ts(combined.rainfall,start = c(2012,1),frequency = 12) # Print the timeseries data. print(rainfall.timeseries) # Give the chart file a name. png(file = "rainfall_combined.png") # Plot a graph of the time series. plot(rainfall.timeseries, main = "Multiple Time Series") # Save the file. dev.off()
當(dāng)我們執(zhí)行上面的代碼,它產(chǎn)生以下結(jié)果及圖表
Series 1 Series 2 Jan 2012 799.0 655.0 Feb 2012 1174.8 1306.9 Mar 2012 865.1 1323.4 Apr 2012 1334.6 1172.2 May 2012 635.4 562.2 Jun 2012 918.5 824.0 Jul 2012 685.5 822.4 Aug 2012 998.6 1265.5 Sep 2012 784.2 799.6 Oct 2012 985.0 1105.6 Nov 2012 882.8 1106.7 Dec 2012 1071.0 1337.8
多時(shí)間序列圖
到此這篇關(guān)于R語言中時(shí)間序列分析淺析的文章就介紹到這了,更多相關(guān)R語言時(shí)間序列分析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
R語言-如何將循環(huán)所得的矩陣組成一個(gè)矩陣
這篇文章主要介紹了R語言實(shí)現(xiàn)將循環(huán)所得的矩陣組成一個(gè)矩陣的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04R語言關(guān)于“包”的知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是一篇關(guān)于R語言“包”的知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-03-03R語言繪圖時(shí)輸出希臘字符上下標(biāo)及數(shù)學(xué)公式實(shí)現(xiàn)方法
這篇文章主要為大家介紹了R語言進(jìn)行繪圖時(shí)輸出希臘字符上標(biāo),下標(biāo)及數(shù)學(xué)公式的實(shí)現(xiàn)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-11-11R語言數(shù)據(jù)框的合并實(shí)現(xiàn)示例
有時(shí)數(shù)據(jù)集來自多個(gè)地方,我們需要將兩個(gè)或多個(gè)數(shù)據(jù)集合并成一個(gè)數(shù)據(jù)集,本文主要介紹了R語言數(shù)據(jù)框的合并實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02R語言:實(shí)現(xiàn)因子與字符串的互轉(zhuǎn)
這篇文章主要介紹了R語言:實(shí)現(xiàn)因子與字符串的互轉(zhuǎn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04R語言科學(xué)計(jì)算RcppArmadillo簡(jiǎn)明手冊(cè)
這篇文章主要為大家介紹了R語言科學(xué)計(jì)算RcppArmadillo的簡(jiǎn)明手冊(cè),內(nèi)容非常詳細(xì)全面,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11