décomposition série temporelle avec NAs

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

remi dupas
Messages : 3
Enregistré le : 29 Jan 2018, 20:29

décomposition série temporelle avec NAs

Messagepar remi dupas » 31 Jan 2018, 14:37

Bonjour,
Je cherche à décomposer une série temporelle mensuelle de quarante ans environ, en une composante long terme et une composante saisonnière. J’utilise généralement la fonction stl() mais celle-ci ne gère pas les NAs.
Existe-t-il des fonction du même type que stl() qui ne seraient pas dérangées par les NAs ?
Une alternative serait d’interpoler les NAs. Je ne souhaite pas faire d’interpolation linéaire, de peur d’impacter l'amplitude saisonnière. Quelle technique d’interpolation vous paraitrait adaptée ?
Merci

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: décomposition série temporelle avec NAs

Messagepar Mickael Canouil » 31 Jan 2018, 15:35

Bonjour,

si la fonction dont vous parlez est celle du package stats, alors c'est "normal" qu'elle renvoie une erreur avec des NA puisque c'est son fonctionnement par défaut: 'na.action = na.fail'
Il suffit donc de changer la valeur de cet argument par l'une des options possibles: "na.omit", "na.exclude" et "na.pass" (en plus de "na.fail")

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Dominique Soudant
Messages : 758
Enregistré le : 23 Avr 2008, 11:12
Contact :

Re: décomposition série temporelle avec NAs

Messagepar Dominique Soudant » 31 Jan 2018, 15:57

Traite ta série avec des Dynamic Linear Model cf. package dlm de Petris et al.
Nécessite un peu plus d’investissement que STL, théorique et pratique, mais tu peux traiter des données avec des données manquantes et fréquence irrégulière à partir des seules observations et sans interpolations.
@+

remi dupas
Messages : 3
Enregistré le : 29 Jan 2018, 20:29

Re: décomposition série temporelle avec NAs

Messagepar remi dupas » 01 Fév 2018, 16:46

Merci à tous les deux,
J’obtiens différents messages d’erreurs en testant différentes valeurs de na.action
"na.omit"
Error in na.omit.ts(as.ts(x)) : la série temporelle contient des NA internes
"na.exclude"
Error in stl(stationTS, t.window = 72, s.window = 12, na.action = na.pass) : NA/NaN/Inf in foreign function call (arg 1)
"na.pass"
Error in stl(stationTS, t.window = 72, s.window = 12, na.action = na.exclude) : la série n'est pas périodique ou elle a moins de deux périodes
Je n’ai pas ce dernier message d’erreur "la série n'est pas périodique" si j’utilise stl() sur une période sans NAs.
@Dominique Soudant : merci, il faut en effet un peu plus d’investissement pour comprendre les Dynamic Linear Models. Je vous tiens au courant.
Rémi

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: décomposition série temporelle avec NAs

Messagepar Mickael Canouil » 02 Fév 2018, 09:36

Au vu des erreurs, je serais curieux de connaître la distribution des valeurs manquantes (et leur nombre) dans votre jeu de données.
Mickaël
mickael.canouil.fr | rlille.fr

remi dupas
Messages : 3
Enregistré le : 29 Jan 2018, 20:29

Re: décomposition série temporelle avec NAs

Messagepar remi dupas » 02 Fév 2018, 15:27

Dans toutes séries temporelles que je traite, les données manquantes sont souvent regroupées dans la même période, souvent au début de la chronique. Dans l'exemple ci-dessous, même en faisant commencer la série temporelle après le premier paquet de NAs consécutifs, j'obtiens le message d'erreur:

Error in stl(stationTS, t.window = 72, s.window = 12, na.action = na.exclude) :
la série n'est pas périodique ou elle a moins de deux périodes

Code : Tout sélectionner

structure(c(4.95, 2.99, 4.47, 3.99, 1.99, 2.99, 0.99, 1, 1, 1,
2.49, 2.99, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 10.35, 5.57, 8.98, 3.69, 3.39, 0.89, 0.89, NA, 1.19,
11.99, 9.96, 9.47, 20.98, 23.99, 20.98, 15.98, 10.97, 11.46,
9.47, 5.48, NA, NA, NA, NA, 17.79, 21.16, 19.47, 15.89, 14.96,
13.05, NA, 7.08, NA, NA, NA, NA, 15.49, 17.79, 21.86, 18.59,
17.48, NA, 10.66, 1.59, NA, 3.99, 5.66, NA, NA, NA, NA, 21.16,
16.46, NA, 11.59, 7.96, 6.99, 6.99, 10.18, 13.19, 17.88, 22.35,
19.56, 21.95, NA, 16.15, 21.95, 13.98, 8.98, 11.28, 17.17, 18.99,
16.99, 37.98, 11.99, 22.97, 20.98, 15.98, 12.88, 10.97, 6.99,
7.17, 17.97, 20.98, 24.96, 24.96, 15.98, NA, 14.96, 17.97, NA,
9.96, 7.96, 11.99, 14.96, 12.97, 22.97, 25.49, 26.96, 17.57,
22.79, 17.17, 15.18, 5.97, 3, 10.27, 10.75, 22.66, NA, 27.89,
NA, 20.58, 28.86, 18.99, 15.49, 6.46, 5.48, 3.29, 15.09, 10.7,
26.96, 35.37, 30.36, 33.77, 23.37, 23.77, 19.47, NA, 10.27, 12.48,
14.96, 28.68, NA, 30.19, 33.68, 29.97, NA, 21.55, 17.08, 19.39,
6.99, 6.46, 24.48, 31.275, 36.35, 31.5, 30.85, 26.6, 19.9, 22.3,
22.3, 14.7, 8.7, 9.4, 14.95, 17.15, 23.65, 22, 33.25, 23.45,
22.5, 17.2, 9.3, 2.6, 1.4, 1.7, 4.8, 26.5, 56.35, 52.9, 40.9,
33.6, 16.8, NA, 11.1, 4.7, NA, 1.9, 7.3, 18.6, 63.15, 54.9, 42.6,
40.8, 32.5, NA, 11.8, 9.2, 2.7, 6.9, 27.7, 35.8, 31.15, 33.3,
36.35, 26.9, NA, 10.7, 12.3, 11.4, 6.3, 31.7, 17.55, 57, 40.1,
53.4, 43.9, 29.35, NA, 21.6, 30.4, 20.5, 12.5, NA, 37.1, 31.6,
45.3, 37.4, 40.95, 41.7, 33, NA, NA, 19.2, 10.1, 19.2, 23.85,
36.5, 23.8, 34.85, 29.65, 33, 33.6, 25.3, NA, 8.1, 6.6, 10.8,
14.3, 34.7, 43.25, 43.45, 46, 31.55, 25.5, NA, 18.6, 7.15, NA,
2.7, 9.4, 37, 40.9, 42.65, 49.85, 33.5, 23.5, 10.6, 11.2, 15,
NA, NA, 4.6, 24.65, 39.65, 54.5, 38.45, 24.65, 26, 34.2, 21.5,
16.2, 8.4, 11, 28.85, 33.85, 35.55, 50, 37.15, 29.15, 35, 26.7,
27.1, 12.6, 6.2, 20.2, 31.05, 31.45, 43.05, 40.5, 36, 25.45,
29.4, 41.5, 28.4, 14.8, 13.4, 9.5, 26.6, 28.6, 27.85, 38.3, 27.3,
31.85, 18.9, 35.7, 28.5, 13.3, 9.4, 7, 18.4, 21.9, 26.3, 30.9333333333333,
28.7666666666667, 31.0333333333333, 21.4333333333333, 17.95,
11.45, 6.1, 2.6, 5.25, 22.6, 29.2, 37, 32.3333333333333, 31.2666666666667,
30.2666666666667, 20.7, 12.55, 4.1, 1.3, 0.9, 1.65, 5.8, 29.55,
38.4666666666667, 40.6333333333333, 31.7666666666667, 28.0666666666667,
20.15, 19.6, 10.9, 9.25, 8.05, 11.8, 20.9, 26.15, 31.6666666666667,
36.3333333333333, 34.3333333333333, 23.6666666666667, 19.5, 11,
7, 2.1, 1, 1, 11.5, 34.5, 39.6666666666667, 37.6666666666667,
40.3333333333333, 36.6666666666667, 28.5, 19.5, 12.1, 4.85, 2.3,
5.85, 16.5, 37, 40.6666666666667, 35, 32.6666666666667, 34.6666666666667,
25, 21, 18, 19, 16, 17, 18, 16.5, 31.85, 36.3666666666667, 29.7666666666667,
26.7333333333333, 26.35, 25.45, 28.6, 18.1, 12.1, 11.4, 20.15,
24.95, 34.9, 36, 34.6333333333333, 28.1, 21.9, 18.4, 14.7, 9.3,
6.8, 6.1, 15.25, 29, 32.6, 33.575, 36.2, 28.3, 24.9, 20.6, 11.4,
6.9, 3, 10.2, 26.3, 39.15, 35.0666666666667, 33.3, 33.6333333333333,
22.4, 20.9, 13.25, 4.2, 1.6, 3.1, 2.3, 5.25, 22.8, 32.2266666666667,
28.2, 25.7, 17.3666666666667, 21.7, 17.95, 16.1, 12.7, 7.4, 6.8,
26.5, 30.85, 28.1, 35.6, 30.6333333333333, 30.0666666666667,
30.5, 23.8, 21.5, 11, 6.7, 5.9, 25, 28.5, 25.6666666666667, 25.6666666666667,
27, 26.3333333333333, 21, 18, 14, 7, 8, 6.5, 22, 24, 26.3333333333333,
27.3333333333333, 30.6666666666667, 29, 19, 23.5, 12, 7.2, 5.6,
6.5, 9.1, 13, 30.45, 25.4, 22.3666666666667, 26.2), .Tsp = c(1971,
2016.25, 12), class = "ts")


Merci encore pour votre aide!


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité