¿Es mejor diferenciar una serie (suponiendo que la necesite) antes de usar un Arima O mejor usar el parámetro d dentro de Arima?
Me sorprendió cuán diferentes son los valores ajustados dependiendo de qué ruta se tome con el mismo modelo y datos. ¿O estoy haciendo algo incorrectamente?
install.packages("forecast")
library(forecast)
wineindT<-window(wineind, start=c(1987,1), end=c(1994,8))
wineindT_diff <-diff(wineindT)
#coefficients and other measures are similar
modA<-Arima(wineindT,order=c(1,1,0))
summary(modA)
modB<-Arima(wineindT_diff,order=c(1,0,0))
summary(modB)
#fitted values from modA
A<-forecast.Arima(modA,1)$fitted
#fitted from modB, setting initial value to the first value in the original series
B<-diffinv(forecast.Arima(modB,1)$fitted,xi=wineindT[1])
plot(A, col="red")
lines(B, col="blue")
AÑADIR:
Tenga en cuenta que estoy diferenciando la serie una vez y ajustando arima (1,0,0), luego estoy ajustando arima (1,1,0) a la serie original. Estoy (creo) invirtiendo la diferencia en los valores ajustados para la arima (1,0,0) en el archivo diferenciado.
Estoy comparando los valores ajustados, no las predicciones.
Aquí está la gráfica (el rojo es arima (1,1,0) y el azul es el arima (1,0,0) en la serie diferenciada después de volver a la escala original):
Respuesta a la respuesta del Dr. Hyndman:
1) ¿Puede ilustrar en el código R lo que necesitaría hacer para que los dos valores ajustados (y presumiblemente los pronósticos) coincidan (permitiendo una pequeña diferencia debido a su primer punto en su respuesta) entre Arima (1,1, 0) y Arima (1,0,0) en la serie diferenciada manualmente? Supongo que esto tiene que ver con la media no incluida en modA, pero no estoy completamente seguro de cómo proceder.
? ¿Estás diciendo que estoy "indiferenciando" incorrectamente?
fuente
Respuestas:
Hay varios problemas aqui.
Si primero diferencia, entonces
Arima()
ajustará un modelo a los datos diferenciados. Si dejaArima()
hacer la diferenciación como parte del procedimiento de estimación, utilizará un difuso previo para la inicialización. Esto se explica en el archivo de ayuda paraarima()
. Por lo tanto, los resultados serán diferentes debido a las diferentes formas en que se maneja la observación inicial. No creo que haga mucha diferencia en términos de la calidad de la estimación. Sin embargo, es mucho más fácil dejar deArima()
manejar la diferencia si desea pronósticos o valores ajustados en los datos originales (no diferenciados).modB
modA
Arima()
include.mean
fuente
A veces es necesario eliminar los medios locales para hacer que la serie sea estacionaria. Si la serie original tiene un acf que no se extingue, esto puede deberse a un cambio de nivel / paso en la serie. El remedio es reducir la serie.
RESPUESTA A LA OFERTA:
La forma de obtener los mismos resultados / valores ajustados es después de diferenciar físicamente la serie oroiginal (Y (t) para obtener la primera diferencia (dely), estimar un AR (1) sin una constante. Esto equivale a ajustar un modelo OLS de la serie forma dely (t) = B1 * dely (t-1) + a (t) SIN una intercepción. Los valores ajustados de este modelo, adecuadamente integrados del orden 1 (creo) le darán los valores ajustados de un modelo; [ 1-B] [AR (1)] Y (t) = a (t). La mayoría de las piezas de software, con la notable excepción de AUTOBOX NO LE PODRÁ estimar un modelo AR (1) sin una constante. Aquí está el ecuación para dely = + [(1- .675B * 1)] ** - 1 [A (T)] mientras que la ecuación para Y fue
[(1-B * 1)] Y (T) = + [(1- .676B * 1)] ** - 1 [A (T)]. Tenga en cuenta el error de redondeo causado por la diferenciación física de Y. Tenga en cuenta que cuando la diferenciación está vigente (en el modelo) O no, el usuario puede seleccionar si desea incluir o no la constante. El proceso normal es incluir una constante para un modelo ARIMA estacionario (es decir, no diferenciado) e incluir opcionalmente una constante cuando la diferencia está en el modelo. Parece que el enfoque alternativo (Arima) fuerza una constante en un modelo estacionario que en mi opinión ha causado su dilema.
fuente
No sé por qué habría una diferencia en los resultados a menos que de alguna manera diferencies más de una manera que de otra. para un ARIMA (p, d, q) las diferencias d se hacen primero antes de cualquier ajuste del modelo. Entonces el modelo estacionario ARMA (p, q) se ajusta a las series diferenciadas. La suposición es que después de la eliminación de las tendencias polinómicas en la serie, la serie restante es estacionaria. El número de diferencias corresponde al orden del polinomio que desea eliminar. Entonces, para una tendencia lineal, solo toma una diferencia, para una tendencia cuadrática, toma dos diferencias. No estoy de acuerdo con la mayoría de lo que se dijo en la respuesta de John.
fuente
Una razón para diferenciar una serie I (1) es hacerla estacionaria. Suponiendo que tiene la especificación correcta para el modelo ARIMA, los residuos del modelo tendrán los componentes de promedio móvil y autorregresivo eliminados y deben ser estacionarios. A ese respecto, puede tener sentido utilizar los residuos para el modelo, en lugar de diferenciar. Sin embargo, en circunstancias en las que tiene muchos datos que cree que son aproximadamente I (1), algunas personas simplemente diferenciarán los datos en lugar de estimar el modelo ARIMA por completo. El modelo ARIMA puede adaptarse a una gran cantidad de problemas de series temporales en los que puede no tener sentido la diferencia. Por ejemplo, si los datos experimentan reversión a la media, esto no siempre puede ser apropiado para la diferencia, ya que puede no ser I (1).
fuente