/ / Generierte nicht-stationäre Daten und auto.arima in R - r, Zeitreihen, Analytik, Vertrieb

Generierte nicht-stationäre Daten und auto.arima in R - r, Zeitreihen, Analytik, Vertrieb

Ich habe meine eigenen fiktiven Verkaufsdaten generiert, um eine Zeitreihenanalyse durchzuführen.

Es soll ein wachsendes Unternehmen repräsentieren undDeshalb habe ich mit einem Trend gearbeitet. Ich lese jedoch einige Tutorials durch und lese oft die Information, dass nicht-stationäre Zeitreihen von der auto.arima-Funktion nicht vorhergesagt werden sollten.

Aber ich erhalte Ergebnisse, die Sinn ergeben. Wenn ich die Daten unterscheiden würde (was ich auch gemacht habe), macht die Ausgabe keinen Sinn.

Also hier kommt meine Frage: Kann ich das benutzen? auto.arima Funktion mit meinen Daten, das hat offensichtlich einen Trend?

Mit freundlichen Grüßen und vielen Dank im Voraus, Francisco

eps <- rnorm(100, 30, 20)
trend <- seq(1, 100, 1)
trend <- 3 * trend
Sales <- trend + eps
timeframe<-seq(as.Date("2008/9/1"),by="month",length.out=100)
Data<-data.frame(Sales,timeframe)

plot(Data$timeframe,Data$Sales)

ts=ts(t(Data[,1]))
plot(ts[1,],type="o",col="black")

md=rwf(ts[1,],h=12,drift=T,level=c(80,95))
auto.arima(ts[1,])

Mithilfe der Prognosefunktion können wir die erwarteten Umsätze für das nächste Jahr grafisch darstellen: plot(forecast(auto.arima(ts[1,]),h=12))

Die Verwendung der Prognosefunktion mit unserer automatisierten ARIMA kann uns bei der Planung für das nächste Quartal helfen

forecast(auto.arima(ts[1,]),h=4)
plot(forecast(auto.arima(ts[1,])))

Ein anderer Weg wäre, die Autoplot-Funktion zu verwenden

fc<-forecast(ts[1,])
autoplot(fc)

Der nächste Schritt besteht darin, unsere Zeitreihen zu analysieren. Ich führe das aus ADF-Test, die die Nullhypothese hat, dass die Daten nicht stationär sind. Bei einer Standardschwelle von 5% müsste unser p-Wert also größer als 0,05 sein, um als nicht stationär zertifiziert zu werden.

library(tseries)
adf=adf.test(ts[1,])
adf

Die Ausgabe legt nahe, dass die Daten nicht stationär sind:

acf
acf=Acf(ts[1,])
Acf(ts[1,])

Die Autokorrelation nimmt nahezu stetig ab, dies deutet auch auf nichtstationäre Daten hin. Machen a kpss.test sollte überprüfen, dass unsere Daten nicht stationär sind, da ihre Nullhypothese das Gegenteil des adf-Tests ist.

Erwarten wir einen Wert kleiner als 0,05

kpss=kpss.test(ts[1,])
kpss

Wir erhalten einen p-Wert von 0,01, was beweist, dass die Daten einen Trend haben

ndiffs(ts[1,])

diff.data=diff(ts[1,])
auto.arima(diff.data)
plot(forecast(diff.data))

Antworten:

1 für die Antwort № 1

Zur Beantwortung Ihrer Frage - JaSie können die Funktion auto.arima () im Prognosepaket für nicht stationäre Daten verwenden.

Wenn Sie sich die Hilfedatei für auto ansehen.arima () (durch Eingabe von? auto.arima) werden Sie sehen, dass Sie den Parameter "d" angeben können - dies ist die Reihenfolge der Differenzbildung - die erste Reihenfolge bedeutet, dass Sie die Daten einmal unterscheiden, die zweite Reihenfolge bedeutet Sie Unterschied die Daten zweimal usw. Sie können auch festlegen, dass dieser Parameter nicht angegeben werden soll. In diesem Fall bestimmt die Funktion auto.arima () die geeignete Reihenfolge der Differenzierung anhand des Tests "kpss". Es gibt andere Unit-Root-Tests wie den Augmented Dickey-Fuller, den Sie in der Funktion auto.arima verwenden können, indem Sie test = "adf" festlegen. Es hängt wirklich von deiner Vorliebe ab.

Weitere Informationen zur Funktion auto.arima finden Sie auf Seite 11 und den folgenden Seiten:

https://cran.r-project.org/web/packages/forecast/forecast.pdf