Ich benutze die decompose
Funktion in R
und ü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).
Unten ist die Ausgabe der decompose
Funktion. 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.
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?
quelle
decompose
Funktion inR
verwendet wird).decompose
Funktion 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?Antworten:
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?
Entschuldigung, wenn das keinen Sinn ergibt ... Ist Regression hier am sinnvollsten?
quelle
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))
quelle
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.
quelle