Regression pour des series temporelles

Questions sur les fonctions statistiques de R

Modérateur : Groupe des modérateurs

Lulla Opatowski
Messages : 2
Enregistré le : 06 Déc 2006, 13:07

Regression pour des series temporelles

Messagepar Lulla Opatowski » 06 Déc 2006, 13:25

Bonjour,

Je suis nouvelle sur le forum et j’aurais une question concernant l'utilisation des séries temporelles sous R.


J’ai deux séries x(t) et y(t) et je souhaiterais réaliser une regression de x par y en structurant les erreurs (erreurs autocorrélées). (equivalent de la fonction autoreg sous SAS)

J’ai trouvé la fonction gls (dans le package nlme) et j’ai exécuté :
gls_mens<-gls(mening_s_des~dataATB, correlation = corAR1())

ce qui fonctionne.

Mais je ne souhaite pas une structure AR(1) mais un ARMA(p,q). dans ce cas l’éxecution echoue et j’obtiens l’erreur suivante :
gls_mens<-gls(mening_s_des~dataATB, correlation = corARMA(p=52))
Error in "coef<-.corARMA"(`*tmp*`, value = c(11.2591629857661, 9.1821585359071, :
Coefficient matrix not invertible

Ceci est certainement du au fait que la plupart des coefficients inférieurs à 52 sont proches de 0.
Cependant je sais qu’il y a une autocorrelation d’ordre 52 au moins…

Je cherche une façon en R de régler ce problème :
- soit une fonction qui me permettrait d’évaluer automatiquement la structure ARMA la plus adaptée
- soit une façon de préciser manuellement une liste des lags qui ne sont pas nuls (sans qu’il calcule les autres)

Connaissez vous de telles fonctions?

Merci d’avance pour votre aide

Lulla

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 06 Déc 2006, 14:15

Avec des séries courtes (qques observations à qques dizaines d'observations), gls ou lme peuvent convenir. Avec des séries très longues, il faudrait sans doute regarder dans d'autres directions (je n'ai pas d'expérience pratique dans ce second cas).

Une bonne chose est d'utiliser des techniques exploratoires pour évaluer le profil d'autocorrélation et voir si un modèle simple ne peut pas les représenter: graphe d'autocorrélation ou variogramme, par exemple. Il y a ces outils dans le package nlme.

Ensuite, on peut comparer des modèles emboîtés par des méthodes basées sur le maximum de vraisemblance, comme le test du rapport des vraisemblances (fct anova) ou les critères d'information (AIC, BIC: fct éponymes). Je doute que dans les cas habituels, il soit utile d'aller plus loin que p = 2 ou 3. Mais mon point de vue peut être déformé par la nature des pbs que je traite habituellement.

Renaud

Lulla Opatowski
Messages : 2
Enregistré le : 06 Déc 2006, 13:07

Messagepar Lulla Opatowski » 07 Déc 2006, 15:12

Merci beaucoup pour cette réponse rapide.

Ma série représente de l'ordre de 200 observations. Est-ce considéré comme une série longue? Il ne semble pas qu'il y ait de problème pour gls lorsque je l'exécute en tout cas.

J'ai commencé par utiliser les techniques exploratoires et c'est ainsi que je sais que j'ai au moins une autocorrélation à 52. En fait ma série contient des données hebdomadaires sur plusieurs années. Je l'ai désaisonnalisée mais il reste certainement quelque chose à 1 an.

Cependant, lorsque j'essaie de modéliser un AR(52), R renvoie une erreur. Je pense que ceci est du au fait qu'il essaie de calculer tous les coefficients pour n<52 or il n'y en a que 4 ou 5 qui sont significatifs.

Y a t-il un moyen de donner à R une liste de lags non nuls et qu'il ne calcule que ceux la?

Merci encore pour votre aide

Lulla

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 08 Déc 2006, 18:51

Je cherche une façon en R de régler ce problème :
- soit une fonction qui me permettrait d’évaluer automatiquement la structure ARMA la plus adaptée
- soit une façon de préciser manuellement une liste des lags qui ne sont pas nuls (sans qu’il calcule les autres)

Connaissez vous de telles fonctions?


Non. Dans gls (et lme), l'objectif de la modélisation de l'autocorrélation des résidus est de tenir compte de structures restant dans les résidus afin de fournir des tests "corrects" pour les effets fixes. Il ne faut pas les considérer comme des fonctions permettant de modéliser l'autocorrélation de longues séries (200 obs, c'est déjà bcp !). Il y a d'ailleurs une forte "compétition" entre les différents paramètres aléatoires estimés (arguments weights et correlation, + random avec lme).

Si vous avez une seule corrélation "significative" au lag 52, à mon avis, vous pouvez vous asseoir dessus tranquillement: il y a de grandes chances pour que ce soit un artefact dans les données. Il est plus important de tenir compte des corrélations à court terme, pour lesquelles des modèles simples sont souvent suffisants.

Renaud

Yves Aragon
Messages : 1
Enregistré le : 12 Déc 2005, 15:23

Messagepar Yves Aragon » 19 Déc 2006, 05:02

Renaud Lancelot a écrit :
Je cherche une façon en R de régler ce problème :
- soit une fonction qui me permettrait d’évaluer automatiquement la structure ARMA la plus adaptée
- soit une façon de préciser manuellement une liste des lags qui ne sont pas nuls (sans qu’il calcule les autres)

Connaissez vous de telles fonctions?


La fonction arima() fait ce travail dans R. Vous devriez trouver un exemple ici
http://foad.univ-tlse1.fr/course/view.php?id=411
Cordialement
Yves Aragon
Professeur
Université des Sciences Sociales
GREMAQ
Manufacture des Tabacs
Bat. F porte 215
21 allées de Brienne
31000 Toulouse France


Retourner vers « Archives : Fonctions statistiques »

Qui est en ligne

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

cron