> dir() と入力すると 現在の作業ディレクトリにあるファイルが全て表示されるので そこに tsdata.txt があるか確認する 1.3 read.table( ) 関数による読み込み次のコマンドを実行する > tsdata = read.table("tsdata.txt", header=

Similar documents
まず y t を定数項だけに回帰する > levelmod = lm(topixrate~1) 次にこの出力を使って先ほどのレジームスイッチングモデルを推定する 以下のように入力する > levelswmod = msmfit(levelmod,k=,p=0,sw=c(t,t)) ここで k はレジ

dae opixrae 1 Feb Mar Apr May Jun と表示される 今 必要なのは opixrae のデータだけなので > opixrae=opixdaa$opi

ファイナンスのための数学基礎 第1回 オリエンテーション、ベクトル

2. 時系列分析 プラットフォームの使用法 JMP の 時系列分析 プラットフォームでは 一変量の時系列に対する分析を行うことができます この章では JMP のサンプルデ ータを用いて このプラットフォームの使用法をご説明します JMP のメニューバーより [ ヘルプ ] > [ サンプルデータ ]

以下の内容について説明する 1. VAR モデル推定する 2. VAR モデルを用いて予測する 3. グレンジャーの因果性を検定する 4. インパルス応答関数を描く 1. VAR モデルを推定する ここでは VAR(p) モデル : R による時系列分析の方法 2 y t = c + Φ 1 y t

様々なミクロ計量モデル†

Microsoft PowerPoint - e-stat(OLS).pptx

統計的データ解析

Dependent Variable: LOG(GDP00/(E*HOUR)) Date: 02/27/06 Time: 16:39 Sample (adjusted): 1994Q1 2005Q3 Included observations: 47 after adjustments C -1.5

EBNと疫学

Medical3

「統 計 数 学 3」

数量的アプローチ 年 6 月 11 日 イントロダクション データ分析をマスターする 12 のレッスン ウェブサポートページ ( 有斐閣 ) 水落研究室 R http:

ビジネス統計 統計基礎とエクセル分析 正誤表

切片 ( 定数項 ) ダミー 以下の単回帰モデルを考えよう これは賃金と就業年数の関係を分析している : ( 賃金関数 ) ここで Y i = α + β X i + u i, i =1,, n, u i ~ i.i.d. N(0, σ 2 ) Y i : 賃金の対数値, X i : 就業年数. (

Microsoft Word - å“Ÿåłžå¸°173.docx

3. みせかけの相関単位根系列が注目されるのは これを持つ変数同士の回帰には意味がないためだ 単位根系列で代表的なドリフト付きランダムウォークを発生させてそれを確かめてみよう yと xという変数名の系列をを作成する yt=0.5+yt-1+et xt=0.1+xt-1+et 初期値を y は 10

<4D F736F F D208EC08CB18C7689E68A E F AA957A82C682948C9F92E82E646F63>

基礎統計

Microsoft Word - apstattext04.docx

Microsoft PowerPoint - 統計科学研究所_R_重回帰分析_変数選択_2.ppt

Probit , Mixed logit

関数の定義域を制限する 関数のコマンドを入力バーに打つことにより 関数の定義域を制限することが出来ます Function[ < 関数 >, <x の開始値 >, <x の終了値 > ] 例えば f(x) = x 2 2x + 1 ( 1 < x < 4) のグラフを描くには Function[ x^

計算機シミュレーション

経済統計分析1 イントロダクション

Kumamoto University Center for Multimedia and Information Technologies Lab. 熊本大学アプリケーション実験 ~ 実環境における無線 LAN 受信電波強度を用いた位置推定手法の検討 ~ InKIAI 宮崎県美郷

Microsoft Word - 操作マニュアル-Excel-2.doc

初めてのプログラミング

Python-statistics5 Python で統計学を学ぶ (5) この内容は山田 杉澤 村井 (2008) R によるやさしい統計学 (

講義「○○○○」

配付資料 自習用テキスト 解析サンプル配布ページ 2

基本的な利用法

Microsoft Word - eviews2_

プログラミング実習I

Medical3

スライド 1

Microsoft PowerPoint - R-stat-intro_12.ppt [互換モード]

Microsoft Word - lec_student-chp3_1-representative

目次 はじめに P.02 マクロの種類 ---

Microsoft PowerPoint - GLMMexample_ver pptx

Microsoft Word - 補論3.2

ANOVA

C#の基本

分析のステップ Step 1: Y( 目的変数 ) に対する値の順序を確認 Step 2: モデルのあてはめ を実行 適切なモデルの指定 Step 3: オプションを指定し オッズ比とその信頼区間を表示 以下 このステップに沿って JMP の操作をご説明します Step 1: Y( 目的変数 ) の

スライド 1

PowerPoint Presentation

R による共和分分析 1. 共和分分析を行う 1.1 パッケージ urca インスツールする 共和分分析をするために R のパッケージ urca をインスツールする パッケージとは通常の R には含まれていない 追加的な R のコマンドの集まりのようなものである R には追加的に 600 以上のパッ

目次 1 章 SPSS の基礎 基本 はじめに 基本操作方法 章データの編集 はじめに 値ラベルの利用 計算結果に基づく新変数の作成 値のグループ化 値の昇順

不偏推定量

多変量解析 ~ 重回帰分析 ~ 2006 年 4 月 21 日 ( 金 ) 南慶典

Microsoft PowerPoint - Econometrics pptx

JMP による 2 群間の比較 SAS Institute Japan 株式会社 JMP ジャパン事業部 2008 年 3 月 JMP で t 検定や Wilcoxon 検定はどのメニューで実行できるのか または検定を行う際の前提条件の評価 ( 正規性 等分散性 ) はどのメニューで実行できるのかと

計量経済学の第一歩 田中隆一 ( 著 ) gretl で例題と実証分析問題を 再現する方法 発行所株式会社有斐閣 2015 年 12 月 20 日初版第 1 刷発行 ISBN , Ryuichi Tanaka, Printed in Japan

Microsoft PowerPoint - Statistics[B]

カイ二乗フィット検定、パラメータの誤差

Microsoft Word - 計量研修テキスト_第5版).doc

第1章 低下から停滞に転じた鉱工業生産

13章 回帰分析

14 化学実験法 II( 吉村 ( 洋 mmol/l の半分だったから さんの測定値は くんの測定値の 4 倍の重みがあり 推定値 としては 0.68 mmol/l その標準偏差は mmol/l 程度ということになる 測定値を 特徴づけるパラメータ t を推定するこの手

自動車感性評価学 1. 二項検定 内容 2 3. 質的データの解析方法 1 ( 名義尺度 ) 2.χ 2 検定 タイプ 1. 二項検定 官能検査における分類データの解析法 識別できるかを調べる 嗜好に差があるかを調べる 2 点比較法 2 点識別法 2 点嗜好法 3 点比較法 3 点識別法 3 点嗜好

505_切削オーバーレイ

Microsoft PowerPoint - 統計科学研究所_R_主成分分析.ppt

PowerPoint プレゼンテーション

発表の流れ 1. 回帰分析とは? 2. 単回帰分析単回帰分析とは? / 単回帰式の算出 / 単回帰式の予測精度 <R による演習 1> 3. 重回帰分析重回帰分析とは? / 重回帰式の算出 / 重回帰式の予測精度 質的変数を含む場合の回帰分析 / 多重共線性の問題 変数選択の基準と方法 <R による

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

Microsoft Word - 計量研修テキスト_第5版).doc

PowerPoint プレゼンテーション

と入力する すると最初の 25 行が表示される 1 行目は変数の名前であり 2 列目は企業番号 (1,,10),3 列目は西暦 (1935,,1954) を表している ( 他のパネルデータを分析する際もデ ータをこのように並べておかなくてはならない つまりまず i=1 を固定し i=1 の t に関

モジュール1のまとめ

Microsoft PowerPoint - 資料04 重回帰分析.ppt

Microsoft PowerPoint - stat-2014-[9] pptx

< 目次 > 1. 練習ファイルのダウンロード 表計算ソフト Excel の基本 Excel でできること Excel の画面 セル 行 列の選択 セルにデータを入力する ( 半角英数字の場合 )

Microsoft Word - eviews1_

CAEシミュレーションツールを用いた統計の基礎教育 | (株)日科技研

Microsoft PowerPoint - 時系列解析(11)_講義用.pptx

PowerPoint Presentation

0 部分的最小二乗回帰 Partial Least Squares Regression PLS 明治大学理 学部応用化学科 データ化学 学研究室 弘昌

MFIV となる Volatility Index Japan(VXJ) を日次で算出 公表している VIX 等と同様にTは約 1 ヶ月に設定 近似ターゲットは V t である 現行バージョンの計算方法は CBOE 方式に準じているが CSFI ではより高い精度で V t を近似する方法を研究開発中

314 図 10.1 分析ツールの起動 図 10.2 データ分析ウィンドウ [ データ ] タブに [ 分析 ] がないときは 以下の手順で表示させる 1. Office ボタン をクリックし Excel のオプション をクリックする ( 図 10.3) 図 10.3 Excel のオプション

Transcription:

R による時系列分析の方法 1 以下では統計ソフト R を使って時系列分析をやる方法を簡単に要約する 具体的には 0. R をインスツールする 1. データを読み込む 2. データをプロットする 3. 変化率の計算 4. 標本平均 標本自己相関 標本共分散の計算 コレログラムの作成 5. 自己相関の検定 Ljung-Box 統計量の計算 6. AR, MA, ARMA モデルの推定 7. AR, MA, ARMA モデルの次数の選択 ( AIC, BIC の計算 ) 8. AR, MA, ARMA モデルによる予測 9. R による日次データの取り扱いについて 10. AIC と BIC の計算についてについて説明する 0. R をインスツールする ( 学校の PC にはすでにインスツールしてある ) 自分の PC などに統計ソフト R をインスツールするには (Windows 版 ) http://cran.md.tsukuba.ac.jp/bin/windows/base/ に行き 2 行目にある Download R 3.0.0 for Windows をクリックして (3.0.0 などの数字は変わっている可能性あり ) ダウンロード( どこかに保存して実行 ) (Mac 版 ) 多少複雑 http://aoki2.si.gunma-u.ac.jp/r/begin.html を参照 1. データを読み込む以下では read.table() 関数によるデータの読み込みについて説明する 1.1 データの用意テキスト形式のファイルを用意する ( 拡張子が.txt のファイル ) 以後では tsdata.txt というファイルが用意してあるものとして話を進める ( 講義のホームページのところにあります ) tsdata.txt ファイルをメモ帳で開くと ## 左から日付 ( 月と西暦下 2 桁 ) TOPIX 実効為替レート 鉱工業生産指数) date, topix, exrate, indprod Jan-75, 276.09, 29.13, 47.33 Feb-75, 299.81, 29.7, 46.86 Mar-75, 313.5, 29.98, 46.24 のようになっている 1 行目にコメント 2 行目に変数の名前が入っており 3 行目からデータが始まっている 1.2 作業ディレクトリの変更 R の画面のメニュー バーから ファイル ディレクトリの変更 によってデータ (tsdata.txt) が置いてあるディレクトリを指定する 確認のため この資料は私のゼミおよび講義で R の使用法を説明するために作成した資料です ホームページ上で公開しており 自由に参照して頂いて構いません ただし 内容について 一応検証してありますが 間違いがあるかもしれません 間違いがあった場合でもそれによって生じるいかなる損害 不利益について責任は負いかねますますのでご了承下さい 1

> dir() と入力すると 現在の作業ディレクトリにあるファイルが全て表示されるので そこに tsdata.txt があるか確認する 1.3 read.table( ) 関数による読み込み次のコマンドを実行する > tsdata = read.table("tsdata.txt", header=true, skip= 1) 3 番目の引数は 1 行目のコメントデータを読み込まない (skip する ) 事を R に知らせている (skip = k で最初の k 行を読み込まないようにする ) 2 番目の引数 header=true は実際に読み込むことになる最初の行に 各データの名前 (data, topix, exrate,.. 等の変数名 ) がヘッダーとして記述されていることを R に知らせるための指示である ( もし 各データ系列の名前 ( 変数名 ) がなく 数字の実データから始まっていれば header=false とする ) これにより tsdata という名前のデータのセット ( 正確には R ではデータフレームという ) が作成される (tsdata とコマンドすると確認できます ) > head(tsdata, 5) と入力すると (head( 変数名,k) というのはその変数の最初の k 行を表示する関数 ) date topix exrate indprod 1 Jan-75 276.09 29.13 47.33 2 Feb-75 299.81 29.70 46.86 3 Mar-75 313.50 29.98 46.24 4 Apr-75 320.57 29.80 47.33 5 May-75 329.65 29.79 47.33 のように最初の 5 行目まで出力される date が上から下に行くにつれて新しくなっている事に注意 以下に述べる方法は全てデータがこのように並べてある事を想定している 2. データをプロットする以下では plot( ) 関数によるデータのプロットの仕方について説明する 2.1 plot( ) 関数によるデータのプロットここでは tsdata の topix をプロットしてみよう > plot(tsdata$topix,type="l") ("l" は小文字のエルである事に注意 ) 以下のようなグラフが出力される ちなみに "l" というのは line の l でグラフを実線で書くことを意味している このほかには "p" などとすると ( これは point の p) 点によってプロットされたグラフが出力される どのようなグラフが出力可能かは help(plot) で ( オンライン上で ) 確認できる またコマンド help( 関数名 ) によってその関数に関するヘルプをオンライン上で見る事もできる 2

2.2 ts() 関数による時系列オブジェクトの作成上のグラフの X 軸は単純にデータの番号を表している ここで topix は時系列データなので X 軸もそれに対応して年 月 日などで表示したい このような場合 ts() 関数を用いて データが時系列データである事を R に認識させる > topix = ts(tsdata$topix, start=c(1975,1), frequency=12) と入力する これはこの topix のデータが月次データである事を R に認識させるコマンドである start=c(1975,1) はデータが 1975 年の 1 月から始まる事を意味している frequency=12 はデータが月次のデータである事を示している ( 年次データであれば frequency=1, 4 半期データであれば frequency=4 とする ) 再び plot( ) 関数によって > plot(topix,type = "l", xlab="year", main="topix") でグラフを描くと 今回は以下のようなグラフが出力される xlab="year" という引数は X 軸のラベルを year にするという事 (Y 軸ラベルの変更は ylab=" " で行う ) main="topix" はグラフタイトルを TOPIX にするという事 ) 3. 変化率の計算 3.1 変化率の定義による計算ある変数 x t の時点 t 1 から時点 t にかけての変化率 r t は xt x r t x t 1 t 1 100 3

と定義される ( 単位を % にするために 100 を掛けている ) R を用いてこれを計算する 時系列オブジェクトの差をとる diif( ) 関数と期をずらした ラグ をとる関数の lag( ) 関数を用いる > topixrate1 = diff(topix)/lag(topix, k=-1)*100 と入力する ( plot(topixrate1,type="l") でプロットしてみよう ) 3.2 対数階差による計算変化率は ( 自然 ) 対数の階差によって ( 実用上十分な精度で ) 近似することができる ある変数 x t の時点 t 1 から時点 t にかけての変化率 r t は r (logx t t log x t 1) 100 で近似できる R を用いてこれを計算する 対数は log( ) 関数によって計算できる > topixrate2 = diff(log(topix))*100 と入力する ( plot(topixrate2,type="l") でプロットしてみよう ) 3.3 図を並べて表示する 図を重ねて表示する先程の topixrate1 と topixrate2 を並べてプロットするには par(.) 関数を用いる まずプロット画面を上と下に 2 つに分割する : > par(mfcol=c(2,1)) (par(mfcol=c(n,m)) でプロット画面を n 行 m 列に分割する ) 次に topixrate1 と topixrate2 をプロットする > plot(topixrate1, type="l") > plot(topixrate2, type="l") 図が並べて表示される 次に topixrate1 と topixrate2 を重ねてプロットしてみよう まず先程 2 1 に分割したものをもとの 1 1 に戻す : > par(mfcol=c(1,1)) 次に topixrate1 をプロットする > plot(topixrate1,type="l",ylab="rate",ylim=c(-20,20)) ここで ylim =c(a, b) は Y 軸の範囲を 20 から 20 に制限することを意味する (X 軸の制限は xlim=c(a,b) で行える ) この図に上書きするには > par(new=t) とする ここで topixrate2 のプロットを上書きするとこの 2 つはほとんど等しいので重なってしまって区別がつかないので topixrate2 に 5 を足したものをプロットする > plot(topixrate2+5,type="l",col=2,ylab="rate",ylim=c(-20,20)) ここで col=2 はプロットした線の色を赤にするためのものである ( 数値を変えると色が変わる ) 4. 標本平均 標本自己相関 標本共分散の計算 4.1 標本平均の計算 R で標本平均を計算するには mean() 関数を使う topixrate2 の平均を計算するには > mean(topixrate2) と入力する 結果は > mean(topixrate2) [1] 0.3950173 4

となる 4.2 標本自己相関の計算 コレログラムの作成 R で標本自己相関を計算するには acf() 関数を使う topixrate2 の標本自己相関を計算するには > acf(topixrate2,lag.max=20,main="topix 変化率のコレログラム ") と入力する コレログラムが自動的に出力される ( 点線は 95% 信頼区間である ) lag.max=20 は 20 次までの自己相関を計算するという事である 計算結果を変数として保存するには > acftopixrate2=acf(topixrate2,lag.max=20) と入力する 結果を見るには > acftopixrate2= acftopixrate2$acf と入力する ( これは同時に計算結果に acftopixrate2 という名前を付けたという事 ) 結果は > head(acftopixrate2, 6) [1] 1.00000000 0.30779994 0.06824984 0.03529433 0.06801588 0.03130508 となる 4.3 標本自己共分散を計算する再び acf() 関数を用いて > acf(topixrate2,type="covariance",lag.max=20,main="topix 変化率の共分散 ") と入力する 計算結果を変数として保存するには > acvftopixrate2=acf(topixrate2,type= "covariance",lag.max=20) とすればよい さらに > acvftopixrate2=acvftopixrate2$acf とし 標本自己共分散に acvftopixrate2 という名前を付けておく 結果は > head(acvftopixrate2,6) [1] 16.9843193 5.2277724 1.1591771 0.5994501 1.1552034 0.5316956 のようになる 5

( 以下は同じことを違うやり方でやったものです 以下は単に練習のためですので 普段は上記の方法でやって下さい ) 標本自己共分散を計算するには標本自己相関に 0 次の自己共分散 ( つまり定常分散 ) の推定値を掛ければよい R で標本分散を計算するには var( ) 関数を使う topixrate2 の標本分散を計算するには > var(topixrate2) と入力する 結果は > var(topixrate2) [1] 17.03124 となる 標本分散は T 1 で割っているので (T は観測数 ) (T 1)/T を掛けなくてはならない T を調べるには length( ) 関数を用いる topixrate2 の観測数を調べるには > length(topixrate2) と入力する 363 となるはずである これらより標本自己共分散は acvftopixrate2 = (362/363)*var(topixrate2)*acftopixrate2 により計算される ( * は掛け算を意味するコマンド ) ( これは同時に計算結果に acvftopixrate2 という名前も付けている ) 結果は > head(acvftopixrate2, 6) [1] 16.9843193 5.2277724 1.1591771 0.5994501 1.1552034 0.5316956 となる 5 自己相関の検定 Ljung-Box 統計量の計算自己相関の検定は先ほどのコレログラムの図において 95% 信頼区間の外に出ていれば自己相関 0 の帰無仮説を (5% 有意水準で ) 棄却できる R で Ljung-Box 検定を行うには Box.text() 関数を用いる 例えば topixrate2 の Ljung-Box 統計量 Q(20) を計算するには > Box.test(topixrate2, lag=20, type="ljung-box") と入力する ここで lag= 20 とは Ljung-Box 統計量 Q(m) において m = 20 とするという事である すると出力結果として Box-Ljung test data: topixrate2 X-squared = 50.1781, df = 20, p-value = 0.0002088 のように出力される X-squared が Ljung-Box 統計量の値である Q(m) は帰無仮説のもとで自由度 m のカイ二乗分布に従う p-value とは X-squared の値の帰無仮説のもとでのパーセント点でありこれが 0.05 以下であれば帰無仮説を棄却できる 6. AR, MA, ARMA モデルの推定 R で ARMA モデルを最尤推定すには arima() 関数を用いる topixrate2 に ARMA(2, 1) モデルを当てはめた最尤推定は > tr2arma21= arima(topixrate2, order=c(2,0,1)) で行う事ができる ( ちなみに tr2arma21 の tr は topix rate の略 この名前は好きなように決められる ) ここで order=c(2,0,1) の 2 と 1 はそれぞれ AR 部分の次数と MA 部分の次数を表している (ARMA モデルの推定では 2 番目の引数は常に 0 にする ) R の arima() 関数は正確な尤度関数に基づいて推定している ( 条件付き最尤推定ではない ) 推定結果として >tr2arma21 Call: 6

arima(x = topixrate2, order = c(2, 0, 1)) Coefficients: ar1 ar2 ma1 intercept 0.1530 0.0207 0.1674 0.3996 s.e. 0.8186 0.2620 0.8168 0.2902 sigma^2 estimated as 15.34: log likelihood = -1010.72, aic = 2031.43 と出力される 2 列目がそれぞれのパラメータの出力結果 (intercept とは切片の事 ) 3 列目が標準誤差である siguma^2 とは攪乱項 (ε t ) の推定値 log likelihood は対数尤度の値 aic は AIC の値である AR MA モデルを推定するにはそれぞれ MA の次数や AR の次数を 0 にすればよい 以下は topixrate2 の AR(1) モデルの推定結果である > tr2ar1 = arima(topixrate2,order=c(1,0,0)) > tr2ar1 Call: arima(x = topixrate2, order = c(1, 0, 0)) Coefficients: ar1 intercept 0.3106 0.401 s.e. 0.0501 0.298 sigma^2 estimated as 15.36: log likelihood = -1010.9, aic = 2027.79 7. AR, MA, ARMA モデルの次数の選択 ( AIC, BIC の計算 ) AIC は ARMA モデルの推定結果として自動的に出力される BIC は AIC 2k + log(t )k で計算することができる (AIC や BIC の定義は講義スライドで確認 ) ここで T は標本数 k は推定したパラメーターの数である ( これは AR と MA の次数の和 +2 で計算される AR(1) モデルであれば AR(1) の係数と切片と攪乱項の分散の 3 つ ) 先ほどの ARMA(2,1) モデルと AR(1) モデルについて AIC は推定結果の tr2arma21 と tr2ar1 に既に含まれている ( 推定結果の出力のところにも出ているが ) これらは > tr2arma21aic = tr2arma21$aic (ARMA(2, 1) モデルの AIC) > tr2ar1aic = tr2ar1$aic (AR(1) モデルの AIC) によって別個に取り出すことができる 答えはそれぞれ > tr2arma21aic [1] 2031.43 > tr2ar1aic [1] 2027.791 となる BIC を計算するには > tr2arma21bic = tr2arma21$aic-2*5+log(363)*5 (ARMA(2,1) モデルの BIC) > tr2ar1bic = tr2ar1$aic-2*3+log(363)*3 (AR(1) モデルの BIC) と入力すればいい ( 公式参照 : ARMA(p, q) モデルの場合は aic から 2*(p+q+2) を引いて log(t)*(p+q+2) を足せばよい ここで T はサンプル数 ) 答えはそれぞれ > tr2arma21bic [1] 2050.902 > tr2ar1bic [1] 2039.474 7

となっている 8. AR, MA, ARMA モデルによる予測 R で AR, MA, ARMA モデルによる h 期先予測を行うには predict( ) 関数を用いる topixrate2 に ARMA(2, 1) モデルの推定結果を用いて ( データの終点から )20 期先予測を行うには > tr2arma21.pred = predict(tr2arma21,n.ahead=20) と入力する 予測値に tr2arma21hat と名前を付けるには > tr2arma21hat = tr2arma21.pred$pred と入力する topixrate2 の直近 3 年 (36 個 ) の観測値とそれ以降の予測値をプロットするには ( データの終点が 2005 年の 4 月なので ) > topixrate2.3y = ts(topixrate2[328:363],start=c(2002,5),frequency=12) > plot(topixrate2.3y,type="l",xlim=c(2002,2007),ylab="%", xlab="year", main="topix の変化率 ") > lines(tr2arma21hat,lty=1,col=2) と入力する ( lines() は図に線を書き込んでいくコマンド lty は線の種類 col は線の色を指定する ここの番号を変えるといろいろな線の種類と色が使用できる 上記はそれぞれ 1( 実線 ) と 2( 赤 ) を使用 ) ここで topixrate2.3y が直近 3 年間のデータである 信頼区間をプロットするには > sig =tr2arma21.pred$se > tr2arma21hatl = tr2arma21hat-1.96*sig > lines(tr2arma21hatl, lty=1, col=4) > tr2arma21hatu = tr2arma21hat+1.96*sig > lines(tr2arma21hatu, lty=1, col=4) と入力する ここで sig は予測の標準誤差を計算している 下のような図が出力される 9. R による日次データの取り扱いについて日次データを R で取り扱うのは プロット以外は特にやっかいな事はない 例えば nikkei2008.txt にあるデータであれば > nikkei2008 = read.table("nikkei2008.txt",header=t,skip=1) と読み込み head() 関数で確認すると > head(nikkei2008,3) 8

日付終値 1 2008/1/4 14691.41 2 2008/1/7 14500.55 3 2008/1/8 14528.67 となっている このうち使うのは終値のデータだけなので > nikkei = nikkei2008$ 終値 とすれば終値だけを取り出せて > head(nikkei,10) [1] 14691.41 14500.55 14528.67 14599.16 14388.11 14110.79 13972.63 13504.51 [9] 13783.45 13861.29 となるので あとはこの nikkei ( の対数階差による収益率 ) に対して自己相関 相関を計算して いけばよい 例えば 対数階差の収益率は ) > nikkeirate=diff(log(nikkei))*100 > head(nikkeirate,5) [1] -1.3076390 0.1937359 0.4840054-1.4561822-1.9462418 自己相関は > acfnikkeirate=acf(nikkeirate,lag.max=20) などで計算できる 上でみたようにデータの分析自体は日次データでも同じであるが 株価のような日次データをプ ロットするのはなかなかにやっかいである というのは株価のような日次データは土日や祝日が 観測されないので ( 土日がないだけなら わりと簡単に対処できるが 祝日の存在が厄介 ) ts() 関数で時系列オブジェクトにするときに frequency がうまく設定できず プロットすると微妙に日 にちと観測データがずれてしまうのである プロット自体は > plot(nikkei2008$ 終値,type="l") とすればできるが x 軸のメモリが日次にならない 10. AIC と BIC の計算について AIC と BIC の計算をする際 例えば AR と MA の時数を最大 5 までとして計算するとしよう しか しながら AR と MA の次数を最大 5 とした場合 可能な組み合わせとして それぞれの次数が 0, 1,, 5 と 6 つあるので 6 6 = 36 と合計 36 回も異なった次数の ARMA モデルを推定しなけれ ばならず 大変である これに対処する方法として R の for 関数 を使うと推定をいっぺんにや る事ができ 便利である 以下 for 関数について説明する TOPIX の収益率のデータが rate という変数として既に R に認識されているとしよう ( 以下では topixrate2 に rate という名前を付けたとする ( > rate = topxirate2 とすればよい ) この時このデータに対して ARMA(p, q) モデルを推定するには ( 結果を armapq という名前を付けて保存するとして ) > armapq = arima(rate, order=c(p, 0, q)) 9

とすればよい (p と q は具体的な数字を入れて下さい ) またこの場合の AIC は > (aic=armapq$aic) とすれば出力される ( 括弧をつけると計算結果がすぐに出力される ) これを 36 回繰り返すのは大 変である よって例えば AR の次数をとりあえず p = 0 に固定して MA の次数だけを q = 0 から 5 まで変化させて推定し その AIC を表示したいときには ( コマンドが少し長くなるが ) > p=0; for (q in 0:5){armapq=arima(rate,order=c(p,0,q)); aic=armapq$aic; cat("p =",p, "q =",q, "aic =", aic, "\n")} と打ち込んでエンターキーを押せばよい ( ここでの は実際に打ち込むとバックスラッシュで表示さ れるだろう ) すると p = 0 q = 0 aic = 2062.271 p = 0 q = 1 aic = 2029.069... p = 0 q = 5 aic = 2033.102 のように出力される ここで p = 0 を p = 1 にすれば p を 1 に固定して q を変化させて計算する また p = 0 から 5 まで変化させたものもいっぺんに出力したい場合は > for (p in 0:5) for (q in 0:5){armapq=arima(rate,order=c(p,0,q)); aic=armapq$aic; cat("p =",p,"q =",q,"aic =",aic, "\n")} とする事もできる ( これは結果が出力されるまで少し時間がかかるかもしれない また警告メッセー ジが出ると思うが これは気にしないでよい ) さらに BIC も同時に計算して出力したい場合は > T=length(rate) > for (p in 0:5) for (q in 0:5){armapq=arima(rate,order=c(p,0,q)); aic=armapq$aic; bic=aic-2*(p+q+2)+log(t)*(p+q+2); cat("p =",p, "q =",q, "aic =", aic, "bic =",bic, "\n")} とすればよい ( これもおそらく出力まで時間がかかる ) ここで length(x) は x のデータの個数を返す R の関数である 10