No R (2.15.2), ajustei uma vez um ARIMA (3,1,3) em uma série temporal e uma vez um ARMA (3,3) em séries temporais que diferiam uma vez. Os parâmetros ajustados diferem, o que eu atribuí ao método de ajuste no ARIMA.
Além disso, o ajuste de um ARIMA (3,0,3) nos mesmos dados que o ARMA (3,3) não resultará em parâmetros idênticos, independentemente do método de ajuste usado.
Estou interessado em identificar de onde vem a diferença e com quais parâmetros posso (se houver) ajustar o ARIMA para obter os mesmos coeficientes de ajuste do ARMA.
Código de exemplo para demonstrar:
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)
Edit: Usando a soma condicional de quadrados chega bem perto, mas não está lá. Obrigado pela dica para o fit1!
Edit2: Eu não acho que isso seja uma duplicata. Os pontos 2 e 3 tratam de problemas diferentes dos meus e, mesmo que eu substitua a inicialização mencionada no ponto 1 por
fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F,init=fit1$coe)
Eu ainda recebo coeficientes diferentes
fit1
possui apenas 1 parâmetro MA e 1 AR: você quis dizerfit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)
?arima
mencionam umn.cond
argumento que fornece o número de observações no início da série a serem ignoradas no cálculo - talvez seja isso. (O que há de errado em usar a máxima probabilidade, afinal?)Respostas:
Existem três questões menores em
tseries::arma
comparação com asstats::arima
que levam a um resultado ligeiramente diferente no modelo ARMA para as séries diferenciadas usandotseries::arma
e ARIMAstats::arima
.Valores
stats::arima
iniciais dos coeficientes: define os coeficientes iniciais de AR e MA como zero, enquantotseries::arma
o procedimento descrito em Hannan e Rissanen (1982) é empregado para obter valores iniciais dos coeficientes.Escala da função objetivo: a função objetivo
tseries::arma
retorna o valor das somas condicionais de quadrados, RSS;stats::arima
retorna0.5*log(RSS/(n-ncond))
.Algoritmo de otimização: por padrão, o Nelder-Mead é usado
tseries::arma
, enquantostats::arima
emprega o algoritmo BFGS.O último pode ser alterado através do argumento
optim.method
emstats::arima
mas os outros exigiriam a modificação do código. Abaixo, mostro uma versão resumida do código-fonte (código mínimo para este modelo em particular) parastats::arima
onde os três problemas mencionados acima são modificados para que sejam os mesmos detseries::arma
. Após abordar esses problemas, o mesmo resultadotseries::arma
obtido em é obtido.Versão mínima de
stats::arima
(com as alterações mencionadas acima):Agora, compare os dois procedimentos e verifique se o resultado é o mesmo (requer a série
x
gerada pelo OP no corpo da pergunta).Usando os valores iniciais escolhidos em
tseries::arima
:Usando os valores iniciais escolhidos em
stats::arima
(zeros):fonte
Tanto quanto posso dizer, a diferença é inteiramente devida aos termos da MA. Ou seja, quando eu ajusto seus dados apenas com termos de AR, o ARMA da série diferenciada e o ARIMA concordam.
fonte