Когда я моделирую временной ряд ARIMA со смещением, а затем подгоняю модель ARIMA к моделируемым данным, я не возвращаю модель, которая выглядит как истинная.
Без дрейфа она работает нормально подогнанные коэффициенты достаточно близки к истинным значениям:
set.seed(1)
X_t <- arima.sim(n = 10000, model = list(ar = c(.7, .2), ma = c(.6), sd = .1))
arima(X_t, order = c(2, 0, 1))
# Call:
# arima(x = X_t, order = c(2, 0, 1))
#
# Coefficients:
# ar1 ar2 ma1 intercept
# 0.7279 0.1677 0.5818 -0.126
# s.e. 0.0240 0.0233 0.0204 0.153
#
# sigma^2 estimated as 1.022: log likelihood = -14299.17, aic = 28608.34
Но когда я добавляю дрейф, коэффициенты оказываются совершенно неправильными:
X_t <- arima.sim(n = 10000, model = list(ar = c(.7, .2), ma = c(.6), sd = .1))
delta_t <- rnorm(10000, mean = .05, sd = .2)
X_t <- X_t + cumsum(delta_t)
arima(X_t, order = c(2, 1, 1))
# Call:
# arima(x = X_t, order = c(2, 1, 1))
#
# Coefficients:
# ar1 ar2 ma1
# 1.0368 -0.1172 -0.9433
# s.e. 0.0202 0.0102 0.0181
#
# sigma^2 estimated as 3.216: log likelihood = -20028.62, aic = 40065.25
Я также пытался arima(diff(X_t), order = c(2, 0, 1))
, но не повезло.
Я неправильно настроил симулированный дрейф? Подгонка модели не так? Или это ожидаемое поведение по какой-то причине?