auto.arima avisa NaNs produzidos em erro padrão

9

Meus dados são uma série temporal da população empregada, L, e o período, ano.

n.auto=auto.arima(log(L),xreg=year)
summary(n.auto)
Series: log(L) 
ARIMA(2,0,2) with non-zero mean 

Coefficients:
         ar1      ar2      ma1     ma2  intercept    year
      1.9122  -0.9567  -0.3082  0.0254    -3.5904  0.0074
s.e.     NaN      NaN      NaN     NaN     1.6058  0.0008

sigma^2 estimated as 1.503e-06:  log likelihood=107.55
AIC=-201.1   AICc=-192.49   BIC=-193.79

In-sample error measures:
           ME          RMSE           MAE           MPE          MAPE 
-7.285102e-06  1.225907e-03  9.234378e-04 -6.836173e-05  8.277295e-03 
         MASE 
 1.142899e-01 
Warning message:
In sqrt(diag(x$var.coef)) : NaNs produced

Por que isso acontece? Por que o auto.arima seleciona o melhor modelo com erro padrão desses coeficientes ar * ma * Não é um número? Afinal, este modelo selecionado é válido?

Meu objetivo é estimar o parâmetro n no modelo L = L_0 * exp (n * ano). Alguma sugestão de uma abordagem melhor?

TIA.

dados:

L <- structure(c(64749, 65491, 66152, 66808, 67455, 68065, 68950, 
69820, 70637, 71394, 72085, 72797, 73280, 73736, 74264, 74647, 
74978, 75321, 75564, 75828, 76105), .Tsp = c(1990, 2010, 1), class = "ts")
year <- structure(1990:2010, .Tsp = c(1990, 2010, 1), class = "ts")
L
Time Series:
Start = 1990 
End = 2010 
Frequency = 1 
 [1] 64749 65491 66152 66808 67455 68065 68950 69820 70637 71394 72085 72797
[13] 73280 73736 74264 74647 74978 75321 75564 75828 76105
Ivy Lee
fonte
Você pode postar alguns dados para que possamos replicar o problema?
22812 Rob Hyndman
@RobHyndman dados atualizados
Ivy Lee
Digite dput(L)e cole a saída. Isso facilita muito a replicação.
Zach

Respostas:

11

A soma dos coeficientes de RA é próxima de 1, o que mostra que os parâmetros estão próximos à borda da região de estacionariedade. Isso causará dificuldades na tentativa de calcular os erros padrão. No entanto, não há nada errado com as estimativas, portanto, se tudo o que você precisa é o valor de , você o tem.L0

auto.arima()são necessários alguns atalhos para tentar acelerar o cálculo e, quando ele fornece um modelo que parece suspeito, é uma boa idéia desativar esses atalhos e ver o que você obtém. Nesse caso:

> n.auto <- auto.arima(log(L),xreg=year,stepwise=FALSE,approx=FALSE)
> 
> n.auto
Series: log(L) 
ARIMA(2,0,0) with non-zero mean 

Coefficients:
         ar1      ar2  intercept    year
      1.8544  -0.9061    11.0776  0.0081
s.e.  0.0721   0.0714     0.0102  0.0008

sigma^2 estimated as 1.594e-06:  log likelihood=107.19
AIC=-204.38   AICc=-200.38   BIC=-199.15

Este modelo é um pouco melhor (uma AIC menor, por exemplo).

Rob Hyndman
fonte
11
e se os erros padrão não puderem ser calculados e o modelo precisar ser usado para previsão? Isso causará intervalos de confiança inválidos e irrealisticamente pequenos em uma previsão? No meu caso (uma série temporal de 35), usar approximation=FALSEe stepwise=FALSEainda produzir NaNs para SEs de coeficientes.
Mihael 12/01
4

Seu problema surge de uma super especificação. Um modelo simples de primeira diferença com um AR (1) é suficiente. Nenhuma estrutura MA ou transformação de energia é necessária. Você também pode simplesmente modelar isso como um segundo modelo de diferença, uma vez que o coeficiente ar (1) é próximo a 1,0. Um gráfico do Real / ajuste / previsão é insira a descrição da imagem aquie um gráfico residual  possível outlier / inlier no período 7com a equação! insira a descrição da imagem aquiinsira a descrição da imagem aqui. Em resumo, a estimativa está sujeita à Especificação do Modelo, que neste caso é encontrada em falta ["mene mene tekel upharsin"]. Sério, sugiro que você se familiarize com as estratégias de identificação de modelos e não tente afundar seus modelos com uma estrutura injustificada. As vezes menos é mais ! A parcimônia é um objetivo! Espero que isto ajude ! Para responder ainda mais às suas perguntas "Por que o auto.arima seleciona o melhor modelo com erro padrão desses coeficientes ar * ma * Não é um número? A resposta provável é que a solução de espaço de estado não é tudo o que poderia ser devido ao modelos supostos que ele tenta. Mas isso é apenas o meu palpite. A verdadeira causa da falha pode ser sua suposição de um log xform. As transformações são como drogas ... algumas são boas para você e outras não. As transformações de energia devem ser usadas SOMENTE para dissociar o valor esperado do desvio padrão dos resíduos. Se houver ligação, uma transformação Box-Cox (que inclui logs) poderá ser apropriada. Puxar uma transformação por trás das orelhas pode não ser uma boa ideia.

Afinal, este modelo selecionado é válido? Definitivamente não !

IrishStat
fonte
0

Eu já enfrentei problemas semelhantes. Por favor, tente jogar com optim.control e optim.method. Esses NaNs são sqrt de valores negativos dos elementos diagonais da matriz de Hesse. O ajuste do ARIMA (2,0,2) é um problema não linear e a otimização parecia convergir para um ponto de sela (onde o gradiente é zero, mas a matriz de Hesse não é definida positivamente) em vez da probabilidade máxima.

0x2207
fonte