R saisonale Zeitreihen

9

Ich benutze die decomposeFunktion in Rund überlege mir die 3 Komponenten meiner monatlichen Zeitreihen (Trend, Saison und Zufall). Wenn ich das Diagramm zeichne oder auf die Tabelle schaue, kann ich deutlich sehen, dass die Zeitreihe von der Saisonalität beeinflusst wird.

Wenn ich jedoch die Zeitreihen auf die 11 saisonalen Dummy-Variablen regressiere, sind nicht alle Koeffizienten statistisch signifikant, was darauf hindeutet, dass es keine Saisonalität gibt.

Ich verstehe nicht, warum ich zwei sehr unterschiedliche Ergebnisse erzielt habe. Ist das jemandem passiert? Mache ich etwas falsch?


Ich füge hier einige nützliche Details hinzu.

Dies ist meine Zeitreihe und die entsprechende monatliche Änderung. In beiden Diagrammen sehen Sie, dass es Saisonalität gibt (oder das möchte ich bewerten). Insbesondere im zweiten Diagramm (das die monatliche Änderung der Serie darstellt) sehe ich ein wiederkehrendes Muster (Höhepunkte und Tiefpunkte in denselben Monaten des Jahres).

Zeitfolgen

MonthlyChange

Unten ist die Ausgabe der decomposeFunktion. Ich weiß zu schätzen, dass die Funktion, wie @RichardHardy sagte, nicht prüft, ob tatsächlich Saisonalität vorliegt. Aber die Zersetzung scheint zu bestätigen, was ich denke.

Zersetzen

Wenn ich jedoch die Zeitreihen für 11 saisonale Dummy-Variablen (Januar bis November, außer Dezember) regressiere, finde ich Folgendes:

    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

Grundsätzlich sind nicht alle Saisonalitätskoeffizienten statistisch signifikant.

Um eine lineare Regression auszuführen, verwende ich die folgende Funktion:

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)

wo ich Yvar als Zeitreihenvariable mit monatlicher Häufigkeit (Häufigkeit = 12) einrichte.

Ich versuche auch, die Trendkomponente der Zeitreihe einschließlich einer Trendvariablen für die Regression zu berücksichtigen. Das Ergebnis ändert sich jedoch nicht.

                  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 ***

Daher lautet meine Frage: Mache ich in der Regressionsanalyse etwas falsch?

Mattiace
quelle
1
@forecaster, hier ist eine Antwort auf Ihre Frage (OP sagt, dass die decomposeFunktion in Rverwendet wird).
Richard Hardy
1
Beim Lesen der Hilfedatei der decomposeFunktion scheint die Funktion nicht zu testen, ob Saisonalität vorliegt. Stattdessen werden nur Durchschnittswerte für jede Saison ermittelt, der Mittelwert abgezogen und als saisonale Komponente bezeichnet. Es würde also eine saisonale Komponente erzeugen, unabhängig davon, ob eine echte zugrunde liegende saisonale Komponente oder nur Lärm vorliegt. Dies erklärt jedoch nicht, warum Ihre Dummies unbedeutend sind, obwohl Sie sagen, dass die Saisonalität anhand eines Diagramms der Daten sichtbar ist. Könnte es sein, dass Ihre Stichprobe zu klein ist, um signifikante saisonale Dummies zu erhalten? Sind sie gemeinsam von Bedeutung?
Richard Hardy
3
Sie müssen sich die Skalen ansehen. Das saisonale Diagramm zeigt, dass die saisonalen Schwankungen zwischen -0,02 und +0,04 liegen, während die tatsächlichen Werte zwischen 4 und 6 Milliarden liegen. Die Zerlegungsfunktion zwingt Ihre Daten dazu, eine gewisse Saisonalität anzuzeigen, weshalb ein vernachlässigbarer Wert angezeigt wird. Ihre Daten enthalten keine Saisonalität.
Prognostiker
1
Ich dachte, bei der Saisonalität geht es eher um Bewegungen mit einer bestimmten "festen" Frequenz als um die Größe der Bewegung. Die Skalen sind unterschiedlich, da das erste Diagramm ein Gleichgewicht (in Pfund) und das zweite die Änderung (ausgedrückt in Prozent) zeigt. Ich habe gerade versucht, die Regression erneut auszuführen: Wenn ich einen Polynomtrend berücksichtige, beginnt ein gewisser Koeffizient signifikant zu werden. Ich denke, wie @danno vorgeschlagen hat, ist der Trend sehr bedeutend.
Mattiace
1
Der Canova- und Hansen-Test kann Ihnen weitere Informationen über das Vorhandensein und die Stabilität eines saisonalen Musters in Ihren Daten geben. Für einige Anwendungen dieses Tests siehe beispielsweise diesen Beitrag , der auch den Link zum Originalpapier und zum Beispielcode enthält.
Javlacalle

Antworten:

1

Machst du die Regression auf die Daten , nachdem Sie haben entfernt den Trend? Sie haben einen positiven Trend und Ihre saisonale Signatur ist wahrscheinlich in Ihrer Regression maskiert (Varianz aufgrund von Trend oder Fehler ist größer als aufgrund von Monat), es sei denn, Sie haben den Trend in Yvar berücksichtigt ...

Ich bin auch nicht besonders zuversichtlich mit Zeitreihen, aber sollte nicht jeder Beobachtung ein Monat zugewiesen werden, und Ihre Regression sieht ungefähr so ​​aus?

lm(Yvar ~ Time + Month)

Entschuldigung, wenn das keinen Sinn ergibt ... Ist Regression hier am sinnvollsten?

danno
quelle
Ich habe in einem ökonometrischen Lehrbuch (Wooldridge) gelesen, dass es, wenn Sie einen "Zeit" -Faktor in die Regression einführen, so ist, als würden Sie Ihre ursprüngliche Zeitreihe herabsetzen. Für den "Zeit" -Faktor meine ich einen Vektor wie [1, 2, ..., n] mit n = zur Anzahl der Beobachtungen. Ich verstehe deinen zweiten Punkt nicht wirklich. Meine zweite Regression sieht folgendermaßen aus: lm.r = lm (Yvar ~ Var Jan + Var Nov). Hast du das gemeint? F e b + . . . + V a rTime+VarFeb+...+Var
Mattiace
Es wäre hilfreich, einige Zeilen Ihrer Daten zu sehen. Aber ich stelle mir vor, Sie haben drei Spalten: Zeit, Yvar, Monat. Die Zeilen sind Beobachtungen. Daher würde ich denken, dass die Faktoren in Ihrem lm () Zeit und Monat sind (nicht die Faktorstufen des Monats). Ich denke auch, dass es einige Probleme mit lm () in Zeitreihen gibt ... die Beobachtungen sind nicht unabhängig - zeitlich autokorreliert.
Danno
1

In Ihrer grafischen Darstellung der Zeitreihen ist es offensichtlich, dass "Trend" - eine lineare Komponente in der Zeit - der wichtigste Beitrag zur Realisierung ist. Wir möchten darauf hinweisen, dass der wichtigste Aspekt dieser Zeitreihe der monatliche stabile Anstieg ist.

Danach würde ich kommentieren, dass die saisonale Variation im Vergleich winzig ist. Es ist daher nicht überraschend, dass das lineare Regressionsmodell bei monatlichen Messungen über 6 Jahre (insgesamt nur 72 Beobachtungen) nicht genau genug ist , um einen der 11-Monats-Kontraste als statistisch signifikant zu identifizieren. Es ist überraschend weiterhin nicht , dass der Zeiteffekt nicht statistische Signifikanz erreichen, weil es die gleiche annähernd konsistente lineare Erhöhung ist es, alle 72 Beobachtungen auftritt über, abhängig ihren saisonalen Effekt.

Das Fehlen einer statistischen Signifikanz für einen der 11-Monats-Kontraste bedeutet nicht , dass es keine saisonalen Effekte gibt. Wenn Sie ein Regressionsmodell verwenden, um festzustellen, ob eine Saisonalität vorliegt, ist der geeignete Test der verschachtelte 11-Freiheitsgrad-Test, der gleichzeitig die statistische Signifikanz jedes Monatskontrasts bewertet. Sie würden einen solchen Test erhalten, indem Sie eine ANOVA, einen Likelihood-Ratio-Test oder einen robusten Wald-Test durchführen. Zum Beispiel:

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
quelle
0

Ich weiß nicht, ob es Ihr Fall ist, aber das ist mir passiert, als ich anfing, Zeitreihen in R zu analysieren, und das Problem war, dass ich den Zeitreihenzeitraum beim Erstellen des Zeitreihenobjekts zum Zerlegen nicht korrekt angegeben hatte. In der Zeitreihenfunktion gibt es einen Parameter, mit dem Sie die Häufigkeit festlegen können. Auf diese Weise werden die saisonalen Trends korrekt zerlegt.

jmnavarro
quelle
jmnavarro, ich habe die Häufigkeit in der Zerlegungsfunktion korrekt definiert (= 12, da ich monatliche Daten habe). Tatsächlich bin ich mit dem Ergebnis dieser Funktion zufrieden. Meine Frage ist, warum ich nicht das gleiche Ergebnis finde (Saisonalität ist signifikant), wenn ich eine lineare Regression mit Dummy-Variablen durchführe. Ich habe es sowohl mit R als auch mit Excel gemacht und die Ergebnisse sind die gleichen: Dummy-Koeffizienten, die statistisch nicht signifikant sind. Dies steht im Widerspruch zu dem, was ich zuvor in der Zerlegungsfunktion gefunden habe. Ich verstehe nicht, ob ich hier
draußen
Es stimmt, tut mir leid, ich habe Ihre Frage nicht vollständig verstanden. Es wäre hilfreich, wenn Sie Ihren Code veröffentlichen könnten, damit wir versuchen könnten, ihn zu reproduzieren.
jmnavarro