• 検索結果がありません。

AR モデル

ドキュメント内 ためになった他の人のサイト script of (ページ 112-118)

0.0 0.1 0.2 0.3 0.4 0.5

0.00.20.40.60.81.0

frequency Series: lh

0.0 0.1 0.2 0.3 0.4 0.5

0.00.20.40.60.81.0

frequency AR(3) fit to lh

0 1 2 3 4 5 6

0.00.20.40.60.81.0

frequency Series: ldeaths

黄体形成ホルモン量データの累積 ペリオドグラム

原データ(上左)

AR(3) モデルを当てはめた残差

(上右)

英国の肺疾患死亡者数(両性)デー タの累積ペリオドグラ(下左)

demean = TRUE, series, ...)

#

クラス

"ar"

に対する

S3

メソッド

predict(object, newdata, n.ahead = 1, se.fit = TRUE, ...)

引数:

x

一変量,もしくは多変量時系列

aic

論理値フラグ.もし

TRUE

なら,自己回帰モデルの次数を選択するために赤池の 情報量規準が使われる.もし

FALSE

なら次数

order.max

のモデルが当てはめら れる

order.max

当てはめられるモデルの

(

最大

)

次数.既定では

N

を観測数として

N-1

10*log10(N)

の小さいほうが使われる.

method="mle"

では,この数と

12

の小 さいほうとされる

method

モデルの当てはめに使われる手法を与える文字列.既定の引数のどれかであ

る必要があるが,最初の数文字だけで十分である.既定では

"yule-walker"

na.action

欠損値を処理するために使われる関数名

demean

論理値.当てはめの過程で平均値を推定するか

?

series

時系列の名前.既定では

deparse(substitute(x))

var.method

イノベーション分散を推定する手法

...

特定の手法のためのオプション追加引数

object ar()

関数による当てはめ結果

newdata

予測を試みるデータ

n.ahead

何ステップ先まで予測を行うか

?

se.fit

論理値.予測誤差の標準誤差の推定値を返すか

?

返り値: 以下の成分を持つクラス

"ar"

のリスト:

order

当てはめられたモデルの次数.

aic=TRUE

ならば,

AIC

を最小化するものが,

さもなければ

order.max

そのもの

ar

当てはめられたモデルの自己回帰係数の推定値

var.pred

予測分散.時系列の分散のうち,自己回帰モデルで説明できなかった部分

の推定値

x.mean

時系列の平均値の推定値で,当てはめ過程と予測で用いられる

x.intercept ar.ols()

専用.

x-x.mean

に対するモデルの切片値

aic aic

引数の値

n.used

時系列中の総観測値数

order.max order.max

引数の値

partialacf

最大ラグ

order.max

までの部分自己相関系数の推定値

resid

「次数

1

」の観測値で条件付けられた,当てはめモデルの残差.「次数

1

」の残差

NA

とされる.もし

x

が時系列なら

resid

も時系列になる

method

引数

method

の値

series

時系列の名前

frequency

時系列の周波数

call

マッチした呼出し式

asy.var.coef (

一次元時系列で,

order>0

の場合

)

漸近理論に基づく系数推定値の

分散行列

predict.ar()

,予測値時系列,もしくは

se.fit=TRUE

に対しては,予測値である成分

pred

と推定標準誤差である成分

se

を持つリストである.成分はともに時系列になる.

時系列

{ x

t

}

に対する

p

次の

AR

モデル

AR(p)

は次の式で定義される

: (x

t

− m) = a

1

(x

t−1

− m) + . . . + a

p

(x

t−p

− m) + ε

t

ここで,

m

は平均値,

a

1

, . . . , a

p は自己回帰係数,そして

ε

tは時点

t

での誤差項である.

関 数

ar()

は 様 々 な 手 法 で 自 己 回 帰 モ デ ル の 当 て は め を 行 う 関 数 群 ,

ar.yw(), ar.burg(), ar.ols()

そして

ar.mle()

,へのラッパ関数である.これらは,

aic=TRUE

な らば

AIC

法でモデルの選択を行う.しかしながら,真正の最尤推定法を用いる

ar.mle()

を除けばこれは問題なしとしない.

AIC

値は分散の推定値が最尤推定値であるかのよう に計算され,尤度から行列式項は除かれる.これは,推定パラメータを用いて評価された 正規分布尤度とは異なるものであることを注意しよう.

ar.yw()

では,イノベーション は当てはめ係数と

x

の自己共分散から計算される.

ar.burg()

ではイノベーション分散,したがって

AIC

値,の計算に二つの手法を用い

ることができる.手法

1

S-PLUS

と同様に

Levinson-Durbin

の更新式を更新のために 用いる.手法

2

は,前進・後退予測誤差の

2

乗和の平均を用いる.推定係数は分散の推定 法に

(

多少

)

依存するであろう.

ar()

関数は,

x

の全体平均を引き去るか,引き去る定数を推定

(ar.mle())

すること により,既定でモデル中に定数を含むことを注意しよう.

注意:

ar.mle()

は一次元時系列に対してだけ実装されている.

method="mle"

のよる 長い時系列当てはめは非常に時間がかかる可能性がある.

関連:

ar.ols(), ARMA

モデルに対しては

arima0()

,自己相関係数からの

AR

モデル の構築には

acf2AR()

# 黄体形成ホルモン量データlhを使用

> ar(lh) # 既定のYule-Walkerar.yw()による当てはめ

Call:

ar(x = lh) # 呼出し式

Coefficients:

1 2 3 # 当てはめモデルの係数

0.6534 -0.0636 -0.2269

Order selected 3 sigma^2 estimated as 0.1959 # 3次のARモデル選択

> str(ar(lh)) # 当てはめ結果の詳細

List of 14

$ order : int 3

$ ar : num [1:3] 0.6534 -0.0636 -0.2269

$ var.pred : num 0.196

$ x.mean : num 2.4

$ aic : Named num [1:17] 18.307 0.996 0.538 0.000 1.490 ...

..- attr(*, "names")= chr [1:17] "0" "1" "2" "3" ...

$ n.used : int 48

$ order.max : num 16

$ partialacf : num [1:16, 1, 1] 0.576 -0.223 -0.227 0.103 -0.076 ...

$ resid : Time-Series [1:48] from 1 to 48: NA NA NA -0.200 -0.169 ...

$ method : chr "Yule-Walker"

$ series : chr "lh"

$ frequency : num 1

$ call : language ar(x = lh)

$ asy.var.coef: num [1:3, 1:3] 0.02156 -0.01518 0.00482 -0.01518 0.03117 ...

- attr(*, "class")= chr "ar"

> ar(lh, method="burg") # ar.burg()使用 Call:

ar(x = lh, method = "burg") Coefficients:

1 2 3

0.6588 -0.0608 -0.2234

Order selected 3 sigma^2 estimated as 0.1786

> ar(lh, method="ols") # ar.ols()使用 Call:

ar(x = lh, method = "ols") Coefficients:

1 0.586

Intercept: 0.006234 (0.06551)

Order selected 1 sigma^2 estimated as 0.2016

> ar(lh, FALSE, 4) # 4次のARモデル当てはめ

Call:

ar(x = lh, aic = FALSE, order.max = 4) Coefficients:

1 2 3 4

0.6767 -0.0571 -0.2941 0.1028

Order selected 4 sigma^2 estimated as 0.1983

> (sunspot.ar <- ar(sunspot.year)) # 太陽黒点数データsunspot使用 Call:

ar(x = sunspot.year) Coefficients:

1 2 3 4 5 6 7 8

1.1305 -0.3524 -0.1745 0.1403 -0.1358 0.0963 -0.0556 0.0076 9

0.1941

Order selected 9 sigma^2 estimated as 267.5 # 9次のARモデル選択

> predict(sunspot.ar, n.ahead=25) # 当てはめモデルによる予測

$pred # 予測値時系列

Time Series:

Start = 1989 End = 2013 Frequency = 1

[1] 135.25933 148.09051 133.98476 106.61344 71.21921 40.84057 18.70100 [8] 11.52416 27.24208 56.99888 87.86705 107.62926 111.05437 98.05484 [15] 74.84085 48.80128 27.65441 18.15075 23.15355 40.04723 61.95906 [22] 80.79092 90.11420 87.44131 74.42284

$se # 予測標準誤差時系列

Time Series:

Start = 1989 End = 2013 Frequency = 1

[1] 16.35519 24.68467 28.95653 29.97401 30.07714 30.15629 30.35971 30.58793 [9] 30.71100 30.74276 31.42565 32.96467 34.48910 35.33601 35.51890 35.52034 [17] 35.65505 35.90628 36.07084 36.08139 36.16818 36.56324 37.16527 37.64820 [25] 37.83954

# 2 変量時系列への当てはめ例.売上高データBJsales使用

> ar(cbind(BJsales, BJsales.lead), method="burg") Call:

ar(x = cbind(BJsales, BJsales.lead), method = "burg")

$ar # 4次の2変量ARモデルを選択

, , 1 # 以下各次数の(行列)係数

BJsales BJsales.lead BJsales 1.21197 0.07312 BJsales.lead 0.07411 0.45684 , , 2

BJsales BJsales.lead

BJsales -0.26022 -0.1120

BJsales.lead -0.06904 0.3111 , , 3

BJsales BJsales.lead

BJsales -0.01754 3.93591 BJsales.lead 0.01792 0.09632 , , 4

BJsales BJsales.lead BJsales -0.07746 -1.33836 BJsales.lead -0.01158 -0.09118

$var.pred

BJsales BJsales.lead BJsales 0.38426 0.01315 BJsales.lead 0.01315 0.07657

> ar(BJsales, method="burg") # 1変量で当てはめるとAR(5)を選択 Call:

ar(x = BJsales, method = "burg") Coefficients:

1 2 3 4 5

1.2213 -0.0619 -0.0649 0.0668 -0.1668 Order selected 5 sigma^2 estimated as 1.759

4.4.2 最小自乗法による AR モデルの当てはめ ar.ols()

通常最小自乗法

(OLS, Ordinary Least Square)

により,時系列に

AR

モデルを当て はめる.既定では

AIC

法で次数を決める.

書式:

ar.ols(x, aic = TRUE, order.max = NULL, na.action = na.fail, demean = TRUE, intercept = demean, series, ...)

引数:

x

(

)

変量時系列

aic

論理値フラグ.もし

TRUE

なら,

AIC

法を用いて

AR

モデルの次数を選択する.

もし

FALSE

なら次数

order.max

のモデルを使用する

order.max

当 て は め モ デ ル の

(

最 大

)

次 数 .既 定 で は ,観 測 値 数 を

N

と す る と

10*log10(N)

が使われる

na.action

欠損値を処理する関数

demean x

から平均値を引き去った

AR

モデルを当てはめるべきか?

intercept

切片

(

定数

)

項を別個に当てはめるべきか?

series

時系列の名前.既定では

deparse(substitute(x)) ...

他のメソッドへ

(

から

)

引き渡される追加引き数

返り値: クラス

"ar"

オブジェクトで,以下の成分を持つ:

order

当てはめモデルの次数.これは,もし

aic=TRUE

なら

AIC

の最小化で選ばれ

る.さもなければ

order.max

である

ar

当てはめモデルの

AR

係数

var.pred

予測分散.つまり,時系列の分散のうち,

AR

モデルで説明できない部分

x.mean

当てはめで使われた推定平均

(

もし

demean=FALSE

なら

0)

で,予測でも使わ れる

x.intercept x-x.mean

に対するモデルの切片項.

intercept=FALSE

なら

0 aic aic

引き数の値

n.used

時系列中の観測値数

order.max order.max

引き数値

partialacf NULL

ar()

との互換性のためにある

resid

第「一次」の観測値で条件付けた,当てはめモデルからの残差.第「一次」の

残差は

NA

とされる.もし

x

が時系列なら,

rsid

も時系列

method

文字列

"Unconstrained LS"

series

時系列の名前

asy.se.coef

係数推定値の漸近理論による標準誤差

ar.ols()

は一般の

AR

モデルを時系列

x

に当てはめる.多変量時系列でも,可能性

として非定常でも良い.たとえ,時系列の一部分が非定常でも,また

(

同じ階数で

)

階差 をとってあっても,結果の制約無し最小自乗推定値は一致性を持つ.正確には

AR

係数 は次のように符号が決められている:

(x

t

− m) = a

0

+ a

1

(x

t−1

− m) + . . . + a

p

(x

t−p

− m) + e

t

ここで

a

0 は

intercept = TRUE

でない限り

0

であり,

m

demean = TRUE

なら標本 平均,さもなければ

0

である.次数の選択は,もし

aic = TRUE

なら

AIC

法で行われ る.これは,

ar.ols()

が真の最尤推定を行わないので,問題無しとはしない.

AIC

(

残差の分散行列から計算された

)

分散推定値があたかも

MLE

であるかのように計算さ れ,尤度から行列式項を除外してある.これは,推定パラメータ値を用いて計算した正規 分布尤度とは異なるものであることを注意しよう.もし

intercept = TRUE

demean

= FALSE

であるときは,少し注意がいる.時系列がほぼ

0

の周りに中心化されていると

きだけこれを使用しよう.さもなければ,計算は不正確になるか,全く失敗するかも知れ ない.

# 黄体形成ホルモン量データlhを使用(以下の図を参照)

> (ts <- ar(lh, method="burg")) # ar()法によるARモデルの当てはめ

> ts.plot(lh, predict(ts, n.ahead = 10)$pred) # 時系列と予測値の同時プロット

> (ts <- ar.ols(lh)) # ar.ols()法でARモデル当てはめ

Call:

ar.ols(x = lh) Coefficients:

1 0.586

Intercept: 0.006234 (0.06551)

Order selected 1 sigma^2 estimated as 0.2016

> ts.plot(lh, predict(ts, n.ahead = 10)$pred) # 時系列と予測値の同時プロット

> ts <- ar.ols(lh, FALSE, 4) # AR(4)の当てはめ

> ts.plot(lh, predict(ts, n.ahead = 10)$pred) # 時系列と予測値の同時プロット

> ts <- ar.ols(lh, order.max=6, demean=FALSE, intercept=TRUE)

> data(BJsales) # 企業売り上げデータ読み込み

> ts <- ar.ols(BJsales) # ARモデルのの当てはめ

> ts.plot(BJsales, predict(ts, n.ahead=10)$pred) # 系列,予測値の同時プロット

# ヨーロッパ株価指標データEuStockMarketsを使用

> x <- diff(log(EuStockMarkets)) # 対数値の一階階差を取る

# 最大6次までのARモデルの当てはめ,平均化せず,定数項を含める

> ar.ols(x, order.max=6, demean=FALSE, intercept=TRUE) Call:

ar.ols(x = x, order.max = 6, demean = FALSE, intercept = TRUE)

$ar , , 1

DAX SMI CAC FTSE

DAX 0.004560 -0.095781 0.039975 0.04856 SMI -0.009204 -0.007142 0.037758 0.06826 CAC -0.026624 -0.113688 0.063807 0.09154

FTSE -0.010299 -0.089246 -0.003195 0.16409

$x.intercept

DAX SMI CAC FTSE

0.0006941 0.0007813 0.0004866 0.0004388

$var.pred

DAX SMI CAC FTSE

DAX 1.056e-04 6.683e-05 8.274e-05 5.192e-05 SMI 6.683e-05 8.496e-05 6.252e-05 4.254e-05 CAC 8.274e-05 6.252e-05 1.207e-04 5.615e-05 FTSE 5.192e-05 4.254e-05 5.615e-05 6.224e-05

Time

0 10 20 30 40 50 60

1.52.02.53.03.5

Time

0 10 20 30 40 50 60

1.52.02.53.03.5

Time

0 10 20 30 40 50 60

1.52.02.53.03.5

Time

0 50 100 150

200210220230240250260

黄 体 形 成 ホ ル モ ン 量 デ ー タ へ の ARモデル当てはめと 10期先ま での予測

(上左)ar()による当てはめ (上右)ar.ols()による当てはめ (下左) AR(4)の当てはめ (下右)ar.ols() による企業売り 上げデータへのARモデルの当て はめ10期先までの予測

ドキュメント内 ためになった他の人のサイト script of (ページ 112-118)