R serie storiche stagionali


9

Uso la decomposefunzione Re trovo i 3 componenti delle mie serie storiche mensili (trend, stagionale e casuale). Se tracciamo il grafico o guardo il tavolo, posso vedere chiaramente che le serie storiche sono influenzate dalla stagionalità.

Tuttavia, quando regredisco le serie temporali sulle 11 variabili fittizie stagionali, tutti i coefficienti non sono statisticamente significativi, suggerendo che non vi è stagionalità.

Non capisco perché ottengo due risultati molto diversi. È successo a qualcuno? Sto facendo qualcosa di sbagliato?


Aggiungo qui alcuni dettagli utili.

Questa è la mia serie storica e la corrispondente variazione mensile. In entrambi i grafici, puoi vedere che c'è stagionalità (o questo è ciò che vorrei valutare). Soprattutto, nel secondo grafico (che è il cambio mensile della serie) posso vedere uno schema ricorrente (punti alti e punti bassi negli stessi mesi dell'anno).

TimeSeries

MonthlyChange

Di seguito è riportato l'output della decomposefunzione. Apprezzo il fatto che, come affermato da @RichardHardy, la funzione non verifichi se vi sia effettiva stagionalità. Ma la decomposizione sembra confermare ciò che penso.

Decomporsi

Tuttavia, quando regredisco alle serie temporali su 11 variabili fittizie stagionali (da gennaio a novembre, escluso dicembre), trovo quanto segue:

    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

Fondamentalmente, tutti i coefficienti di stagionalità non sono statisticamente significativi.

Per eseguire la regressione lineare uso la seguente funzione:

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)

dove ho impostato Yvar come variabile di serie temporale con frequenza mensile (frequenza = 12).

Cerco anche di tenere conto della componente di tendenza delle serie temporali, compresa una variabile di tendenza alla regressione. Tuttavia, il risultato non cambia.

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

Quindi la mia domanda è: sto facendo qualcosa di sbagliato nell'analisi della regressione?


1
@forecaster, ecco una risposta alla tua domanda (OP dice che la decomposefunzione Rè usata).
Richard Hardy,

1
Leggendo il file di aiuto della decomposefunzione, sembra che la funzione non verifichi se c'è stagionalità. Invece, ottiene solo medie per ogni stagione, sottrae la media e chiama questa la componente stagionale. Quindi produrrebbe una componente stagionale indipendentemente dal fatto che ci sia una vera componente stagionale sottostante o solo rumore. Tuttavia, questo non spiega perché i tuoi manichini siano insignificanti anche se dici che la stagionalità è visibile da un grafico dei dati. Potrebbe essere che il tuo campione sia troppo piccolo per ottenere manichini stagionali significativi? Sono congiuntamente significativi?
Richard Hardy,

3
Devi guardare le scale, il grafico stagionale mostra che la variazione stagionale è compresa tra -0,02 e +0,04, mentre i valori effettivi vanno da 4 a 6 miliardi. La funzione di decomposizione forza i tuoi dati a mostrare una certa stagionalità, per questo motivo mostra un valore trascurabile. Non c'è stagionalità nei tuoi dati.
meteorologo

1
Ho pensato che la stagionalità riguardasse più i movimenti con una certa frequenza "fissa" piuttosto che l'entità del movimento. Le scale sono diverse in quanto il primo grafico mostra un saldo (in termini di sterline) e il secondo è la variazione (espressa in termini percentuali). Ho appena provato a ripetere la regressione: se tengo conto di una tendenza polinomiale, alcuni coefficienti iniziano ad essere significativi. Immagino, come suggerito da @danno, che la tendenza sia molto significativa.
Mattiace,

1
Il test Canova e Hansen potrebbe fornire ulteriori informazioni sulla presenza e la stabilità di un modello stagionale nei dati. Per alcune applicazioni di questo test vedere ad esempio questo post , che fornisce anche il collegamento al documento originale e al codice di esempio.
javlacalle,

Risposte:


1

Stai facendo la regressione sui dati dopo aver rimosso la tendenza? Hai una tendenza positiva e la tua firma stagionale è probabilmente mascherata nella tua regressione (la varianza dovuta alla tendenza o all'errore è maggiore di quella dovuta al mese), a meno che tu non abbia tenuto conto della tendenza in Yvar ...

Inoltre, non sono terribilmente fiducioso con le serie temporali, ma ogni osservazione non dovrebbe essere assegnata a un mese e la tua regressione dovrebbe assomigliare a questa?

lm(Yvar ~ Time + Month)

Ci scusiamo se non ha senso ... La regressione ha più senso qui?


Ho letto su un libro di testo di Econometrics (Wooldridge) che se si introduce un fattore "temporale" nella regressione, è come ridurre il trend delle serie storiche originali. Per fattore "tempo" intendo un vettore come [1, 2, ..., n] con n = al numero di osservazioni. Non capisco davvero il tuo secondo punto. La mia seconda regressione è simile alla seguente: lm.r = lm (Yvar ~ Var Jan + Var Nov). È questo che intendevi? F e b + . . . + V a rTime+VarFeb+...+Var
Mattiace,

Aiuterebbe a vedere alcune righe dei tuoi dati. Ma immagino che tu abbia tre colonne, Time, Yvar, Month. Le righe sono osservazioni. Quindi, penso che i fattori nel tuo lm () sarebbero Time e Month (non i livelli dei fattori del Month). Inoltre, penso che ci siano alcuni problemi con lm () nelle serie temporali ... l'osservazione non è indipendente - temporalmente autocorrelata.
danno

1

Nella tua rappresentazione grafica delle serie temporali, è ovvio che la "tendenza" - una componente lineare nel tempo - è il contributo più sostanziale alla realizzazione. Vorremmo commentare che l'aspetto più importante di questa serie storica è l'aumento stabile ogni mese.

Dopodiché, vorrei commentare che la variazione stagionale è minuscola al confronto. Non sorprende, quindi, con misure mensili prese in 6 anni (per un totale di solo 72 osservazioni) il modello di regressione lineare non riesce ad avere la precisione di identificare statisticamente significativo alcuno dei contrasti di 11 mesi. Non è inoltre sorprendente che l'effetto tempo fa raggiungere significatività statistica, perché è lo stesso aumento lineare approssimativamente costante si produce nel corso tutti i 72 osservazioni, subordinatamente alla loro effetto stagionale.

La mancanza di significatività statistica per uno qualsiasi dei contrasti di 11 mesi non significa che non vi siano effetti stagionali. In effetti, se si dovesse utilizzare un modello di regressione per determinare se esiste una stagionalità, il test appropriato è il test nidificato di 11 gradi di libertà che valuta simultaneamente la significatività statistica del contrasto di ogni mese. Otterresti un test del genere conducendo un ANOVA, un test del rapporto di verosimiglianza o un robusto test Wald. Per esempio:

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


0

Non so se è il tuo caso, ma mi è successo quando ho iniziato ad analizzare le serie temporali in R e il problema era che non avevo dichiarato correttamente il periodo delle serie temporali durante la creazione dell'oggetto serie temporali per scomporlo. C'è un parametro nella funzione delle serie temporali che consente di specificare la sua frequenza. In questo modo, decompone correttamente le sue tendenze stagionali.


jmnavarro, ho definito correttamente la frequenza nella funzione di decomposizione (= 12 dato che ho i dati mensili). In effetti, sono contento del risultato di questa funzione. La mia domanda è perché non trovo lo stesso risultato (la stagionalità è significativa) quando eseguo una regressione lineare usando variabili fittizie. L'ho fatto sia con R che con Excel ed i risultati sono gli stessi: coefficienti fittizi non statisticamente significativi. Questo è contro ciò che ho trovato in precedenza nella funzione di decomposizione. Non capisco se mi manca qualcosa qui
Mattiace,

Vero, scusa, non ho capito completamente la tua domanda. Sarebbe utile se tu potessi pubblicare il tuo codice, così potremmo provare a riprodurlo.
jmnavarro,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.