Commenti: Prima di tutto vorrei dire un grande grazie al autore del nuovo tsoutliers pacchetto che implementa Chen e Liu di rilevazione delle serie storiche dei valori anomali che è stato pubblicato sul Journal of American Statistical Association nel 1993 in Open Source software .
Il pacchetto rileva 5 diversi tipi di valori anomali in modo iterativo nei dati delle serie temporali:
- Additivo anomalo (AO)
- Innovation Outlier (IO)
- Level Shift (LS)
- Modifica temporanea (TC)
- Cambio di livello stagionale (SLS)
Ciò che è ancora più bello è che questo pacchetto implementa auto.arima dal pacchetto di previsione, quindi il rilevamento dei valori anomali è semplice. Inoltre, il pacchetto produce grafici utili per una migliore comprensione dei dati delle serie temporali.
Di seguito sono le mie domande:
Ho provato a fare alcuni esempi usando questo pacchetto e ha funzionato benissimo. Gli outlier additivi e il cambio di livello sono intuitivi. Tuttavia, ho avuto 2 domande in merito alla consegna di valori anomali di modifica temporanea e valori anomali innovativi che non sono in grado di comprendere.
Esempio di valore anomalo di modifica temporanea:
Considera il seguente esempio:
library(tsoutliers)
library(expsmooth)
library(fma)
outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)
Il programma rileva giustamente uno spostamento di livello e un cambio temporaneo nella seguente posizione.
Outliers:
type ind time coefhat tstat
1 LS 12 1935 37.14 3.153
2 TC 20 1943 36.38 3.350
Di seguito è riportata la trama e le mie domande.
- Come scrivere la modifica temporanea in un formato di equazione? (Il cambio di livello può essere facilmente scritto come una variabile binaria, in qualsiasi momento prima del 1935 / Obs 12 è 0 e in qualsiasi momento dopo il 1935 e dopo è 1)
L'equazione per la modifica temporanea nel manuale del pacchetto e nell'articolo è data come:
dove è 0,7. Sto solo lottando per tradurre questo nell'esempio sopra.
- La mia seconda domanda riguarda gli outlier innovativi,
in pratica non mi sono mai imbattuto in un outlier innovativo. qualsiasi esempio numerico o esempio di caso sarebbe molto utile.
Modifica: @Irishstat, la funzione tsoutliers fa un ottimo lavoro nell'identificare i valori anomali e nel suggerire un modello ARIMA appropriato. Osservando il set di dati del Nilo, vedere di seguito l'applicazione di auto.arima e quindi l'applicazione di tsoutliers (con impostazioni predefinite che include 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
Dopo aver applicato la funzione tsoutliers, identifica un outlier LS e un outlier additivo e raccomanda un ordine 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
è stata rinominata in modo tso
da evitare conflitti con una funzione con lo stesso nome nel pacchetto forecast
.
clang
e gcc
e nessuno dei due funziona. Penso che sia un pacchetto fantastico ma l'installazione mi ha davvero spezzato il cuore.