#1章
1章のRコードの解答例です。
・par(mfrow = c(2,2))
・library(lubridate) data$X = ymd(data$X) %データの構造を割と柔軟に解釈して変換して時系列に変換してくれる。
・Box.test
の3つは覚えときたい。
カバン検定(Box.test)はH_0:全ての自己相関係数が0 を棄却する形で自己相関を見つける。(実質F検定)
OLSにおけるF検定と構造は同じだけど、偏自己相関ではなく自己相関を求めているので形がちょっと変?(重回帰ではなくそれぞれの_に行っているイメージ)。また誤差項の形に仮定をおいていないのでexactにはカイ二乗分布には従わない。(漸近的に自由度mのカイ二乗分布に従うので検定可能。)
(偏自己相関の検定は沖本には載っていなかったが、F検定で対応可能?怪しいので調べておく。)
mの調整によってよって高次の自己相関と検出力のトレードオフがあるので注意。グラフを見ながら見当をつけてやる必要がありそう。(m = log(T)が目安)
#コード
setwd("Okimoto/1")
library(tidyverse)
library(gdata)
library(lubridate)
library(rugarch)
data = read.xls("economicdata.xls")
data$X = ymd(data$X)
par(mfrow = c(3,3))
names = colnames(data)
col_index = 0
x = data$X
for (col_name in colnames(data)){
col_index = col_index + 1
y = data[,col_name] #$で撮ろうとするとうまくいかない
if (col_index != 0){
plot(x,y)
title(col_name)
}
}
data = mutate(data,topix_ln = log(topix),exrate_ln = log(exrate), indprod_ln = log(indprod) ) %>%
mutate(topix_diff = topix_ln - dplyr::lag(topix_ln,n=1) ,exrate_diff = exrate_ln - dplyr::lag(exrate_ln,n=1),indprod_diff = indprod_ln - dplyr::lag(indprod_ln,n=1))
par(mfrow = c(2,2))
plot(x,data$topix_diff,type="l")
plot(x,data$exrate_diff,type="l")
plot(x,data$indprod_diff,type="l")
Box.test(data$topix_diff, lag = 5)
Box.test(data$exrate_diff, lag = 10)
Box.test(data$indprod_diff, lag = 10)
for文のループ内で$で参照しようとするとうまくいかなかった。ループしてる変数で参照するときは素直に[]で指定してあげた方が良さそう。
#アウトプット
> Box.test(data$topix_diff, lag = 10)
Box-Pierce test
data: data$topix_diff
X-squared = 45.416, df = 10, p-value = 1.829e-06
> Box.test(data$exrate_diff, lag = 10)
Box-Pierce test
data: data$exrate_diff
X-squared = 53.189, df = 10, p-value = 6.868e-08
> Box.test(data$indprod_diff, lag = 10)
Box-Pierce test
data: data$indprod_diff
X-squared = 58.148, df = 10, p-value = 8.107e-09
p-value = P(H_1|データ, H_0) は十分小さいので、棄却できる。(自己相関はどこかには存在。)
#reference
Rによる基本的な時系列処理のまとめ
http://user.keio.ac.jp/~nagakura/R/ts_R1.pdf