第12章 VARモデル
先に出版社サイトよりデータをダウンロードする.
# サポートファイルへのリンク
curl <- "https://www.yuhikaku.co.jp/static_files/05385_support12.zip"
# ダウンロード保存用フォルダが存在しない場合, 作成
if(!dir.exists("downloads")){
dir.create("downloads")
}
cdestfile <- "downloads/support12.zip"
download.file(curl, cdestfile)
# データ保存用フォルダが存在しない場合, 作成
if(!dir.exists("data")){
dir.create("data")
}
# WSL上のRで解凍すると文字化けするので、Linuxのコマンドを外部呼び出し
# Windowsの場合は別途コマンドを用いる.
if(.Platform$OS.type == "unix") {
system(sprintf('unzip -n -Ocp932 %s -d %s', "downloads/support12.zip", "./data"))
} else {
print("Windowsで解凍するコマンドを別途追加せよ.")
}
必要なライブラリを読み込む.
library(tidyverse)
library(readxl)
# library(estatapi)
# library(hpfilter)
library(urca)
# library(tsm)
# library(fredr)
# library(modelsummary)
library(vars)
## Loading required package: strucchange
##
## Attaching package: 'strucchange'
## The following object is masked from 'package:stringr':
##
## boundary
##
## Attaching package: 'vars'
## The following object is masked from 'package:tidyquant':
##
## VAR
図12-1 短期金利と長期金利 (月次データ)
Excelファイルを読み込んで, ggplotでグラフを描画する. ついでにこれらのデータの単位根の有無をADF検定を行って検証しよう.
Fig_1_longshortspread <- read_excel("data/12_第12章/Fig_1_longshortspread.xlsx")
Fig_1_longshortspread %>%
mutate(year = ym(year)) %>%
ggplot(aes(x = year)) +
geom_line(aes(y = `短期金利(コールレート)`, color = "短期金利(コールレート)")) +
geom_line(aes(y = `長期金利(10年物国債利回り)`, color = "長期金利(10年物国債利回り)")) +
geom_line(aes(y = `長短金利スプレッド`, color = "長短金利スプレッド")) +
labs(x = "年", y = element_blank(), color = element_blank()) +
theme(legend.position = c(0, 1), legend.justification = c(0, 1))
# 金利データの単位根仮説をADF検定で検証する.
ur.df(Fig_1_longshortspread$`短期金利(コールレート)`, type = "none", selectlags = "BIC", lags = 12) %>% summary()
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.64175 -0.06502 0.03139 0.11778 0.43751
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.003445 0.004449 -0.774 0.440708
## z.diff.lag1 -0.067028 0.101101 -0.663 0.508982
## z.diff.lag2 0.212236 0.094476 2.246 0.027042 *
## z.diff.lag3 0.350114 0.094067 3.722 0.000338 ***
## z.diff.lag4 0.213497 0.099975 2.135 0.035348 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2169 on 93 degrees of freedom
## Multiple R-squared: 0.2653, Adjusted R-squared: 0.2258
## F-statistic: 6.717 on 5 and 93 DF, p-value: 2.196e-05
##
##
## Value of test-statistic is: -0.7743
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.58 -1.95 -1.62
ur.df(Fig_1_longshortspread$`長期金利(10年物国債利回り)`, type = "none", selectlags = "BIC", lags = 12) %>% summary()
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.65136 -0.16450 0.01044 0.12222 0.68789
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.004023 0.004471 -0.900 0.37060
## z.diff.lag1 0.298045 0.096944 3.074 0.00278 **
## z.diff.lag2 0.190889 0.096777 1.972 0.05156 .
## z.diff.lag3 -0.173768 0.093855 -1.851 0.06731 .
## z.diff.lag4 -0.316452 0.095376 -3.318 0.00130 **
## z.diff.lag5 0.213862 0.094863 2.254 0.02654 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2351 on 92 degrees of freedom
## Multiple R-squared: 0.2959, Adjusted R-squared: 0.25
## F-statistic: 6.443 on 6 and 92 DF, p-value: 1.072e-05
##
##
## Value of test-statistic is: -0.8998
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.58 -1.95 -1.62
urca::ur.df()
で情報基準により自動的にラグ次数を選択するには, lags
引数にラグの最大値を指定して, selectlags
引数に用いたい情報基準(AICかBIC)を選択する.
短期金利と長期金利両者ともに著者らの分析通り, 単位根仮説は棄却されない結果となった.
実証例12.1 金利の期間構造とグレンジャー因果性
RにおいてVARモデルはvars
パッケージによって実装されている.
まずラグ次数の選択をvars::VARselect()
により行う.
data_ex12.1 <- Fig_1_longshortspread %>%
mutate(`短期金利(コールレート)_delta` = `短期金利(コールレート)` - lag(`短期金利(コールレート)`)) %>%
dplyr::select(`短期金利(コールレート)_delta`, 長短金利スプレッド) %>%
filter(!is.na(`短期金利(コールレート)_delta`))
VARselect(data_ex12.1, type = "const")
## $selection
## AIC(n) HQ(n) SC(n) FPE(n)
## 7 4 4 7
##
## $criteria
## 1 2 3 4 5
## AIC(n) -5.317777655 -5.481275149 -5.550500437 -5.702062904 -5.723977661
## HQ(n) -5.254516100 -5.375839223 -5.402890142 -5.512278238 -5.492018625
## SC(n) -5.161467444 -5.220758130 -5.185776611 -5.233132270 -5.150840220
## FPE(n) 0.004903816 0.004164712 0.003887295 0.003342333 0.003272536
## 6 7 8 9 10
## AIC(n) -5.753368894 -5.771554115 -5.728072747 -5.663724846 -5.601100587
## HQ(n) -5.479235489 -5.455246339 -5.369590602 -5.263068330 -5.158269702
## SC(n) -5.076024646 -4.990003059 -4.842314884 -4.673760175 -4.506929109
## FPE(n) 0.003181478 0.003129155 0.003275103 0.003502157 0.003740952
VARselect()
ではAIC, Hannan-Quinn Criterion (HQ), Schwarz Criterion (SC, BICのこと), Final Prediction Error Criterion (FPE)の4種類の情報基準が示される.
著者らの分析通り, BICではラグ次数4が選択された.
model_ex12.1 <- VAR(data_ex12.1, p = 4, type = "const")
causality(model_ex12.1, cause = "長短金利スプレッド")
## $Granger
##
## Granger causality H0: 長短金利スプレッド do not Granger-cause
## 短期金利.コールレート._delta
##
## data: VAR object model_ex12.1
## F-Test = 3.0461, df1 = 4, df2 = 194, p-value = 0.01829
##
##
## $Instant
##
## H0: No instantaneous causality between: 長短金利スプレッド and
## 短期金利.コールレート._delta
##
## data: VAR object model_ex12.1
## Chi-squared = 16.964, df = 1, p-value = 3.81e-05
こちらも著者らの分析通り, 5%有意水準で帰無仮説が棄却され (\(p = 0.01829\)), スプレッドがコールレートに対してグレンジャー因果性をもつことが示唆された.
実証例12.2 金利の期間構造とシムズの因果性検定
単純にlm()
関数でOLS推定を行ったあと, ラグ次数4を用いたHAC標準誤差をNeweyWest()
で計算し, 結果をcoeftest()
で表示する.
model_ex12.2 <- lm(長短金利スプレッド ~ lead(`短期金利(コールレート)_delta`) + `短期金利(コールレート)_delta` + lag(`短期金利(コールレート)_delta`) + lag(`短期金利(コールレート)_delta`, 2) + lag(`短期金利(コールレート)_delta`, 3) + lag(`短期金利(コールレート)_delta`, 4) + lag(`短期金利(コールレート)_delta`, 5) + lag(`短期金利(コールレート)_delta`, 6), data = data_ex12.1)
coeftest(model_ex12.2, NeweyWest(model_ex12.2, lag = 4))
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.668888 0.490634 1.3633 0.1760406
## lead(`短期金利(コールレート)_delta`) 1.027550 0.593169 1.7323 0.0864991
## `短期金利(コールレート)_delta` 0.443399 0.578951 0.7659 0.4456750
## lag(`短期金利(コールレート)_delta`) 0.058577 0.514292 0.1139 0.9095617
## lag(`短期金利(コールレート)_delta`, 2) -0.205387 0.375925 -0.5464 0.5861180
## lag(`短期金利(コールレート)_delta`, 3) -0.724291 0.251007 -2.8855 0.0048460
## lag(`短期金利(コールレート)_delta`, 4) -1.053343 0.264109 -3.9883 0.0001316
## lag(`短期金利(コールレート)_delta`, 5) -1.259267 0.346259 -3.6368 0.0004506
## lag(`短期金利(コールレート)_delta`, 6) -1.148366 0.320260 -3.5857 0.0005355
##
## (Intercept)
## lead(`短期金利(コールレート)_delta`) .
## `短期金利(コールレート)_delta`
## lag(`短期金利(コールレート)_delta`)
## lag(`短期金利(コールレート)_delta`, 2)
## lag(`短期金利(コールレート)_delta`, 3) **
## lag(`短期金利(コールレート)_delta`, 4) ***
## lag(`短期金利(コールレート)_delta`, 5) ***
## lag(`短期金利(コールレート)_delta`, 6) ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
リード変数の\(p\)-値をみると, 10%水準では帰無仮説が棄却できるが, 5%水準では棄却できない結果となった.
実証例12.3 南極のペンギンの数と日本のGDP
Excelファイルを読み込んで単回帰でOLS推定を行い, またそれぞれの変数についてADF検定も実行する.
## New names:
## • `` -> `...1`
model_ex12.3 <- lm_robust(実質GDP ~ アデリーペンギンの営巣数, data = Fig_2_penguin, se_type = "HC1")
summary(model_ex12.3)
##
## Call:
## lm_robust(formula = 実質GDP ~ アデリーペンギンの営巣数,
## data = Fig_2_penguin, se_type = "HC1")
##
## Standard error type: HC1
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|) CI Lower
## (Intercept) 223192.21 39866.693 5.598 3.862e-06 141883.55
## アデリーペンギンの営巣数 57.45 9.749 5.893 1.664e-06 37.57
## CI Upper DF
## (Intercept) 304500.87 31
## アデリーペンギンの営巣数 77.34 31
##
## Multiple R-squared: 0.5178 , Adjusted R-squared: 0.5022
## F-statistic: 34.73 on 1 and 31 DF, p-value: 1.664e-06
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29784.9 -4777.9 660.3 5961.9 14022.9
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.715e+04 1.998e+04 2.360 0.0252 *
## z.lag.1 -1.028e-01 6.269e-02 -1.640 0.1119
## tt 2.557e+02 4.634e+02 0.552 0.5854
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8623 on 29 degrees of freedom
## Multiple R-squared: 0.2613, Adjusted R-squared: 0.2104
## F-statistic: 5.129 on 2 and 29 DF, p-value: 0.01238
##
##
## Value of test-statistic is: -1.6395 11.0624 5.1294
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -4.15 -3.50 -3.18
## phi2 7.02 5.13 4.31
## phi3 9.31 6.73 5.61
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -844.85 -216.20 55.37 216.17 832.28
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 144.48628 313.51853 0.461 0.648
## z.lag.1 -0.00907 0.08634 -0.105 0.917
##
## Residual standard error: 374.9 on 30 degrees of freedom
## Multiple R-squared: 0.0003677, Adjusted R-squared: -0.03295
## F-statistic: 0.01103 on 1 and 30 DF, p-value: 0.917
##
##
## Value of test-statistic is: -0.105 1.4409
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.58 -2.93 -2.60
## phi1 7.06 4.86 3.94
図12-2 GDPとペンギンの数
異なるデータを同じ図にプロットするために, 先にアデリーペンギンの営巣数の数値をスケールした(参考).
Fig_2_penguin %>%
mutate(アデリーペンギンの営巣数 = アデリーペンギンの営巣数 * 600000 / 6000) %>% # 両軸表示用にスケール
pivot_longer(cols = c("実質GDP", "アデリーペンギンの営巣数")) %>%
ggplot(aes(x = ...1, y = value, colour = name)) +
geom_line() +
scale_y_continuous(sec.axis = sec_axis(~./600000 * 6000, name = "アデリーペンギンの営巣数")) +
scale_color_hue(name = element_blank(), labels = c("実質GDP", "アデリーペンギンの営巣数")) +
labs(x = element_blank(), y = "実質GDP") +
theme(legend.position = c(0, 1), legend.justification = c(0, 1))
図12-3 実験系列 (共和分)
Rでそれぞれ100個ずつ正規分布乱数を生成し, これをもとに\(X_t, Y_t\)の挙動をシミュレーションする.
# 再現性のために任意のシード値を設定
set.seed(634)
# 200個の正規分布乱数を生成 (系列相関なし)
data_fig12_3 <- data.frame(eps_1 = c(0, rnorm(100)), eps_2 = c(0, rnorm(100)))
X = c(0)
Y = c(0)
for (i in 2:101) {
X = c(X, X[i-1] + data_fig12_3$eps_2[i])
Y = c(Y, 0.5 * Y[i-1] + 0.5 * X[i-1] + data_fig12_3$eps_1[i])
}
data_fig12_3 %>%
mutate(X = X, Y = Y, index = 1:101) %>%
mutate(`Y - X` = Y - X) %>%
pivot_longer(cols = c("X", "Y", "Y - X")) %>%
ggplot(aes(x = index, y = value, colour = name)) +
geom_line() +
scale_color_hue(name = element_blank(), labels = c("X", "Y", "Y - X")) +
labs(x = element_blank(), y = element_blank()) +
theme(legend.position = c(0, 1), legend.justification = c(0, 1))
図12-4 実験系列 (見せかけの相関)
図12-3と同様にシミュレーションしてみよう.
# 再現性のために任意のシード値を設定
set.seed(63400)
# 200個の正規分布乱数を生成 (系列相関なし)
data_fig12_4 <- data.frame(eps_1 = c(0, rnorm(100)), eps_2 = c(0, rnorm(100)))
X = c(0)
Y = c(0)
for (i in 2:101) {
X = c(X, X[i-1] + data_fig12_4$eps_2[i])
Y = c(Y, Y[i-1] + data_fig12_4$eps_1[i])
}
data_fig12_4 %>%
mutate(X = X, Y = Y, index = 1:101) %>%
mutate(`Y - X` = Y - X) %>%
pivot_longer(cols = c("X", "Y", "Y - X")) %>%
ggplot(aes(x = index, y = value, colour = name)) +
geom_line() +
scale_color_hue(name = element_blank(), labels = c("X", "Y", "Y - X")) +
labs(x = element_blank(), y = element_blank()) +
theme(legend.position = c(0, 1), legend.justification = c(0, 1))
実証例12.4 金利の期間構造と共和分
urca::ur.df()
関数でADF検定を行うことができるが, 表12-1に示されたエングル=グレンジャー検定統計量ではなく通常のADF検定の臨界値が出力されるので直接有意性を確認する必要がある.
model_ex12.4 <- lm_robust(`長期金利(10年物国債利回り)` ~ `短期金利(コールレート)`, se_type = "HC1", data = Fig_1_longshortspread)
summary(model_ex12.4)
##
## Call:
## lm_robust(formula = `長期金利(10年物国債利回り)` ~
## `短期金利(コールレート)`, data = Fig_1_longshortspread,
## se_type = "HC1")
##
## Standard error type: HC1
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|) CI Lower
## (Intercept) 3.1418 0.10350 30.36 5.409e-55 2.9367
## `短期金利(コールレート)` 0.4602 0.02138 21.53 4.691e-41 0.4178
## CI Upper DF
## (Intercept) 3.3470 109
## `短期金利(コールレート)` 0.5025 109
##
## Multiple R-squared: 0.8223 , Adjusted R-squared: 0.8207
## F-statistic: 463.4 on 1 and 109 DF, p-value: < 2.2e-16
# 残差をADF検定
model_ex12.4$residuals <- Fig_1_longshortspread$`長期金利(10年物国債利回り)` - model_ex12.4$fitted.values
ur.df(model_ex12.4$residuals, type = "none", lags = 10, selectlags = "BIC") %>% summary()
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.53249 -0.14699 -0.02859 0.13579 0.73487
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.40010 0.06488 -6.167 1.60e-08 ***
## z.diff.lag1 0.40078 0.08763 4.573 1.42e-05 ***
## z.diff.lag2 0.24880 0.09815 2.535 0.0128 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2301 on 97 degrees of freedom
## Multiple R-squared: 0.3399, Adjusted R-squared: 0.3195
## F-statistic: 16.65 on 3 and 97 DF, p-value: 8.365e-09
##
##
## Value of test-statistic is: -6.1672
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.58 -1.95 -1.62
実証例12.5 南極のペンギンの数と日本の GDP (再考)
実証例12.4同様, 単位根検定の\(t\)統計量を直接エングル=グレンジャー検定統計量の臨界値と比較する.
model_ex12.3$residuals <- Fig_2_penguin$実質GDP - model_ex12.3$fitted.values
ur.df(model_ex12.3$residuals, type = "none", lags = 8, selectlags = "BIC") %>% summary()
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -65963 -10067 2921 13895 47616
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.22973 0.15961 -1.439 0.164
## z.diff.lag -0.03343 0.21488 -0.156 0.878
##
## Residual standard error: 25960 on 22 degrees of freedom
## Multiple R-squared: 0.108, Adjusted R-squared: 0.02688
## F-statistic: 1.331 on 2 and 22 DF, p-value: 0.2845
##
##
## Value of test-statistic is: -1.4393
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.62 -1.95 -1.61
実証例12.6 金利の期間構造と誤差修正モデル
Rでは誤差修正モデルはurca::ca.jo()
関数を用いてモデルを作成したのち, urca::cajorls()
によって推定できる.
推定結果の表示には自由度修正ホワイト標準誤差を用いるため, vcov(type = "HC1")
とし, coeftest()
を利用した.
data_ex12.6 <- Fig_1_longshortspread %>%
dplyr::select(`長期金利(10年物国債利回り)`, `短期金利(コールレート)`)
z <- ca.jo(data_ex12.6, ecdet = "none", K = 3, spec = "transitory")
model_ex12.6 <- cajorls(z)$rlm
coeftest(model_ex12.6, vcov = vcovHC(model_ex12.6, type = "HC1"))
##
## t test of coefficients:
##
## Estimate
## 長期金利.10年物国債利回り..d:ect1 -0.372652
## 長期金利.10年物国債利回り..d:constant 1.180830
## 長期金利.10年物国債利回り..d:長期金利.10年物国債利回り..dl1 0.492299
## 長期金利.10年物国債利回り..d:短期金利.コールレート..dl1 -0.052556
## 長期金利.10年物国債利回り..d:長期金利.10年物国債利回り..dl2 0.231438
## 長期金利.10年物国債利回り..d:短期金利.コールレート..dl2 0.033011
## 短期金利.コールレート..d:ect1 0.070754
## 短期金利.コールレート..d:constant -0.253916
## 短期金利.コールレート..d:長期金利.10年物国債利回り..dl1 0.096943
## 短期金利.コールレート..d:短期金利.コールレート..dl1 0.052543
## 短期金利.コールレート..d:長期金利.10年物国債利回り..dl2 0.010640
## 短期金利.コールレート..d:短期金利.コールレート..dl2 0.214962
## Std. Error t value
## 長期金利.10年物国債利回り..d:ect1 0.085786 -4.3440
## 長期金利.10年物国債利回り..d:constant 0.274475 4.3021
## 長期金利.10年物国債利回り..d:長期金利.10年物国債利回り..dl1 0.118653 4.1491
## 長期金利.10年物国債利回り..d:短期金利.コールレート..dl1 0.081289 -0.6465
## 長期金利.10年物国債利回り..d:長期金利.10年物国債利回り..dl2 0.131110 1.7652
## 長期金利.10年物国債利回り..d:短期金利.コールレート..dl2 0.089353 0.3694
## 短期金利.コールレート..d:ect1 0.065188 1.0854
## 短期金利.コールレート..d:constant 0.214596 -1.1832
## 短期金利.コールレート..d:長期金利.10年物国債利回り..dl1 0.099999 0.9694
## 短期金利.コールレート..d:短期金利.コールレート..dl1 0.089394 0.5878
## 短期金利.コールレート..d:長期金利.10年物国債利回り..dl2 0.097489 0.1091
## 短期金利.コールレート..d:短期金利.コールレート..dl2 0.091697 2.3443
## Pr(>|t|)
## 長期金利.10年物国債利回り..d:ect1 3.311e-05 ***
## 長期金利.10年物国債利回り..d:constant 3.886e-05 ***
## 長期金利.10年物国債利回り..d:長期金利.10年物国債利回り..dl1 6.928e-05 ***
## 長期金利.10年物国債利回り..d:短期金利.コールレート..dl1 0.51938
## 長期金利.10年物国債利回り..d:長期金利.10年物国債利回り..dl2 0.08052 .
## 長期金利.10年物国債利回り..d:短期金利.コールレート..dl2 0.71257
## 短期金利.コールレート..d:ect1 0.28031
## 短期金利.コールレート..d:constant 0.23947
## 短期金利.コールレート..d:長期金利.10年物国債利回り..dl1 0.33462
## 短期金利.コールレート..d:短期金利.コールレート..dl1 0.55799
## 短期金利.コールレート..d:長期金利.10年物国債利回り..dl2 0.91330
## 短期金利.コールレート..d:短期金利.コールレート..dl2 0.02100 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
実証例12.7 金利の期間構造と動学OLS推定
data_ex12.7 <- Fig_1_longshortspread %>%
mutate(`短期金利(コールレート)_delta` = `短期金利(コールレート)`- lag(`短期金利(コールレート)`))
model_ex12.7 <- lm(`長期金利(10年物国債利回り)` ~ `短期金利(コールレート)` + lead(`短期金利(コールレート)_delta`, 2) + lead(`短期金利(コールレート)_delta`) + `短期金利(コールレート)_delta` + lag(`短期金利(コールレート)_delta`) + lag(`短期金利(コールレート)_delta`, 2), data = data_ex12.7)
coeftest(model_ex12.7, NeweyWest(model_ex12.7, lag = 4))
##
## t test of coefficients:
##
## Estimate Std. Error t value
## (Intercept) 3.2376132 0.4006827 8.0802
## `短期金利(コールレート)` 0.4451627 0.0783879 5.6790
## lead(`短期金利(コールレート)_delta`, 2) 0.0901444 0.2328292 0.3872
## lead(`短期金利(コールレート)_delta`) 0.2899221 0.2275303 1.2742
## `短期金利(コールレート)_delta` 0.1311571 0.2334603 0.5618
## lag(`短期金利(コールレート)_delta`) 0.1087894 0.2302279 0.4725
## lag(`短期金利(コールレート)_delta`, 2) 0.0025645 0.1692078 0.0152
## Pr(>|t|)
## (Intercept) 1.615e-12 ***
## `短期金利(コールレート)` 1.359e-07 ***
## lead(`短期金利(コールレート)_delta`, 2) 0.6995
## lead(`短期金利(コールレート)_delta`) 0.2056
## `短期金利(コールレート)_delta` 0.5755
## lag(`短期金利(コールレート)_delta`) 0.6376
## lag(`短期金利(コールレート)_delta`, 2) 0.9879
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] 0.8104161
実証例12.8 金利の期間構造と動学OLS推定
ヨハンセン検定はurca::ca.jo()
関数により実装されている.
##
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: trace statistic , with linear trend
##
## Eigenvalues (lambda):
## [1] 0.22193097 0.02487239
##
## Values of teststatistic and critical values of test:
##
## test 10pct 5pct 1pct
## r <= 1 | 2.72 6.50 8.18 11.65
## r = 0 | 29.82 15.66 17.95 23.52
##
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
##
## 短期金利.コールレート._delta.l2
## 短期金利.コールレート._delta.l2 1.00000000
## 長短金利スプレッド.l2 0.02670481
## 長短金利スプレッド.l2
## 短期金利.コールレート._delta.l2 1.000000
## 長短金利スプレッド.l2 -2.448301
##
## Weights W:
## (This is the loading matrix)
##
## 短期金利.コールレート._delta.l2
## 短期金利.コールレート._delta.d -0.5630998
## 長短金利スプレッド.d -0.1086134
## 長短金利スプレッド.l2
## 短期金利.コールレート._delta.d -0.008896835
## 長短金利スプレッド.d 0.017756552
ecdet = "none"
と設定することで共和分に定数項・トレンド項がないモデルを指定できるはずだが, 実際はトレンド項があるモデルが推定された.
実証例12.10 沖縄返還と通貨切替え
## New names:
## • `` -> `...1`
data_ex12.10 <- OkiDat2 %>%
dplyr::select(-...1)
model_ex12.10 <- VAR(data_ex12.10) %>% BQ()
fevd(model_ex12.10, n.ahead = 20)$dlyratio
## dlyratio lnq
## [1,] 0.9260965 0.07390346
## [2,] 0.9211909 0.07880907
## [3,] 0.9213974 0.07860265
## [4,] 0.9208979 0.07910213
## [5,] 0.9206545 0.07934554
## [6,] 0.9204385 0.07956146
## [7,] 0.9202782 0.07972184
## [8,] 0.9201535 0.07984654
## [9,] 0.9200577 0.07994232
## [10,] 0.9199839 0.08001613
## [11,] 0.9199270 0.08007297
## [12,] 0.9198833 0.08011674
## [13,] 0.9198495 0.08015046
## [14,] 0.9198236 0.08017642
## [15,] 0.9198036 0.08019642
## [16,] 0.9197882 0.08021183
## [17,] 0.9197763 0.08022369
## [18,] 0.9197672 0.08023283
## [19,] 0.9197601 0.08023987
## [20,] 0.9197547 0.08024529
# 通貨切替え以前 (1956-1970)
data_ex12.10_pre <- OkiDat2 %>%
filter(...1 <= 1970) %>%
dplyr::select(-...1)
model_ex12.10_pre <- VAR(data_ex12.10_pre) %>% BQ()
fevd(model_ex12.10_pre, n.ahead = 20)$dlyratio
## dlyratio lnq
## [1,] 0.6448800 0.3551200
## [2,] 0.6319651 0.3680349
## [3,] 0.6348724 0.3651276
## [4,] 0.6335653 0.3664347
## [5,] 0.6339229 0.3660771
## [6,] 0.6337063 0.3662937
## [7,] 0.6337088 0.3662912
## [8,] 0.6336392 0.3663608
## [9,] 0.6336022 0.3663978
## [10,] 0.6335592 0.3664408
## [11,] 0.6335236 0.3664764
## [12,] 0.6334901 0.3665099
## [13,] 0.6334602 0.3665398
## [14,] 0.6334329 0.3665671
## [15,] 0.6334081 0.3665919
## [16,] 0.6333857 0.3666143
## [17,] 0.6333653 0.3666347
## [18,] 0.6333469 0.3666531
## [19,] 0.6333301 0.3666699
## [20,] 0.6333149 0.3666851