Comentarios: En primer lugar me gustaría decir un gran agradecimiento a la autora de la nueva tsoutliers paquete que implementa Chen y Liu detección de series temporales de valores atípicos que fue publicado en la Revista de la Asociación Americana de Estadística en 1993 en el software de código abierto .
El paquete detecta 5 tipos diferentes de valores atípicos iterativamente en datos de series de tiempo:
- Outlier aditivo (AO)
- Outlier de innovación (IO)
- Cambio de nivel (LS)
- Cambio temporal (TC)
- Cambio de nivel estacional (SLS)
Lo que es aún mejor es que este paquete implementa auto.arima del paquete de pronóstico, por lo que la detección de valores atípicos es perfecta. Además, el paquete produce gráficos agradables para una mejor comprensión de los datos de series temporales.
A continuación están mis preguntas:
Intenté ejecutar algunos ejemplos con este paquete y funcionó muy bien. Los valores atípicos aditivos y el cambio de nivel son intuitivos. Sin embargo, tenía 2 preguntas con respecto a la entrega de valores atípicos de cambio temporal y valores atípicos innovadores que no puedo entender.
Ejemplo de cambio atípico temporal:
Considere el siguiente ejemplo:
library(tsoutliers)
library(expsmooth)
library(fma)
outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)
El programa detecta correctamente un cambio de nivel y un cambio temporal en la siguiente ubicación.
Outliers:
type ind time coefhat tstat
1 LS 12 1935 37.14 3.153
2 TC 20 1943 36.38 3.350
A continuación se muestra la trama y mis preguntas.
- ¿Cómo escribir el cambio temporal en un formato de ecuación? (El cambio de nivel se puede escribir fácilmente como una variable binaria, en cualquier momento antes de 1935 / Obs 12 es 0 y en cualquier momento después de 1935 y después es 1.)
La ecuación para el cambio temporal en el manual del paquete y el artículo se da como:
- Mi segunda pregunta es sobre valores atípicos innovadores, nunca he encontrado
un valor atípico innovador en la práctica. Cualquier ejemplo numérico o un ejemplo de caso sería muy útil.
Editar: @Irishstat, la función tsoutliers hace un excelente trabajo en la identificación de valores atípicos y sugiere un modelo ARIMA apropiado. Mirando el conjunto de datos del Nilo, vea a continuación la aplicación de auto.arima y luego aplique tsoutliers (con valores predeterminados que incluyen auto.arima):
auto.arima(Nile)
Series: Nile
ARIMA(1,1,1)
Coefficients:
ar1 ma1
0.2544 -0.8741
s.e. 0.1194 0.0605
sigma^2 estimated as 19769: log likelihood=-630.63
AIC=1267.25 AICc=1267.51 BIC=1275.04
Después de aplicar la función tsoutliers, identifica un outlier LS y un outlier aditivo y recomienda un orden ARIMA (0,0,0).
nile.outliers <- tso(Nile,types = c("AO","LS","TC"))
nile.outliers
Series: Nile
ARIMA(0,0,0) with non-zero mean
Coefficients:
intercept LS29 AO43
1097.7500 -242.2289 -399.5211
s.e. 22.6783 26.7793 120.8446
sigma^2 estimated as 14401: log likelihood=-620.65
AIC=1249.29 AICc=1249.71 BIC=1259.71
Outliers:
type ind time coefhat tstat
1 LS 29 1899 -242.2 -9.045
2 AO 43 1913 -399.5 -3.306
tsoutliers
ha sido renombrada tso
para evitar conflictos con una función del mismo nombre en el paquete forecast
.