STL sur séries chronologiques avec valeurs manquantes pour la détection d'anomalies

12

J'essaie de détecter des valeurs anormales dans une série chronologique de données climatiques avec quelques observations manquantes. En cherchant sur le Web, j'ai trouvé de nombreuses approches disponibles. Parmi ceux-ci, la décomposition stl semble attrayante, dans le sens de supprimer les composantes de tendance et saisonnières et d'étudier le reste. La lecture de STL: une procédure de décomposition de tendance saisonnière basée sur Loess , stlsemble être flexible dans la détermination des paramètres d'attribution de la variabilité, non affectée par les valeurs aberrantes et possible d'appliquer malgré les valeurs manquantes. Cependant, en essayant de l'appliquer R, avec quatre ans d'observations et en définissant tous les paramètres selon http://stat.ethz.ch/R-manual/R-patched/library/stats/html/stl.html , je rencontre Erreur:

"time series contains internal NAs"(quand na.action=na.omit) et
"series is not periodic or has less than two periods"(quand na.action=na.exclude).

J'ai revérifié que la fréquence est correctement définie. J'ai vu des questions pertinentes dans les blogs, mais je n'ai trouvé aucune suggestion qui pourrait résoudre ce problème. N'est-il pas possible d'appliquer stldans une série avec des valeurs manquantes? Je suis très réticent à les interpoler, car je ne veux pas introduire (et par conséquent détecter ...) des artefacts. Pour la même raison, je ne sais pas à quel point il serait préférable d'utiliser des approches ARIMA à la place (et si les valeurs manquantes seraient toujours un problème).

Veuillez partager si vous connaissez un moyen de postuler stldans une série avec des valeurs manquantes, ou si vous pensez que mes choix ne sont pas méthodologiquement judicieux, ou si vous avez une meilleure suggestion. Je suis tout à fait nouveau dans le domaine et submergé par les tas d'informations (apparemment ...) pertinentes.

effie
la source
J'ai le même problème. La méthode STL devrait pouvoir simplement remplir les valeurs manquantes via LOESS, mais cette implémentation R ne semble pas le faire.
jf328

Réponses:

5

Les modèles ARIMA incorporent facilement des variables fictives pour traiter les valeurs manquantes. Ils sont appelés indicateurs d'impulsion. La méthodologie est simple et documentée dans http://www.unc.edu/~jbhill/tsay.pdf . En général, la méthode extrait de la série résiduelle actuelle des informations concernant les légumineuses, les changements de niveau, les légumineuses saisonnières et les tendances de l'heure locale.

IrishStat
la source
merci pour la suggestion et l'article très intéressant!
effie
3

Selon @Julius dans ce post, il est possible d'utiliser stlavec na.approx, à partir du zoopackage, en utilisant stl(x, na.action = na.approx, ...). Cela fait une sorte d' interpolation .

Robert
la source
0

Vous pourriez également vouloir vérifier le stlpluspaquet de Hafen . Les détails sont dans sa thèse.

Vous pouvez l'installer depuis CRAN avec

install.packages("stlplus")

ou directement depuis github avec

devtools::install_github("hafen/stlplus").
sfjac
la source