R séries chronologiques saisonnières

9

J'utilise la decomposefonction dans Ret propose les 3 composantes de ma série chronologique mensuelle (tendance, saisonnière et aléatoire). Si je trace le graphique ou regarde le tableau, je peux clairement voir que la série chronologique est affectée par la saisonnalité.

Cependant, lorsque je régresse la série chronologique sur les 11 variables indicatrices saisonnières, tous les coefficients ne sont pas statistiquement significatifs, ce qui suggère qu'il n'y a pas de saisonnalité.

Je ne comprends pas pourquoi j'arrive à deux résultats très différents. Est-ce arrivé à quelqu'un? Est-ce que je fais quelque chose de mal?


J'ajoute ici quelques détails utiles.

Ceci est ma série chronologique et la variation mensuelle correspondante. Dans les deux graphiques, vous pouvez voir qu'il y a une saisonnalité (ou c'est ce que j'aimerais évaluer). Surtout, dans le deuxième graphique (qui est la variation mensuelle de la série), je peux voir une tendance récurrente (points hauts et points bas au cours des mêmes mois de l'année).

Des séries chronologiques

Changement mensuel

Voici la sortie de la decomposefonction. J'apprécie que, comme l'a dit @RichardHardy, la fonction ne vérifie pas s'il existe une saisonnalité réelle. Mais la décomposition semble confirmer ce que je pense.

Décomposer

Cependant, lorsque je régresse la série chronologique sur 11 variables fictives saisonnières (de janvier à novembre, à l'exclusion de décembre), je trouve ce qui suit:

    Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
    (Intercept) 5144454056  372840549  13.798   <2e-16 ***
    Jan     -616669492  527276161  -1.170    0.248    
    Feb     -586884419  527276161  -1.113    0.271    
    Mar     -461990149  527276161  -0.876    0.385    
    Apr     -407860396  527276161  -0.774    0.443    
    May     -395942771  527276161  -0.751    0.456    
    Jun     -382312331  527276161  -0.725    0.472    
    Jul     -342137426  527276161  -0.649    0.520    
    Aug     -308931830  527276161  -0.586    0.561    
    Sep     -275129629  527276161  -0.522    0.604    
    Oct     -218035419  527276161  -0.414    0.681    
    Nov     -159814080  527276161  -0.303    0.763

Fondamentalement, tous les coefficients de saisonnalité ne sont pas statistiquement significatifs.

Pour exécuter une régression linéaire, j'utilise la fonction suivante:

lm.r = lm(Yvar~Var$Jan+Var$Feb+Var$Mar+Var$Apr+Var$May+Var$Jun+Var$Jul+Var$Aug+Var$Sep+Var$Oct+Var$Nov)

où j'ai configuré Yvar comme une variable de série chronologique avec une fréquence mensuelle (fréquence = 12).

J'essaie également de prendre en compte la composante tendance de la série chronologique, y compris une variable de tendance à la régression. Cependant, le résultat ne change pas.

                  Estimate Std. Error t value Pr(>|t|)    
    (Intercept) 3600646404   96286811  37.395   <2e-16 ***
    Jan     -144950487  117138294  -1.237    0.222    
    Feb     -158048960  116963281  -1.351    0.183    
    Mar      -76038236  116804709  -0.651    0.518    
    Apr      -64792029  116662646  -0.555    0.581    
    May      -95757949  116537153  -0.822    0.415    
    Jun     -125011055  116428283  -1.074    0.288    
    Jul     -127719697  116336082  -1.098    0.278    
    Aug     -137397646  116260591  -1.182    0.243    
    Sep     -146478991  116201842  -1.261    0.214    
    Oct     -132268327  116159860  -1.139    0.261    
    Nov     -116930534  116134664  -1.007    0.319    
    trend     42883546    1396782  30.702   <2e-16 ***

D'où ma question: est-ce que je fais quelque chose de mal dans l'analyse de régression?

mattiace
la source
1
@forecaster, voici une réponse à votre question (OP indique que la decomposefonction in Rest utilisée).
Richard Hardy
1
En lisant le fichier d'aide de la decomposefonction, il semble que la fonction ne teste pas s'il y a saisonnalité. Au lieu de cela, il obtient simplement des moyennes pour chaque saison, soustrait la moyenne et appelle cela la composante saisonnière. Il produirait donc une composante saisonnière, qu'il y ait une véritable composante saisonnière sous-jacente ou simplement du bruit. Néanmoins, cela n'explique pas pourquoi vos variables muettes sont insignifiantes bien que vous disiez que la saisonnalité est visible à partir d'un tracé des données. Se pourrait-il que votre échantillon soit trop petit pour obtenir des mannequins saisonniers importants? Sont-ils significatifs conjointement?
Richard Hardy
3
Vous devez regarder les échelles, le graphique saisonnier montre que la variation saisonnière est comprise entre -0,02 et +0,04, tandis que les valeurs réelles varient de 4 milliards à 6 milliards. La fonction de décomposition oblige vos données à montrer une certaine saisonnalité, c'est pourquoi elles affichent une valeur négligeable. Il n'y a aucune saisonnalité dans vos données.
prévisionniste
1
Je pensais que la saisonnalité concernait plus les mouvements avec une certaine fréquence "fixe" que l'ampleur du mouvement. Les échelles sont différentes car le premier graphique montre un équilibre (en termes de livres) et le second est le changement (exprimé en pourcentage). Je viens d'essayer de relancer la régression: si je prends en compte une tendance polynomiale, certains coefficients commencent à être significatifs. Je suppose que, comme l'a suggéré @danno, la tendance est très significative.
mattiace
1
Le test de Canova et Hansen peut vous donner quelques informations supplémentaires sur la présence et la stabilité d'un modèle saisonnier dans vos données. Pour certaines applications de ce test, voir par exemple cet article , qui donne également le lien vers le papier d'origine et un exemple de code.
javlacalle

Réponses:

1

Faites-vous la régression sur les données après avoir supprimé la tendance? Vous avez une tendance positive, et votre signature saisonnière est probablement masquée dans votre régression (la variance due à la tendance ou à l'erreur, est plus grande que celle due au mois), sauf si vous avez expliqué la tendance dans Yvar ...

De plus, je ne suis pas très confiant avec les séries chronologiques, mais ne devrait-on pas attribuer à chaque observation un mois, et votre régression ressemble à ceci?

lm(Yvar ~ Time + Month)

Toutes mes excuses si cela n'a aucun sens ... La régression est-elle la plus logique ici?

danno
la source
J'ai lu sur un manuel d'économétrie (Wooldridge) que si vous introduisez un facteur «temps» dans la régression, c'est comme une décroissance de votre série chronologique d'origine. Pour le facteur "temps", je veux dire un vecteur tel que [1, 2, ..., n] avec n = au nombre d'observations. Je ne comprends pas vraiment votre deuxième point. Ma deuxième régression ressemble à ceci: lm.r = lm (Yvar ~ Var Jan + Var Nov). Est-ce que c'est ce que vous vouliez dire? F e b + . . . + V a rTime+VarFeb+...+Var
mattiace
Il serait utile de voir quelques lignes de vos données. Mais, j'imagine que vous avez trois colonnes, Time, Yvar, Month. Les rangées sont des observations. Ainsi, je pense que les facteurs dans votre lm () seraient le temps et le mois (pas les niveaux de facteurs du mois). De plus, je pense qu'il y a quelques problèmes avec lm () sur les séries chronologiques ... les observations ne sont pas indépendantes - temporellement autocorrélées.
danno
1

Dans votre représentation graphique de la série chronologique, il est évident que la "tendance" - une composante linéaire dans le temps - est le principal contributeur substantiel à la réalisation. Nous dirions que l'aspect le plus important de cette série chronologique est la hausse stable chaque mois.

Après cela, je dirais que la variation saisonnière est minuscule par comparaison. Il n'est donc pas surprenant qu'avec des mesures mensuelles prises sur 6 ans (un total de seulement 72 observations), le modèle de régression linéaire n'ait pas la précision d'identifier l'un des contrastes de 11 mois comme statistiquement significatif. Il est par ailleurs pas surprenant que l'effet du temps n'atteindre une signification statistique, car elle est la même augmentation linéaire environ constante se produisant sur les 72 observations, sous réserve de leurs effets saisonniers.

L'absence de signification statistique pour aucun des contrastes de 11 mois ne signifie pas qu'il n'y a pas d'effets saisonniers. En fait, si vous deviez utiliser un modèle de régression pour déterminer s'il y a une saisonnalité, le test approprié est le test imbriqué de 11 degrés de liberté qui évalue simultanément la signification statistique du contraste de chaque mois. Vous obtiendriez un tel test en effectuant un ANOVA, un test de rapport de vraisemblance ou un test de Wald robuste. Par exemple:

library(lmtest) model.mt <- lm(outcome ~ time + month) model.t <- lm(outcome ~ time) aov(model.mt, model.t) lrtest(model.mt, model.t) library(sandwich) ## autoregressive consistent robust standard errors waldtest(lrtest, lmtest, vcov.=function(x)vcovHAC(x))

AdamO
la source
0

Je ne sais pas si c'est votre cas, mais cela m'est arrivé lorsque j'ai commencé à analyser les séries temporelles dans R et le problème était que je n'avais pas correctement indiqué la période de série temporelle lors de la création de l'objet série temporelle pour le décomposer. Il y a un paramètre dans la fonction de série chronologique qui vous permet de spécifier sa fréquence. Ce faisant, il décompose correctement ses tendances saisonnières.

jmnavarro
la source
jmnavarro, j'ai défini la fréquence correctement dans la fonction de décomposition (= 12 car j'ai des données mensuelles). En fait, je suis satisfait du résultat de cette fonction. Ma question est pourquoi je ne trouve pas le même résultat (la saisonnalité est significative) lorsque je fais une régression linéaire en utilisant des variables muettes. Je l'ai fait à la fois avec R et Excel et les résultats sont les mêmes: les coefficients fictifs ne sont pas statistiquement significatifs. C'est contre ce que j'ai trouvé précédemment dans la fonction de décomposition. Je ne comprends pas si je manque quelque chose ici
mattiace
C'est vrai, désolé, je n'ai pas complètement compris votre question. Il serait utile que vous puissiez publier votre code, afin que nous puissions essayer de le reproduire.
jmnavarro