Я заметил нечто странное, подгоняя модель ARMA с помощью функций arma{tseries} и arima{stats} в R.
Существует радикальное различие в процедурах оценки, принятых двумя функциями: фильтром Калмана в arima{stats} и оценкой ML в arma{tseries}.
Учитывая разницу в процедурах оценки между двумя функциями, нельзя ожидать, что результаты будут радикально отличаться для двух функций, если мы будем использовать одни и те же временные ряды.
Ну кажется, что они могут!
Создайте приведенный ниже временной ряд и добавьте 2 выброса.
set.seed(1010)
ts.sim <- abs(arima.sim(list(order = c(1,0,0), ar = 0.7), n = 50))
ts.sim[8] <- ts.sim[12]*8
ts.sim[35] <- ts.sim[32]*8
Соответствуйте модели ARMA с помощью двух функций.
# Works perfectly fine
arima(ts.sim, order = c(1,0,0))
# Works perfectly fine
arma(ts.sim, order = c(1,0))
Изменить уровень таймсерии в 1 миллиард раз
# Introduce a multiplicative shift
ts.sim.1 <- ts.sim*1000000000
options(scipen = 999)
summary(ts.sim.1)
Установите модель ARMA, используя 2 функции:
# Works perfectly fine
arma(ts.sim.1, order = c(1,0))
# Does not work
arima(ts.sim.1, order = c(1,0,0))
## Error in solve.default(res$hessian * n.used, A): system is
computationally singular: reciprocal condition number = 1.90892e-19
Я обнаружил эту проблему, когда программное обеспечение SAS успешно смогло запустить процедуру proc x12 для проведения теста на сезонность, но та же функция на R выдала мне ошибку, указанную выше. Это заставило меня задуматься и посмотреть на результаты SAS со скептицизмом, но оказалось, что это может быть как-то связано с arima{stats}.
Может ли кто-нибудь попытаться уточнить причину вышеуказанной ошибки, которая ограничивает нас в подгонке модели с использованием arima{stats}?