Pourquoi la fonction stl donne une variation saisonnière significative avec des données aléatoires

11

J'ai tracé le code suivant avec la fonction stl (décomposition saisonnière des séries chronologiques par Loess):

plot(stl(ts(rnorm(144), frequency=12), s.window="periodic"))

Il montre une variation saisonnière importante avec des données aléatoires mises dans le code ci-dessus (fonction rnorm). Une variation importante est observée à chaque exécution, bien que le modèle soit différent. Deux de ces modèles sont illustrés ci-dessous:

entrez la description de l'image ici

entrez la description de l'image ici

Comment peut-on s'appuyer sur la fonction stl sur certaines données lorsqu'elle montre une variation saisonnière. Cette variation saisonnière doit-elle être considérée à la lumière d'autres paramètres? Merci pour votre perspicacité.

Le code est tiré de cette page: Est-ce une méthode appropriée pour tester les effets saisonniers dans les données sur le nombre de suicides?

rnso
la source
1
Cela se produit car il existe des «modèles» dans les données aléatoires, si votre technique d'ajustement a suffisamment de paramètres.
bill_080
3
Le terme «significatif» ici ne semble refléter aucun type de test de signification.
Nick Cox
1
Stl est une méthode basée sur des données non paramétriques, il n'y a donc aucun moyen de quantifier l'absence de présence d'incertitudes saisonnières via des tests de signification.
prévisionniste

Réponses:

12

La décomposition de Loess a pour but de lisser la série en appliquant des moyennes aux données afin qu'elles s'effondrent en composantes, par exemple la tendance ou saisonnières, qui sont intéressantes pour l'analyse des données. Mais cette méthodologie n'est pas destinée à faire un test formel de la présence de saisonnalité .

Bien que dans votre exemple stlrenvoie un modèle lissé de périodicité saisonnière, ce modèle n'est pas pertinent pour expliquer la dynamique de la série. Pour voir cela, nous pouvons comparer la variance de chaque composante par rapport à la variance de la série d'origine.

set.seed(123)
x <- ts(rnorm(144, sd=1), frequency=12)
a <- stl(x, s.window="periodic")
apply(a$time.series, 2, var) / var(x)
#   seasonal      trend  remainder 
# 0.07080362 0.07487838 0.81647852 

Nous pouvons voir que c'est le reste qui explique la majeure partie de la variance des données (comme on pourrait s'y attendre pour un processus de bruit blanc).

Si nous prenons une série avec saisonnalité, la variance relative de la composante saisonnière est beaucoup plus pertinente (bien que nous n'ayons pas de méthode simple pour la tester car le loess n'est pas paramétrique).

y <- diff(log(AirPassengers))
b <- stl(y, s.window="periodic")
apply(b$time.series, 2, var) / var(y)
#    seasonal       trend   remainder 
# 0.875463620 0.001959407 0.117832537 

Les variances relatives indiquent que la saisonnalité est la principale composante expliquant la dynamique de la série.


Un regard imprudent sur l'intrigue stlpeut être trompeur. Le beau modèle renvoyé par stlpeut nous faire penser qu'un modèle saisonnier pertinent peut être identifié dans les données, mais un examen plus approfondi peut révéler que ce n'est pas réellement le cas. Si le but est de décider de la présence d'une saisonnalité, la décomposition du loess peut être utile comme vue préliminaire, mais elle doit être complétée par d'autres outils.

javlacalle
la source
Dans votre exemple d'AirPassengers, il n'y a pas de tendance à la sortie, alors qu'il y a une tendance claire sur le tracé (AirPassengers). La tendance vient à 0,86 (avec une saisonnalité de seulement 0,1) si la mention "diff (log (AirPassengers))" est supprimée. Qu'est-ce qui devrait être fait?
rnso
J'ai donné un exemple qui est numériquement clair. En pratique, le simple fait de comparer la variance des composantes lissées peut ne pas suffire pour parvenir à une conclusion sur la présence de saisonnalité. Par exemple, comme vous l'avez constaté dans ce cas, si la tendance n'est pas supprimée en prenant des différences, la variance de la tendance domine la variance de la composante saisonnière. La question est la suivante: une variance relative de 0,1 est-elle suffisamment importante pour que cette composante soit pertinente? Le problème est que, sur la base du loess, il n'y a pas de moyen simple de tester si la variance du composant est significative.
javlacalle
Comme je l'ai dit, ce que nous devons faire dans ce cas et dans d'autres, c'est d'utiliser d'autres méthodes pour tester la présence de saisonnalité. Voir par exemple la deuxième partie de ma réponse ici . Une fois que nous avons conclu que la saisonnalité est présente dans les données, nous pouvons utiliser le loess pour obtenir le modèle de cette composante.
javlacalle
Juste pour plus de précision, comment la variance relative montre-t-elle à quel point une partie de la décomposition joue dans les données globales? IE 70% saisonnier, 20% tendance. etc.
Ted Mosby
1
@TedMosby La variance est une mesure de la variabilité / dispersion des données. La somme des variances des composantes (p. Ex. Tendance, saisonnière) et la variance du reste s'ajoutent à la variance de la série d'origine. De cette façon, en comparant la variance d'un composant avec la variance de la série d'origine, nous pouvons avoir une idée de la pertinence du composant (c.-à-d., Dans quelle mesure la variabilité des données est expliquée par le composant).
javlacalle
2

Dans la même veine, j'ai vu l'utilisation des modèles de Fourier à des données non saisonnières, forçant une structure saisonnière dans les valeurs d'ajustement et de prévision, provoquant un résultat similaire (halètement!). L'adaptation d'un modèle présumé donne à l'utilisateur ce qu'il impose / présume, ce qui n'est pas toujours ce que de bonnes analyses suggèrent / fournissent.

IrishStat
la source
1
stl()n'est pas basé sur des idées de Fourier. Bien que je n'aie encore vu personne prôner une analyse "insensée", notez que toute famille modèle adaptée pourrait être considérée comme imposée ou présumée. La question est de savoir dans quelle mesure une procédure offre aux utilisateurs la possibilité de réaliser si et comment elle fonctionne mal pour un ensemble de données particulier.
Nick Cox
@NickCox tout à fait vrai ....
IrishStat