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 , stl
semble ê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 stl
dans 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 stl
dans 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.
Réponses:
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.
la source
Selon @Julius dans ce post, il est possible d'utiliser
stl
avecna.approx
, à partir duzoo
package, en utilisantstl(x, na.action = na.approx, ...)
. Cela fait une sorte d' interpolation .la source
Vous pourriez également vouloir vérifier le
stlplus
paquet de Hafen . Les détails sont dans sa thèse.Vous pouvez l'installer depuis CRAN avec
ou directement depuis github avec
la source