Détection des valeurs aberrantes dans les séries chronologiques (LS / AO / TC) à l'aide du paquet tsoutliers en R. Comment représenter les valeurs aberrantes au format équation?

35

Commentaires: Tout d' abord je voudrais dire un grand merci à l' auteur du nouveau tsoutliers paquet qui met en œuvre de Chen et Liu séries temporelles de détection des valeurs aberrantes qui a été publiée dans le Journal de l'American Statistical Association en 1993 dans le logiciel Open Source .R

Le paquet détecte 5 types de valeurs aberrantes différents de manière itérative dans les données de séries chronologiques:

  1. Additif Outlier (AO)
  2. Innovation Outlier (IO)
  3. Décalage de niveau (LS)
  4. Changement temporaire (TC)
  5. Changement de niveau saisonnier (SLS)

Ce qui est encore plus génial, c’est que ce paquet implémente auto.arima à partir du paquet de prévisions, de sorte que la détection des valeurs éloignées est transparente. De plus, le paquet produit de beaux graphiques pour une meilleure compréhension des données de la série chronologique.

Voici mes questions:

J'ai essayé d'exécuter quelques exemples en utilisant ce paquet et cela a très bien fonctionné. Les valeurs aberrantes et le décalage de niveau sont intuitifs. Cependant, j'avais 2 questions concernant la gestion des valeurs aberrantes Temporary Change et Innovational, que je ne peux pas comprendre.

Exemple de modification temporaire des valeurs aberrantes:

Prenons l'exemple suivant:

library(tsoutliers)
library(expsmooth)
library(fma)

outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)

Le programme détecte à juste titre un changement de niveau et un changement temporaire à l’emplacement suivant.

Outliers:
  type ind time coefhat tstat
1   LS  12 1935   37.14 3.153
2   TC  20 1943   36.38 3.350

Ci-dessous, l'intrigue et mes questions.

  • Comment écrire le changement temporaire dans un format d'équation? (Le décalage de niveau peut facilement être écrit sous forme de variable binaire, à tout moment avant 1935 / Obs 12 est égal à 0 et à tout moment après 1935 et après est égal à 1.)

L'équation de modification temporaire dans le manuel du package et l'article est donnée comme suit:

L(B)=11δB

δ

  • Ma deuxième question concerne les valeurs aberrantes d’innovation. Je n’ai jamais
    rencontré d’aberrance d’innovation dans la pratique. tout exemple numérique ou exemple de cas serait très utile.

valeurs aberrantes

Edit: @Irishstat, la fonction tsoutliers fait un excellent travail pour identifier les valeurs éloignées et suggérer un modèle ARIMA approprié. En regardant l'ensemble de données Nile, voir ci-dessous l'application de auto.arima, puis l'application tsoutliers (avec les valeurs par défaut incluant 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

Après avoir appliqué la fonction tsoutliers, il identifie une valeur aberrante LS et une valeur aberrante additive et recommande un ordre 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

entrez la description de l'image ici

prévisionniste
la source
8
Je suis heureux de voir que vous avez trouvé le paquet utile, merci! BTW, j'ai corrigé une faute de frappe dans la fonction qui trace les résultats afin que, dans la prochaine version du paquet, l'axe des ordonnées couvrira la plage de la série d'origine et de la série ajustée.
javlacalle
2
Dans la dernière version du package, la fonction tsoutliersa été renommée tsoafin d'éviter tout conflit avec une fonction du même nom dans le package forecast.
javlacalle
1
@javlacalle J'ai téléchargé le dernier paquet tsoutliers mais il n'a toujours pas tsoutliers. Je ne sais pas quand le paquet sera mis à jour. Je suis content que nous ayons des noms de fonction différents.
prévisionniste
Je me suis précipité un peu pour informer de la mise à jour. Il faut un certain temps avant qu’il soit mis à jour sur CRAN. Je viens de voir que la dernière version 0.4 peut être téléchargée à partir de CRAN.
javlacalle
@javlacalle, j’ai trouvé très difficile d’installer tsoutliers sur mon mac. Je brasse installé gsl, j'ai essayé de compiler en utilisant clanget gccet ni fonctionne. Je pense que c'est un paquet génial mais l'installation m'a vraiment brisé le cœur.
B.M.W.

Réponses:

19

filterδ=0δ=1

tc <- rep(0, 50)
tc[20] <- 1
tc1 <- filter(tc, filter = 0, method = "recursive")
tc2 <- filter(tc, filter = 0.3, method = "recursive")
tc3 <- filter(tc, filter = 0.7, method = "recursive")
tc4 <- filter(tc, filter = 1, method = "recursive")
par(mfrow = c(2,2))
plot(tc1, main = "TC delta = 0")
plot(tc2, main = "TC delta = 0.3")
plot(tc3, main = "TC delta = 0.7")
plot(tc4, main = "TC delta = 1", type = "s")

changement temporel

Dans votre exemple, vous pouvez utiliser la fonction outliers.effectspour représenter les effets des valeurs éloignées détectées sur la série observée:

# unit impulse
m1 <- ts(outliers.effects(outlier.chicken$outliers, n = length(chicken), weights = FALSE))
tsp(m1) <- tsp(chicken)
# weighted by the estimated coefficients
m2 <- ts(outliers.effects(outlier.chicken$outliers, n = length(chicken), weights = TRUE))
tsp(m2) <- tsp(chicken)

La valeur innovante, IO, est plus particulière. Contrairement aux autres types de valeurs aberrantes considérées dans tsoutliers, l'effet de l'IO dépend du modèle sélectionné et des estimations de paramètres. Ce fait peut être gênant en série avec de nombreuses valeurs aberrantes. Dans les premières itérations de l'algorithme (où l'effet de certaines des valeurs aberrantes n'a peut-être pas été détecté ni ajusté), la qualité des estimations du modèle ARIMA peut ne pas être suffisante pour définir avec précision l'IO. De plus, à mesure que l'algorithme progresse, un nouveau modèle ARIMA peut être sélectionné. Ainsi, il est possible de détecter une entrée / sortie à un stade préliminaire avec un modèle ARIMA mais sa dynamique est finalement définie par un autre modèle ARIMA choisi lors de la dernière étape.

Dans ce document, il est montré que, dans certaines circonstances, l’influence d’une OI peut augmenter lorsque la date de son apparition s’éloigne du passé, ce qui est difficile à interpréter ou à supposer.

L'IO a un potentiel intéressant car il peut capturer des valeurs aberrantes saisonnières. Les autres types de valeurs aberrantes prises en compte tsoutliersne permettent pas de saisir les tendances saisonnières. Néanmoins, dans certains cas, il peut être préférable de rechercher un éventuel changement de niveau saisonnier, SLS, au lieu de IO (comme indiqué dans le document mentionné précédemment).

L’OI a une interprétation attrayante. Il est parfois compris comme une valeur aberrante additive qui affecte le terme de perturbation puis se propage dans la série en fonction de la dynamique du modèle ARIMA. En ce sens, les entrées / sorties ressemblent à des valeurs aberrantes additives, les deux affectant une seule observation, mais les entrées / sorties sont une impulsion dans le terme de perturbation, tandis que la zone d'opération est une impulsion ajoutée directement aux valeurs générées par le modèle ARIMA ou le processus de génération de données. . Que les valeurs aberrantes affectent les innovations ou soient en dehors du terme de perturbation peut être discuté.

Dans la référence précédente, vous trouverez peut-être quelques exemples de données réelles dans lesquelles des E / S sont détectées.

Javlacalle
la source
Merci pour la réponse détaillée. j'apprécie vraiment cela. J'ai quelques questions supplémentaires. Y a-t-il des avantages à utiliser auto.arima, à identifier le p, d, q puis à utiliser tsoutliers en utilisant arima comme méthode?
prévisionniste
1
Le principal avantage d'utiliser forecast::auto.arimaavec tsoutliersest que tout est automatisé. Toutefois, il est conseillé d’exécuter les procédures automatiques avec des options alternatives. Vous pouvez d’abord, par exemple, consulter les tests ACF ou racine unitaire, puis choisir un modèle ARIMA à transmettre tsoutliers. Si des valeurs aberrantes sont trouvées pour votre modèle proposé, vous pouvez répéter l'analyse pour la série ajustée. C'est un processus itératif. La procédure automatique fournit un guide utile mais ne donne pas nécessairement la solution ultime ou unique.
javlacalle
1
La procédure pour localiser les valeurs aberrantes est itérative. Pour des raisons de sécurité, le nombre d'itérations autorisées est limité. Lorsque vous observez l'avertissement, vous pouvez essayer d'exécuter l'algorithme en augmentant l'argument maxit.iloopà 5-6 et voir si les résultats changent. Si l'avertissement est renvoyé avec un grand maxit.iloop(par exemple 20 ou plus), cela peut indiquer que quelque chose n'est pas correctement modélisé. Supprimer les entrées / sorties des types de valeurs aberrantes à prendre en compte peut être une bonne option dans certains cas. Dans la plupart des cas, vous pouvez ignorer l'avertissement. Vous pouvez utiliser suppressWarningspour les éviter.
javlacalle
2
@ Mugen Je ne connais pas de manuel traitant de cette question de manière approfondie. L’approche abordée dans cet article étant liée à l’analyse des interventions, tout manuel (en économétrie ou série chronologique) comportant un chapitre sur cette question serait utile; par exemple, l' analyse des séries chronologiques. Avec des applications en R . Pour plus de détails, vous devriez consulter certains des nombreux articles de revues traitant de cette question, à commencer par exemple par Chen et Liu (1993) et leurs références.
javlacalle
2
@ Mugen, je voudrais aussi consulter l' article de Tsay . De plus, je vérifierais le livre classique de Pankratz qui couvre bien les valeurs aberrantes.
prévisionniste