В R (2.15.2) я однажды установил ARIMA (3,1,3) для временного ряда и один раз ARMA (3,3) для разностных временных рядов. Установленные параметры отличаются, что я приписал методу подбора в ARIMA.
Кроме того, подгонка ARIMA (3,0,3) к тем же данным, что и ARMA (3,3), не приведет к идентичным параметрам, независимо от используемого мной метода подгонки.
Я заинтересован в том, чтобы определить, откуда взялась разница и с какими параметрами я могу (если вообще смогу) соответствовать ARIMA, чтобы получить те же коэффициенты соответствия, что и ARMA.
Пример кода для демонстрации:
library(tseries)
set.seed(2)
#getting a time series manually
x<-c(1,2,1)
e<-c(0,0.3,-0.2)
n<-45
AR<-c(0.5,-0.4,-0.1)
MA<-c(0.4,0.3,-0.2)
for(i in 4:n){
tt<-rnorm(1)
t<-x[length(x)]+tt+x[i-1]*AR[1]+x[i-2]*AR[2]+x[i-3]*AR[3]+e[i-1]*MA[1]+e[i-2]*MA[2]+e[i-3]*MA[3]
x<-c(x,t)
e<-c(e,tt)
}
par(mfrow=c(2,1))
plot(x)
plot(diff(x,1))
#fitting different versions. What I would like to get is fit1 with ARIMA()
fit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)
fit2<-arima(x,c(3,1,3),include.mean=F)
fit3<-arima(diff(x,1),c(3,0,3),include.mean=F)
fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F)
fit5<-arima(diff(x,1),c(3,0,3),method="CSS",include.mean=F)
cbind(fit1$coe,fit2$coe,fit3$coe,fit4$coe,fit5$coe)
Редактировать: Использование условной суммы квадратов довольно близко, но не совсем там. Спасибо за подсказку для fit1!
Edit2: я не думаю, что это дубликат. Пункты 2 и 3 решают проблемы, отличные от моих, и даже если я переопределю инициализацию, упомянутую в пункте 1,
fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F,init=fit1$coe)
Я все еще получаю разные коэффициенты
fit1
имеет только 1 MA и 1 AR параметр: вы имели в видуfit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)
?arima
упоминаетсяn.cond
аргумент, указывающий количество наблюдений в начале серии, которые следует игнорировать при расчете - возможно, это все. (Что не так с использованием максимального правдоподобия в любом случае?)Ответы:
Есть три незначительных проблемы по
tseries::arma
сравнению с тем,stats::arima
которые приводят к несколько отличному результату в модели ARMA для использования разностных рядовtseries::arma
и ARIMA вstats::arima
.Начальные значения коэффициентов:
stats::arima
устанавливает нулевые начальные коэффициенты AR и MA, аtseries::arma
для получения начальных значений коэффициентов используется процедура, описанная в Hannan и Rissanen (1982).Шкала целевой функции: целевая функция в
tseries::arma
возвращает значение условной суммы квадратов, RSS;stats::arima
возвращается0.5*log(RSS/(n-ncond))
.Алгоритм оптимизации: по умолчанию используется Nelder-Mead, в
tseries::arma
то время какstats::arima
используется алгоритм BFGS.Последний из них можно изменить с помощью аргумента
optim.method
вstats::arima
а другие потребуют модификации кода. Ниже я показываю сокращенную версию исходного кода (минимальный код для этой конкретной модели), дляstats::arima
которой три упомянутые выше проблемы изменены так, чтобы они были такими же, как вtseries::arma
. После решения этих проблемtseries::arma
получается тот же результат, что и в .Минимальная версия
stats::arima
(с изменениями, упомянутыми выше):Теперь сравните обе процедуры и убедитесь, что они дают один и тот же результат (требуется ряд,
x
сгенерированный ОП в теле вопроса).Используя начальные значения, выбранные в
tseries::arima
:Используя начальные значения, выбранные в
stats::arima
(нули):источник
Насколько я могу судить, разница полностью связана с условиями МА. То есть, когда я сопоставляю ваши данные только с терминами AR, ARMA разностного ряда и ARIMA соглашаются.
источник