2017-04-25 1 views
-1

auto.arima() gibt mir keine saisonale Komponente für meine Serie, obwohl ich sehen kann, dass es ein Geschenk gibt. Die Funktion gibt mir ein nicht saisonales ARIMA-Auftragsmodell (5,0,0). Also, wenn ich versuche, dieses Modell zu prognostizieren, gibt es nur den Mittelwert. Die Zeitreihe der täglichen Mindesttemperaturen in Melbourne, Australien für zehn Jahre.In R, Auto.arima kann Saisonalität nicht erfassen

Click this link to see the data and the auto.arima forecast

`

library(readr) 

temp <- read_csv("~/Downloads/Melbourne Minimum Temp.csv", 
       col_types = cols(Date = col_date(format = "%m/%d/%y"), 
            Temp = col_number())) 

t <- ts(temp$Temp, start = temp$Date\[1], end = temp$Date[nrow(temp)]) 

auto.arima(t, trace = T) 

`

die Daten als TS-Objekt versucht, mit, als XTS-Objekt, und als ein Vektor.

+0

Sie sollten auch schreiben, wie Sie Ihre Zeitreihen definiert. Wenn auto.arima keine Saisonabhängigkeit erkennt, haben Sie möglicherweise beim Erstellen Ihrer Serie nicht die richtige Häufigkeit angegeben. Sie können auch "auto.arima (..., D = 1)" verwenden, um die saisonale Differenzierung zu erzwingen. –

+0

Ich habe die Serie nicht erstellt; es sind echte Daten der minimalen Tagestemperaturen in Melbourne. Ich habe versucht, D = 1, aber das hat nicht funktioniert. –

+0

Wenn Sie eine nützliche Antwort benötigen, müssen Sie weitere Informationen bereitstellen: Dies könnte eine Teilmenge Ihrer Daten sein, aber zumindest sollten Sie Ihren tatsächlichen Code veröffentlichen, den Sie verwendet haben, um diese Prognose zu erstellen. Vor allem der Teil, wo Sie Ihre Zeitreihe definiert haben. –

Antwort

-1

Nur eine gute gut erklärt erklärt - wie üblich - Blogpost von Rob Hyndman.

https://robjhyndman.com/hyndsight/dailydata/

Der relevante Teil sagt auf Ihre Frage (blockquoting genau die Seite):

Wenn die Zeitreihe in mehr als ein Jahr in Anspruch nehmen lang genug ist, dann es notwendig sein kann, um jährliche Saisonalität sowie wöchentliche Saisonalität zu berücksichtigen. In diesem Fall ist ein multiples saisonales Modell wie TBATS erforderlich.

y <- msts(x, seasonal.periods=c(7,365.25)) 
fit <- tbats(y) 
fc <- forecast(fit) 
plot(fc) 

Dies sollte die wöchentlichen Muster sowie die längeren jährlichen Muster erfassen. Die Periode 365,25 ist die durchschnittliche Länge eines Jahres und erlaubt für Schaltjahre. In einigen Ländern können alternative oder zusätzliche Jahrlängen erforderlich sein.

Ich denke, es tut genau das, was Sie wollen.

Ich habe versucht, auch einfach mit msts

y <- msts(x[1:1800], seasonal.periods=c(7,365.25)) 

die Zeitreihe zu erstellen (Ich schnitt die Zeitreihe in der Hälfte schneller zu sein)

und dann auto.arima() direkt darauf laufen, eine saisonale Komponente mit D zwingt = 1

fc = auto.arima(y,D=1,trace=T,stepwise = F) 

es wird eine Weile dauern .. weil ich gesetzt schrittweise = FALSE (wenn man es ohne Verknüpfungen zu allen Kombinationen aussehen wollen Sie Annäherung einstellen = FALSE auch)

Series: y 
ARIMA(1,0,3)(0,1,0)[365] 

Coefficients: 
     ar1  ma1  ma2  ma3 
     0.9036 -0.3647 -0.3278 -0.0733 
s.e. 0.0500 0.0571 0.0405 0.0310 

sigma^2 estimated as 12.63: log likelihood=-3854.1 
AIC=7718.19 AICc=7718.23 BIC=7744.54 

und dann die Prognose

for_fc = forecast(fc) 
plot(for_fc) 

Ich bin eine Figur mit der vollständigen Zeitreihen Zugabe (rot) auf dem Ausgang des Grundstück (for_fc) und es scheint Anständig arbeiten - aber es war nur ein schneller Test.

enter image description here

Verwandte Themen