Comentarios: En primer lugar, me gustaría dar un gran agradecimiento al autor del nuevo paquete tsoutliers que implementa la detección de valores atípicos en series temporales de Chen y Liu publicado en la revista de la Asociación Estadounidense de Estadística en 1993 en el software de código abierto $R$.
El paquete detecta 5 tipos diferentes de valores atípicos de manera iterativa en datos de series temporales:
- Valores Atípicos Aditivos (AO)
- Valores Atípicos Innovadores (IO)
- Cambio de Nivel (LS)
- Cambio Temporal (TC)
- Cambio Estacional de Nivel (SLS)
Lo que es aún mejor es que este paquete implementa auto.arima de la paquete forecast 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 usando este paquete y funcionó genial. Los valores atípicos aditivos y el cambio de nivel son intuitivos. Sin embargo, tengo 2 preguntas con respecto al manejo de valores atípicos de Cambio Temporal y Valores Atípicos Innovadores que no puedo entender.
Ejemplo de Valor Atípico de Cambio Temporal:
Considere el siguiente ejemplo:
library(tsoutliers)
library(expsmooth)
library(fma)
valor.atipico_pollo <- tsoutliers::tso(pollo,types = c("AO","LS","TC"),maxit.iloop=10)
valor.atipico_pollo
plot(valor.atipico_pollo)
El programa detecta correctamente un cambio de nivel y un cambio temporal en la siguiente ubicación.
Valores Atípicos:
tipo ind tiempo coeficiente tstat
1 LS 12 1935 37.14 3.153
2 TC 20 1943 36.38 3.350
A continuación se muestra el gráfico 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 cualquier momento después de 1935 es 1.)
La ecuación para el cambio temporal en el manual del paquete y en el artículo se da como:
$$ L(B) = \frac{1} {1-\delta B} $$
donde $\delta$ es 0.7. Estoy teniendo dificultades para traducir esto al ejemplo anterior.
- Mi segunda pregunta es sobre valores atípicos innovadores, nunca me he encontrado con 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 al identificar valores atípicos y sugerir un modelo ARIMA apropiado. Mirando el conjunto de datos de Nile, vea a continuación la aplicación de auto.arima y luego la aplicación de tsoutliers (con los valores predeterminados que incluyen auto.arima):
auto.arima(Nile)
Serie: Nile
ARIMA(1,1,1)
Coeficientes:
ar1 ma1
0.2544 -0.8741
s.e. 0.1194 0.0605
sigma^2 estimado como 19769: log likelihood=-630.63
AIC=1267.25 AICc=1267.51 BIC=1275.04
Después de aplicar la función tsoutliers, identifica un valor atípico de cambio de nivel y un valor atípico aditivo y recomienda un orden ARIMA (0,0,0).
valores.atipicos_nile <- tso(Nile,types = c("AO","LS","TC"))
valores.atipicos_nile
Serie: Nile
ARIMA(0,0,0) con media distinta de cero
Coeficientes:
intercepción LS29 AO43
1097.7500 -242.2289 -399.5211
s.e. 22.6783 26.7793 120.8446
sigma^2 estimado como 14401: log likelihood=-620.65
AIC=1249.29 AICc=1249.71 BIC=1259.71
Valores Atípicos:
tipo ind tiempo coeficiente tstat
1 LS 29 1899 -242.2 -9.045
2 AO 43 1913 -399.5 -3.306
8 votos
Me alegra ver que encontraste útil el paquete, ¡gracias! Por cierto, he corregido un error tipográfico en la función que traza los resultados para que en la próxima versión del paquete el eje y cubra el rango tanto de la serie original como de la ajustada.
2 votos
En la última versión del paquete, la función
tsoutliers
ha sido renombrada comotso
para evitar conflictos con una función del mismo nombre en el paqueteforecast
.1 votos
@javlacalle Descargué la última paquete tsoutliers y todavía tiene tsoutliers en lugar de tso. No estoy seguro de cuándo se actualizará el paquete. Me alegra que tengamos diferentes nombres de funciones.
0 votos
Me emocioné un poco al informar sobre la actualización. Se tarda un tiempo en actualizarse en CRAN. ¡Acabo de ver que la última versión 0.4 se puede descargar desde CRAN!
0 votos
@javlacalle Encontré tsoutliers realmente difícil de instalar en mi mac. Usé brew para instalar gsl, intenté compilar usando
clang
ygcc
y ninguno funcionó. Creo que es un paquete increíble pero la instalación realmente me desanimó.0 votos
@B.Mr.W. gracias por su interés en el paquete y por reportar este problema. La instalación desde la fuente del paquete requerido KFKSDS requiere tener instalada la versión de desarrollo de GSL. No puedo verificar el proceso de instalación en un mac pero veré si debo agregar algo en las fuentes de
KFKSDS
para hacer la instalación más fácil.0 votos
@B.Mr.W. Te recomendaría probar las ideas en esta publicación. También podrías 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 problema en instalar ni el paquete gsl ni gsl en sí. Y cambio el Makevars y aún así no funcionan. Supongo que sólo utilizaré RStudio server en nuestro servidor por ahora... y esperaré en silencio por algo de magia de tu parte. Sería genial que estuviera en CRAN ya que es una biblioteca impresionante. :)
0 votos
@B.Mr.W. Gracias por intentarlo. Inspeccionaré las fuentes del paquete gsl y veré cómo manejan la instalación en una mac.
0 votos
Tuve problemas para instalar el KFKSDS en Ubuntu 16.04. Finalmente lo resolví instalando
libgsl-dev
en el sistema conapt-get
.0 votos
Pollo. Se pierde el valor atípico de 1973. El modelo real es un paseo aleatorio. La detección de un cambio de nivel en 1935 es un falso positivo. Acerta 1 de 3 y pierde un valor atípico. Nilo. El modelo real es ninguno. 1877 y 1864 se pierden, pero se encuentran el cambio de nivel de 1899 y el valor atípico de 1913. Acerta 2 de 2, pero pierde dos valores atípicos.
0 votos
Editar 1864=1964.
0 votos
@tomreilly el modelo identifica correctamente el cambio de nivel en 1899 y no en 1935, y también identifica el verdadero no arima (caminata aleatoria/ruido blanco). No hay falsos positivos en el modelo anterior, tu comentario es engañoso y confuso.
0 votos
@pronosticador, el comentario "1935" está relacionado con el ejemplo del pollo y NO con el ejemplo del Nilo.