Erros em otimização ao ajustar o modelo de arima em R


8

Estou usando o método arima do pacote de estatísticas R com minha série temporal de 17376 elementos. Meu objetivo é obter o valor do critério AIC, observei no meu primeiro teste isso:

 ts <- arima(serie[,1], order = c(2,1,1), seasonal = list(order=c(2,0,1),period = 24), 
         method = "CSS", optim.method = "BFGS",)
> ts$coef
           ar1        ar2        ma1       sar1       sar2       sma1 
     0.8883730 -0.0906352 -0.9697230  1.2047580 -0.2154847 -0.7744656 
    > ts$aic
[1] NA

Como você pode ver, o AIC não está definido. Sobre a AIC, a "Ajuda" em R disse que só poderia ser usada com "ML". No entanto, isso acontece:

> ts <- arima(serie[,1], order = c(2,1,1), seasonal = list(order=c(2,0,1),period = 24), 
          method = "ML", optim.method = "BFGS",)

Error en optim(init[mask], armafn, method = optim.method, hessian = TRUE,  : 
  non-finite finite-difference value [1]

Plus: warning messages lost
In log(s2) : There have been NaNs

Eu não entendo o que está acontecendo. Também gostaria de saber mais sobre o parâmetro "método de ajuste".


1
Você pode incluir a representação gráfica dos seus dados?
Mvctas #

3
Extrair os parâmetros da solução CSS e passá-los como valores iniciais para o solucionador de ML (por meio do optim.controlargumento) teria uma boa chance de evitar esse problema. Não testei isso porque você não fornece um exemplo reproduzível da dificuldade.
whuber

@whuber esta é a direção certa. Em alguns livros de econometria, diz-se que os valores dos parâmetros da solução CSS são obtidos primeiro como valores iniciais para a função objetivo completa do ML.
Analista

Respostas:


3

Ajustar o modelo ARIMA com máxima verossimilhança (método = "ML") requer a otimização (minimização) da verossimilhança negativa do modelo ARIMA sobre os parâmetros. Isso acaba sendo um problema de otimização restrito, pois os parâmetros devem resultar em um modelo estacionário. Essa restrição não linear é contabilizada com a probabilidade de log negativa retornando Inf (infinito) se a restrição não for atendida. Se o MLE estiver próximo do limite da avaliação de restrição da probabilidade logarítmica negativa perto do MLE, poderá retornar o infinito. Como o hessiano é obtido com diferenciação numérica avaliando a probabilidade logarítmica negativa próxima ao MLE, isso pode resultar no erro de diferença finita não finita que você obteve. Portanto, se o hessian não for necessário, coloque hessian = FALSE. De outra forma,


2

Editado: se você fizer o voto negativo, pode explicar por quê? Eu sou novo aqui.

Eu tive o mesmo problema. Procurei on-line e encontrei uma solução sugerida em outro lugar no Cross Validated. Pensei em compartilhar aqui caso alguém quisesse.

Acabei de adicionar um "method =" CSS "" ao meu modelo e funcionou. Por exemplo:

model = Arima(x, order=c(1,1,1), seasonal=list(order=c(1,1,1), period=12), xreg=xreg, 
              method="CSS") 

Aqui está a referência:
auto.arima e Arima (pacote de previsão)


Agora vejo sua resposta e talvez para seus dados. Funciona, mas para meus dados não, meu principal objetivo era saber por que o erro da minha pergunta ocorreu e por que o método ML não funciona no meu caso ou em outro
Cyberguille

3
Vejo que isso resolve o problema, mas como você usará os valores da AIC para comparar diferentes modelos, por exemplo, ARIMA (1,1,2), a menos que você use o método ML ou CSS-ML? "A teoria da AIC exige que a probabilidade logarítmica tenha sido maximizada: enquanto a AIC pode ser calculada para modelos não ajustados pela máxima probabilidade, seus valores da AIC não devem ser comparados". stat.ethz.ch/R-manual/R-devel/library/stats/html/AIC.html O OP requer valor de AIC.
precisa saber é o seguinte

0

Você parece ter problemas com a convergência de algoritmos. Isso acontece algumas vezes com a otimização numérica.

Aqui está o link para o artigo da Wikipedia sobre este método de otimização específico:

http://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm


3
sim, eu sei que isso às vezes acontece, mas por que ela funciona com o método de montagem com css e com ml não, e por css não faz AIC
Cyberguille

1
@GuillermoAyranTorresLores O CSS é baseado na probabilidade condicional e não produz o mesmo valor de probabilidade que a função de probabilidade incondicional produz quando é otimizada para os mesmos parâmetros.
Analyst

1
O @GuillermoAyranTorresLores tenta alterar o problema de otimização de uma maneira que primeiro aceite valores de parâmetros da solução CSS como valores iniciais para a função de objetivo completo do ML.
Analyst
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.