R語言 時間序列arima模型

2021-08-20 20:54:12 字數 3773 閱讀 1355

t=

c+a1

yt−1

+a2y

t−2+

...+

apyt

−p+ϵ

t−b1

ϵt−1

−b2ϵ

t−2−

...−

bqϵt

−qyt=c+a1yt−1+a2yt−2+...+apyt−p+ϵt−b1ϵt−1−b2ϵt−2−...−bqϵt−qtyt

tϵt(l

)yt=

c+θ(

l)ϵt

ϕ(l)yt=c+θ(l)ϵt(l

)=1−

a1l−

a2l2

−...

−apl

pϕ(l)=1−a1l−a2l2−...−aplp(l

)=1−

b1l−

b2l2

−...

−bql

qθ(l)=1−b1l−b2l2−...−bqlqtyt

yt=c

+a1δ

yt−1

+a2δ

yt−2

+...

+apδ

yt−p

+ϵt−

b1ϵt

−1−b

2ϵt−

2−..

.−bq

ϵt−q

δyt=c+a1δyt−1+a2δyt−2+...+apδyt−p+ϵt−b1ϵt−1−b2ϵt−2−...−bqϵt−qtyt

t−kyt−kt−

1yt−1t−

2yt−2t−

kyt−ktyt

t−kyt−k(y

t)=μ

e(yt)=μov

(yt,

ys)=

e((y

t−μt

)(ys

−μs)

)=γ|

s−t|

cov(yt,ys)=e((yt−μt)(ys−μs))=γ|s−t|(ϵ

t)=0

e(ϵt)=0ar

(ϵt)

=σ2var(ϵt)=σ2於所

有s≠t

,cov

(ϵt,

ϵt)=

0對於所有s≠t,cov(ϵt,ϵt)=0

> plot(nile,type="l",xlab="時間",ylab="尼羅河流量")

> acf(nile,main="自相關圖") #畫出自相關圖

> opar

> plot(nile,type="l",xlab="時間",ylab="尼羅河流量")

> acf(nile,main="自相關圖")

> par(opar)

> opar

> plot(data,type="l",xlab="時間",ylab="尼羅河流量對數值",main="差分前")

> acf(data,main="自相關圖",xlab="滯後階數")

> par(opar)

> library(forecast)

> ndiffs(data)

[1] 1 #結果表明序列需要進行1階差分

> ndata

> ndiffs(ndata)

[1] 0 #結果表明無需進行

> opar

> plot(ndata,type="l",main="差分後")

> acf(ndata,main="自相關圖",xlab="滯後階數")

> par(opar)

pacf值

模型拖尾(逐漸減為0)

p階截尾(p階快速減為0)

arima(p,d,0)

q階截尾

拖尾arima(0,d,q)

拖尾拖尾

arima(p,d,q)

含義data

時間序列

order

模型的階數

method

模型引數估計的方法,「ml」極大似然估計,」css」條件最小二乘估計,「css-ml」

> opar

> acf(ndata)

> pacf(ndata)

> par(opar)

> model1

> model1

call:

arima(x = data, order = c(0, 1, 1), method = "ml")

coefficients:

ma1-0.7677

s.e. 0.1046

sigma^2 estimated as

0.02623: log likelihood = 39.3, aic = -74.6

t=

yt−1

+ϵt−

0.7677ϵt

−1yt=yt−1+ϵt−0.7677ϵt−1

殘差的正態性檢驗:畫出殘差的qq圖即可判斷,qq圖中殘差基本完全落在45°線上即為符合正態性假設。否則模型可能出現錯誤。語法為: 

qqnorm(model$residuals)

qqline(model$residuals)

殘差的無關性檢驗:也稱為殘差的白雜訊檢驗,由前面白雜訊的定義可知,殘差(=估計值-真實值)應為不相關的序列。常用lb統計量來檢驗殘差。=n

(n+2

)∑(ρ

/(n−

k))q=n(n+2)∑(ρ/(n−k))

> qqnorm(model1$residuals)

> qqline(model1$residuals)

> box.test(model1$residuals,type

="ljung-box")

box-ljung test

data: model1$residuals

x-squared

=1.5897, df =

1, p-value

=0.2074

> p

> p

$pred

time series:

start = 1971

end = 1974

frequency = 1

[1] 6.686726

6.686726

6.686726

6.686726

$setime series:

start = 1971

end = 1974

frequency = 1

[1] 0.1619621

0.1662765

0.1704817

0.1745857

> plot(nile,xlab="時間",ylab="流量")

> lines(exp(p$pred),col="red")

> exp(p$pred)

time series:

start = 1971

end = 1974

frequency = 1

[1] 801.6934

801.6934

801.6934

801.6934

R語言 ARIMA時間序列模型

本實驗使用r的fecofin包中的cpi.dat資料集。cpi是乙個經季節調整的美國消費 指數,此資料是月度的。資料載入方法 首先安裝該資料所在包 install.packages fecofin repos 載入資料 originaldata cpi.dat 應用arima p,i,q 對1977...

R 簡述時間序列(ARIMA)

時間序列是指將同一統計指標的數值按時間先後的順序排列而成的數列,主要目的是用歷史資料 未來。時間序列一般分為連續性和離散型,下面只講離散型。我這裡主要講的是r中arima模型 單積自回歸移動平均 其中ar是自回歸 ma是移動平均,具體推導很複雜就不詳述了。白雜訊 均值,方差不隨時間變化的一種平穩的隨...

R語言 時間序列的建立及時間序列模型

一 時間序列的建立 時間序列的建立函式為 ts 函式的引數列表如下 ts data na,start 1,end numeric frequency 1,deltat 1,ts.eps getoption ts.eps class names 引數說明 data 這個必須是乙個矩陣,或者向量,再或者...