IRF (インパルス応答関数) をプロットする SVAR (構造ベクトル自動回帰) 分析を行っています。私の時系列の長さは 137 で、3 つの変数のみを使用します。さらに、VAR モデルを指定するときに 1 つのラグを選択します。
VAR モデルの指定は問題なく機能しますが、要約すると次のエラー メッセージが表示されます。
VAR_reduced <- VAR(VAR_data_1, p = 1, type = "both")
summary(VAR_reduced)
Error in solve.default(Sigma) :
system is computationally singular: reciprocal condition number = 1.03353e-16
別の質問で読んだことから、このエラーは通常、過剰適合につながる十分な観測がない場合に発生しますが、私の例では、十分な観測があるため、これは問題にはなりません。
summary コマンドを実行しない場合、R はエラー メッセージを表示しないため、以下を使用して IRF を計算することができます。
plot(irf(VAR_reduced, n.ahead = 40))
しかし、資産以外の変数からの反応がないため、プロットは直感に反するように見えます。したがって、私の推測では、エラー メッセージは私が間違っていたが、まだ気づいていない何かを示唆しているのだと思います。
これは正しいですか?つまり、そのエラーを解決する必要がありますか?それとも、私の IRF はこれとは関係ありませんか?
完全を期すために、すべてのコードを次に示します。
library(quantmod)
library(urca)
library(vars)
library(tseries)
getSymbols('CPILFESL',src='FRED')
getSymbols('INDPRO',src='FRED')
getSymbols('WALCL',src='FRED')
CPI <- ts(CPILFESL, frequency = 12, start = c(1957,1))
output <- ts(INDPRO, frequency = 12, start = c(1919,1))
assets <- as.xts(WALCL)
assets <- to.monthly(assets, indexAt='yearmon', drop.time = TRUE)
assets <- ts(assets[,4], frequency = 12, start = c(2002,12))
assets <- window(assets, start = c(2008,9), end = c(2020,1))
CPI <- window(CPI, start = c(2008,9), end = c(2020,1))
output <- window(output, start = c(2008,9), end = c(2020,1))
loutput <- log(output)
lCPI <- log(CPI)
data_0 <- cbind(loutput, lCPI, assets)
plot(data_0)
VAR_data_1 <- ts.intersect(diff(loutput), diff(lCPI), diff(assets, differences = 2))
VAR_reduced <- VAR(VAR_data_1, p = 1, type = "both")
summary(VAR_reduced)