Я пытаюсь оценить простые скользящие ARMA (1, 1) -модели по временным рядам годовых темпов инфляции. Набор данных охватывает около 50 лет квартальных данных. В каждом квартале я хочу оценить модель ARMA (1, 1), используя данные за последние 12 лет, прогнозировать на 10 лет вперед, усреднять по прогнозам, затем переходить к следующему кварталу и повторять этот процесс. Цель состоит в том, чтобы создать плавную линию прогнозируемых уровней инфляции.
Используя функцию arima () из пакета stats, я никогда не мог оценить модель в течение всех кварталов, но всегда получал некоторую ошибку. Я использую этот код ниже:
result <- matrix(NA, nrow = NROW(data), ncol = 1)
for (i in n_lookback:NROW(data)) {
temp_fit <- arima(data[(i - n_lookback + 1):i],
order = c(1, 0, 1))
result[i] <- mean(predict(temp_fit, n.ahead = n_ahead)$pred)
}
Я использовал различные спецификации в функции arima, но обычно получаю следующие ошибки:
- Стандартный ARMA (1, 1):
Error in solve.default(res$hessian * n.used, A) :
system is computationally singular: reciprocal condition number = 7.06241e-21
Использование optim.method = "L-BFGS-B":
Error in optim(init[mask], armafn, method = optim.method, hessian = TRUE, :
L-BFGS-B needs finite values of 'fn'
Оценка ARIMA (1, 1, 1) :
non-stationary AR part from CSS
Только с использованием оценки максимального правдоподобия (метод = "ML"):
Error in solve.default(res$hessian * n.used, A) :
Lapack routine dgesv: system is exactly singular: U[1,1] = 0
Есть ли у вас какие-либо рекомендации о том, как я мог оценить модели в R? Поскольку я не делаю никаких выводов, а просто пытаюсь получить некоторые прогнозы, возможно, есть альтернативная функция, которая может решить мою проблему.
Заранее спасибо!