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)

0 ответов

Другие вопросы по тегам