8 votos

¿qué pasa si la serie residual de arima() no parece normal?

Mi serie temporal es aquí y mi código es aquí .

Ajuste un modelo a una serie con arima() en R con ARMA(5,5) y regresión sobre algunas covariables.

fit5 = arima(x, order=c(5,0,5), xreg=covaraites, include.mean=F)

Ahora estoy comprobando si el modelo ajustado es adecuado. La serie residual parece:

enter image description here

Las series residuales pasan la prueba de Ljung Box con un valor p de 0,3859. El ACF y el PACF de la serie residual son los siguientes (parece que no está correlacionado, ¿verdad?):

enter image description hereenter image description here

El qqplot de la serie residual es el siguiente:

qqnorm(fit5$residuals, asp = 1)
qqline(fit5$residuals, asp=1)

enter image description here

Se ve bien dentro de (-2, 2). ¿Me pregunto si no está bien que sea gaussiano?

El modelo IIC, arma requiere que su serie residual sea un ruido blanco pero no necesariamente gaussiano. Pero arima() ajusta el modelo utilizando MLE (suponiendo que las series residuales son gaussianas). Entonces, si mi serie residual no puede ser tomada como gaussiana, ¿cómo debo revisar mi modelo y qué función en R puedo utilizar para ajustar a mi serie temporal?

11voto

Aksakal Puntos 11351

Cuando se utiliza el MLE se aplica una hipótesis de distribución, en este caso probablemente gaussiana. Por lo tanto, si la suposición gaussiana no se cumple, la función de probabilidad está mal definida y la MLE no es fiable.

El gráfico QQ no tiene buen aspecto, muestra colas más gordas que las que tendría una distribución normal. Se puede comprobar el supuesto de normalidad utilizando una serie de pruebas, como la prueba de Jarque Bera. Seguro que todas rechazan la normalidad.

Lo primero y más sencillo es probar la transformación logarítmica. El aspecto de tu QQ-plot me recuerda a la distribución lognormal. Usted podría mirar el histograma de los residuos y lognormal ajuste, o simplemente tomar el logaritmo de la variable re-fit ARIMA, a continuación, busque en los residuos, apuesto a que se verá mucho más normal.

Sé que algunas personas en este tablero sugerirán que se ignore la no normalidad de los residuos, y que se actúe como si nunca te importara "porque tienes un montón de (1200) observaciones". Mi postura al respecto es que si utilizas la normalidad de alguna manera, como en tu función de verosimilitud, y el supuesto de normalidad no se cumple, entonces no puedes utilizar el modelo.

Le sugiero que utilice los modelos que no asumen la normalidad en este caso. Por ejemplo, podrías intentar ajustar errores con distribución t. En MATLAB hay una opción para usar la distribución t en arima clase, también podría haber una opción en R. En cualquier caso, sería fácil modificar el código de R, todo lo que necesitas es una nueva función de probabilidad, que se puede encontrar en varios lugares como Ayuda de MATLAB .

Otra opción es representar ARIMA en forma de espacio de estados, véase por ejemplo Shumway y Stoffer capítulo 6, entonces utilice errores no gaussianos, lo que se explica en la sección 6.10, particularmente en el ejemplo 6.23.

0 votos

Gracias. (1) la más sencilla que has dicho es tomar el logaritmo de la serie temporal original y luego ajustar con el mismo uso de arima() de nuevo, o tomar el logaritmo de la serie residual y modelar la serie residual (mediante el mismo uso de arima() ?)? (2)La última opción por ejemplo 6.23 en el libro de Shunway y Stoffer no ofrece el código R, ¿verdad?

0 votos

(1) Si su serie es positiva, tome el logaritmo de la variable dependiente, luego ajuste arima a la serie transformada. (2) El libro viene con ejemplos de R, y el paquete de R con el código y los datos, echa un vistazo a su sitio web. Es un gran libro sobre series temporales, y tienen la secuela sobre modelización no lineal. También tienen la versión gratuita del libro, todo en su sitio web.

0 votos

No encuentro la versión gratuita de su modelado no lineal. ¿Me lo pierdo? Por cierto, mi serie temporal es aquí y mi código es aquí .

5voto

Owen Fraser-Green Puntos 642

Es posible que tenga que identificar las variables de intervención, como los pulsos, los pulsos estacionales, los cambios de nivel o las tendencias horarias locales. Si no se tratan, inflan la varianza de los errores y se obtiene un sesgo a la baja en la FCA de los errores, lo que sugiere incorrectamente la aleatoriedad. Además, es posible que tenga que incorporar rezagos de sus predictores para tener en cuenta adecuadamente su impacto. Además, es posible que tenga que utilizar GLS (mínimos cuadrados ponderados) o una transformada de potencia para hacer frente a la varianza no constante de los errores. Por último, los parámetros de su modelo podrían cambiar con el tiempo, lo que requeriría una segmentación de los datos, tal y como sugiere la prueba de Chow.

Hay software comercial para hacer estas cosas o puedes escribirlo tú mismo si tienes suficiente tiempo y habilidades. Además, es posible que haya efectos de día de la semana u otra estructura determinista, como un efecto de día del mes o de semana del mes, que deben incorporarse para que la prueba de aleatoriedad sea más correcta.

0 votos

Gracias. No puedo permitirme un software comercial. Trabajando en R. Así que algún código R existente será agradable. :)

1voto

Adam Puntos 21

Debería consultar el paquete "rugarch", y en particular la clase de ajustes "ARFIMA". Esto le permite especificar una amplia clase de distribuciones, incluyendo aquellas con sesgo y colas pesadas:

http://cran.r-project.org/web/packages/rugarch/rugarch.pdf

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X