日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

r语言没有forecast这个函数_R语言学习日记——时间序列分析之ARIMA模型预测

發布時間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 r语言没有forecast这个函数_R语言学习日记——时间序列分析之ARIMA模型预测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

指數平滑法對于預測來說是非常有幫助的,而且它對時間序列上面連續的值之間相關性沒有要求。但是,如果你想使用指數平滑法計算出預測區間,那么預測誤差必須是不相關的,

而且必須是服從零均值、 方差不變的正態分布。即使指數平滑法對時間序列連續數值之間相關性沒有要求,在某種情況下,我們可以通過考慮數據之間的相關性來創建更好的預測模型。自回歸移動平均模型(

ARIMA) 包含一個確定(explicit)的統計模型用于處理時間序列的不規則部分,它也允許不規則部分可以自相關。

首先,先確定數據的差分。

ARIMA 模型為平穩時間序列定義的。 因此,

如果你從一個非平穩的時間序列開始,首先你就需要做時間序列差分直到你得到一個平穩時間序列。如果你必須對時間序列做 d

階差分才能得到一個平穩序列,那么你就使用ARIMA(p,d,q)模型,其中 d 是差分的階數。

我們以每年女人裙子邊緣的直徑做成的時間序列數據為例。從 1866 年到

1911 年在平均值上是不平穩的。 隨著時間增加, 數值變化很大。

> skirts

scan("http://robjhyndman.com/tsdldata/roberts/skirts.dat",skip=5)

Read 46 items

> skirtsts

ts(skirts,start = c(1866))

>

plot.ts(skirtsts)

我們可以通過鍵入下面的代碼來得到時間序列(數據存于“skirtsts”) 的一階差分, 并畫出差分序列的圖:

>

skirtstsdiff

>

plot.ts(skirtstsdiff)

從一階差分的圖中可以看出,數據仍是不平穩的。我們繼續差分。

>

skirtstsdiff2

> plot.ts(skirtstsdiff2)

二次差分(上面)后的時間序列在均值和方差上確實看起來像是平穩的,

隨著時間推移,時間序列的水平和方差大致保持不變。因此,看起來我們需要對裙子直徑進行兩次差分以得到平穩序列。

第二步,找到合適的ARIMA模型

如果你的時間序列是平穩的,或者你通過做 n

次差分轉化為一個平穩時間序列, 接下來就是要選擇合適的 ARIMA模型,這意味著需要尋找 ARIMA(p,d,q)中合適的 p 值和 q

值。為了得到這些,通常需要檢查[平穩時間序列的(自)相關圖和偏相關圖。

我們使用 R 中的“acf()”和“pacf”

函數來分別(自) 相關圖和偏相關圖。“acf()”和“pacf 設定“plot=FALSE” 來得到自相關和偏相關的真實值。

>

acf(skirtstsdiff2,lag.max=20)

>

acf(skirtstsdiff2,lag.max=20,plot=FALSE)

Autocorrelations of series

‘skirtstsdiff2’, by lag

0

1 ?2

3 ?4

5 ?6

7 ?8

9 ?10

1.000 -0.303

0.096 ?0.009

0.102 -0.453

0.173 -0.025 -0.039

0.073 -0.094

11 ?12 ?13 ?14 ?15 ?16 ?17 ?18 ?19 ?20

0.133 -0.089

-0.027 -0.102 ?0.207 -0.260

0.114 ?0.101

0.011 -0.090

自相關圖顯示滯后1階自相關值基本沒有超過邊界值,雖然5階自相關值超出邊界,那么很可能屬于偶然出現的,而自相關值在其他上都沒有超出顯著邊界,而且我們可以期望

1 到 20 之間的會偶爾超出 95%的置信邊界。

> pacf(skirtstsdiff2,lag.max=20)

>

pacf(skirtstsdiff2,lag.max=20,plot=FALSE)

Partial autocorrelations of series

‘skirtstsdiff2’, by lag

1

2 ?3

4 ?5

6 ?7

8 ?9

10

11

-0.303 ?0.005

0.043 ?0.128

-0.439 -0.110 ?0.073

0.028 ?0.128

-0.355 ?0.095

12 ?13 ?14 ?15 ?16 ?17 ?18 ?19 ?20

0.052 -0.094

-0.103 -0.034 -0.021 -0.002 ?0.074

0.020 -0.034

偏自相關值選5階。

故我們的ARMIA模型為armia(1,2,5)

>

skirtsarima

> skirtsarima

SSeries:

skirtsts

ARIMA(1,2,5)

Coefficients:

ar1

ma1

ma2

ma3

ma4

ma5

-0.4345

0.2762 ?0.1033

0.1472 ?0.0267

-0.8384

s.e. ?0.1837

0.2171 ?0.2198

0.2716 ?0.1904

0.2888

sigma^2 estimated as 206.1:

log likelihood=-183.8

AIC=381.6 ?AICc=384.71 ?BIC=394.09

預測后5年裙子的邊緣直徑

>

skirtsarimaforecast

> skirtsarimaforecast

Point Forecast

Lo 99.5 ?Hi

99.5

1912 ?548.5762

507.1167 590.0357

1913 ?545.1793

459.3292 631.0295

1914 ?540.9354

396.3768 685.4940

1915 ?531.8838

316.2785 747.4892

1916 ?529.1296

233.2625 824.9968

> plot.forecast(skirtsarimaforecast$residuals)

第三步,檢驗

在指數平滑模型下, 觀察 ARIMA 模型的預測誤差是否是平均值為 0

且方差為常數的正態分布(服從零均值、方差不變的正態分布) 是個好主意,同時也要觀察連續預測誤差是否(自)相關。

>

acf(skirtsarimaforecast$residuals,lag.max=20)

>

Box.test(skirtsarimaforecast$residuals, lag=20,

type="Ljung-Box")

Box-Ljung test

data:

skirtsarimaforecast$residuals

X-squared = 8.5974, df = 20, p-value =

0.9871

既然相 關圖顯示出在滯后1

- 20階(

l a

g s

1 -

20 )中樣本自相關值都沒有超出顯著(置信)邊

界,而且Ljung-Box檢驗的p值為0.99,所以我們推斷在滯后1-20階(lags1-20)中沒明顯證據說明預測

誤差是非零自相關的。

為了調查預測誤差是否是平均值為零且方差為常數的正態分布(服從零均值、方差不變的正態分布),我們可以做預測誤差的時間曲線圖和直方圖(具有正態分布曲線):

>

plot.ts(skirtsarimaforecast$residuals)

>

plotForecastErrors(skirtsarimaforecast$residuals)

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的r语言没有forecast这个函数_R语言学习日记——时间序列分析之ARIMA模型预测的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。