R: IRF в модели SVAR, не может отображать указанную модель
Я делаю анализ SVAR (структурная векторная авторегрессия), в котором я хочу построить IRF (функции импульсной характеристики). Мой временной ряд имеет длину 137, и я использую только 3 переменные, кроме того, я выбираю 1 задержку при указании модели VAR.
Указание модели 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
Из того, что я прочитал в другом вопросе, эта ошибка обычно возникает, когда недостаточно наблюдений, ведущих к переобучению, но в моем примере это не должно быть проблемой, так как у меня достаточно наблюдений.
Поскольку 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)