data <-c(88, 84, 85, 85, 84, 85, 83, 85, 88, 89, 91, 99, 104, 112, 126, 138, 146,151, 150, 148, 147, 149, 143, 132, 131, 139, 147, 150, 148, 145, 140, 134, 131, 131, 129, 126, 126, 132, 137, 140, 142, 150, 159, 167, 170, 171, 172, 172, 174, 175, 172, 172, 174, 174, 169, 165, 156, 142, 131, 121, 112, 104, 102, 99, 99, 95, 88, 84, 84, 87, 89, 88, 85, 86, 89, 91, 91, 94, 101, 110, 121, 135, 145, 149, 156, 165, 171, 175, 177, 182, 193, 204, 208, 210, 215, 222, 228, 226, 222, 220)
Почему модели ARMA, действующие на первых различиях данных, отличаются от соответствующих моделей ARIMA?
for (p in 0:5)
{
for (q in 0:5)
{
#data.arma = arima(diff(data), order = c(p, 0, q));cat("p =", p, ", q =", q, "AIC =", data.arma$aic, "\n");
data.arma = arima(data, order = c(p, 1, q));cat("p =", p, ", q =", q, "AIC =", data.arma$aic, "\n");
}
}
То же самое с Arima(data,c(5,1,4))
и Arima(diff(data),c(5,0,4))
в пакете прогнозов. Я могу получить желаемую консистенцию с
auto.arima(diff(data),max.p=5,max.q=5,d=0,approximation=FALSE, stepwise=FALSE, ic ="aic", trace=TRUE);
auto.arima(data,max.p=5,max.q=5,d=1,approximation=FALSE, stepwise=FALSE, ic ="aic", trace=TRUE);
но похоже, что обладатель минимальной оценки AIC для этих данных не был учтен алгоритмом auto.arima; следовательно, неоптимальный выбор ARMA (3,0) вместо ARMA (5,4), действующий на первые различия. Связанный с этим вопрос заключается в том, насколько две оценки AIC должны отличаться, прежде чем одна будет считать, что одна модель лучше, чем другая, имеет мало общего с программированием - наименьший владелец AIC должен, по крайней мере, рассматриваться / сообщаться, даже если 9 коэффициентов могут быть слишком много для прогноза из 100 наблюдений.
Мои вопросы по R:
1) Векторизованная версия двойного цикла, чтобы она работала быстрее?
2) Почему arima(5,1,4)
действие на данные отличается от действия arma(5,4)
на первых различиях данных? О каком из них сообщать?
3) Как мне отсортировать вывод AIC так, чтобы на первом месте был меньший?
Спасибо.