Comentarios: En primer lugar me gustaría decir un gran agradecimiento a la autor de la nueva tsoutliers paquete que implementa Chen y Liu detección de valores atípicos de series temporales que se publicó en el Journal of the American Statistical Association en 1993 en software de código abierto $R$ .
El paquete detecta 5 tipos diferentes de valores atípicos de forma iterativa en datos de series temporales:
- Aditivo atípico (AO)
- Innovación Outlier (IO)
- Cambio de nivel (LS)
- Cambio temporal (TC)
- Cambio de nivel estacional (SLS)
Lo que es aún más genial es que este paquete implementa auto.arima desde el paquete de previsión, así que la detección de valores atípicos es perfecta. También el paquete produce bonitas gráficas para una mejor comprensión de los datos de las series temporales.
A continuación están mis preguntas:
Intenté hacer algunos ejemplos usando este paquete y funcionó muy bien. Los valores atípicos de los aditivos y el cambio de nivel son intuitivos. Sin embargo, tenía dos preguntas con respecto a la entrega de los valores atípicos de Cambio Temporal y Valores atípicos Innovadores que no puedo entender.
Ejemplo de cambio temporal atípico:
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 está la trama y mis preguntas.
- Cómo escribir el cambio temporal en una ecuación (El cambio de nivel puede ser fácilmente escrito 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 :
$$ L(B) = \frac {1} {1- \delta B} $$
donde $ \delta $ es 0.7. Estoy luchando por traducir esto al ejemplo anterior.
- Mi segunda pregunta es acerca de la innovación atípica, nunca he venido
a través de un 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 de tsoutliers hace un excelente trabajo en la identificación de los valores atípicos y en la sugerencia de un modelo ARIMA apropiado. Mirando el conjunto de datos del Nilo, véase más abajo la aplicación de auto.arima y luego la aplicación de tsoutliers (con valores por defecto 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 de tsoutliers, identifica un atípico LS y un atípico 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
8 votos
Me alegra ver que el paquete le ha resultado útil, ¡gracias! Por cierto, he corregido una errata en la función que traza los resultados para que en la próxima versión del paquete el eje Y cubra el rango de las series originales y las ajustadas.
2 votos
En la última versión del paquete, la función
tsoutliers
ha sido rebautizado comotso
para evitar el conflicto con una función del mismo nombre en el paqueteforecast
.1 votos
@javlacalle He descargado el último paquete de tsoutliers sigue teniendo tsoutliers no tso. No estoy seguro de cuándo se actualizará el paquete. Me alegro de que tengamos diferentes nombres de funciones.
0 votos
Me apresuré un poco informando sobre la actualización. Se necesita algún tiempo hasta que se actualice en CRAN. Acabo de ver que la última versión 0.4 se puede descargar desde CRAN.
0 votos
@javlacalle A mí me costó mucho instalar tsoutliers en mi mac. Instalé brew gsl, traté de compilar usando
clang
ygcc
y ni funciona. Creo que es un paquete impresionante, pero la instalación realmente me rompió el corazón.0 votos
@B.Mr.W. gracias por su interés en el paquete y por informar de este problema. Instalación desde la fuente del paquete requerido KFKSDS requiere tener instalada la versión de desarrollo de GSL . No puedo comprobar el proceso de instalación en un mac pero veré si debo añadir algo en las fuentes de
KFKSDS
para facilitar la instalación.0 votos
@B.Mr.W. Te recomiendo que pruebes las ideas de este puesto . También puede intentar editar el archivo KFKSDS/src/Makevars con el contenido de Makevars.in disponible en el mismo directorio del paquete gsl .
0 votos
@javlacalle No tengo problemas para instalar ni el pkg de gsl ni el propio gsl. Y cambio los Makevars y siguen sin funcionar. Supongo que por ahora usaré el servidor de RStudio en nuestro servidor... y esperaré tranquilamente alguna magia de tu parte. Ojalá pueda estar en CRAN ya que es una librería impresionante :)
0 votos
@B.Mr.W. Gracias por probar esto. Voy a inspeccionar las fuentes del paquete gsl y ver cómo se ocupan de la instalación en un mac.
0 votos
He tenido problemas para instalar el KFKSDS en Ubuntu 16.04. Finalmente lo resolví instalando
libgsl-dev
en el sistema conapt-get
.0 votos
Pollo. El valor atípico de 1973 se pierde. El verdadero modelo es un paseo aleatorio. La señalización de un cambio de nivel en 1935 es un falso positivo. Acierta en 1 de 3 y falla en un valor atípico. Nilo. El modelo verdadero no es ningún modelo. No se encuentran 1877 y 1864, pero sí el cambio de nivel 1899 y el valor atípico de 1913. Acierta 2 de 2, pero no encuentra dos valores atípicos.
0 votos
editar 1864=1964.
0 votos
@tomreilly el modelo señala correctamente el cambio de nivel en 1899 y no en 1935 y también identifica el verdadero no arima (paseo aleatorio/ruido blanco). No hay ningún falso positivo en el modelo anterior, tu comentario es engañoso y confuso.
0 votos
@forecaster, el comentario de "1935" está relacionado con el ejemplo del pollo y NO con el del nilo.