Ich habe eine Frage zur Modellierung von Zeitreihen in R. Meine Daten bestehen aus der folgenden Matrix:
1 0.03333333 0.01111111 0.9555556
2 0.03810624 0.02309469 0.9387991
3 0.00000000 0.03846154 0.9615385
4 0.03776683 0.03119869 0.9310345
5 0.06606607 0.01201201 0.9219219
6 0.03900325 0.02058505 0.9404117
7 0.03125000 0.01562500 0.9531250
8 0.00000000 0.00000000 1.0000000
9 0.04927885 0.01802885 0.9326923
10 0.06106870 0.02290076 0.9160305
11 0.03846154 0.00000000 0.9615385
12 0.00000000 0.00000000 1.0000000
13 0.06028636 0.03843256 0.9012811
14 0.09646302 0.05144695 0.8520900
15 0.04444444 0.06666667 0.8888889
Diese Matrix hat insgesamt 200 Zeilen.
Wie Sie in jeder Situation sehen können, ist die Summe jeder Zeile 1, was darauf zurückzuführen ist, dass die Werte der Prozentsatz eines Ganzen sind. Zum Beispiel enthält Zeile 1 3,33% der Variablen a, 1,11% der Variablen 2 und 95,5% der verifizierbaren 3. Die erste Kollomne gibt das Jahr an, in dem die Werte gemessen werden.
Mein Ziel ist es, eine Vorhersage für die nächsten 5 Jahre zu machen, also von Jahr 200 bis 205.
Ich kann das tun, indem ich drei normale Zeitreihen prognostiziere. Für diese Prognose ist die Gesamtsumme jedoch niemals gleich 1, was sehr wichtig ist. Normalerweise werden Techniken wie Arima und exponentielle Glättung verwendet.
Kennt jemand eine Methode, um eine Prognose für ein solches Problem zu erstellen?
quelle
Antworten:
Sie versuchen, eine kompositorische Zeitreihe vorherzusagen. Das heißt, Sie haben drei Komponenten, die alle zwischen 0 und 1 liegen und sich zu 1 addieren müssen.
Sie können dieses Problem mithilfe der standardmäßigen exponentiellen Glättung mithilfe einer geeigneten verallgemeinerten logistischen Transformation beheben. Auf dem Internationalen Symposium für Prognosen 2010 gab es eine Präsentation von Koehler, Snyder, Ord & Beaumont , die sich in ein Papier verwandelte ( Snyder et al., 2017, International Journal of Forecasting ).
Lassen Sie uns dies mit Ihren Daten durchgehen. Lesen Sie die Daten in eine Matrix
obs
von Zeitreihen:Sie können überprüfen, ob dies funktioniert hat, indem Sie tippen
Jetzt haben Sie ein paar Nullen, was ein Problem sein wird, wenn Sie Logarithmen nehmen. Eine einfache Lösung besteht darin, alles, was weniger als ein kleines auf dieses :ϵ ϵ
Jetzt summieren sich die geänderten Zeilen nicht mehr zu 1. Wir können das korrigieren (obwohl ich denke, dass dies die Prognose verschlechtern könnte):
Jetzt transformieren wir die Daten gemäß Seite 35 der Präsentation:
Laden Sie das
forecast
Paket und legen Sie einen Horizont von 5 Zeitpunkten fest:Modellieren und prognostizieren Sie nun die transformierten Daten spaltenweise. Hier rufe ich einfach an
ets()
, was versuchen wird, ein exponentielles Glättungsmodell für den Zustandsraum anzupassen. Es stellt sich heraus, dass für alle drei Serien eine einzige exponentielle Glättung verwendet wird. Insbesondere wenn Sie jedoch mehr als 15 Zeiträume haben, werden möglicherweise Trendmodelle ausgewählt. Oder wenn Sie monatliche Daten haben, erklären Sie R, dass Sie eine potenzielle Saisonalität haben, indem Siets()
mitfrequency=12
- verwenden. Dannets()
werden saisonale Modelle betrachtet.Als nächstes transformieren wir die Prognosen gemäß Seite 38 der Präsentation zurück:
Lassen Sie uns abschließend Geschichten und Prognosen zeichnen:
EDIT: Ein Artikel über die Vorhersage kompositorischer Zeitreihen ist gerade erschienen. Ich habe es nicht gelesen, aber es könnte von Interesse sein.
quelle
ets()
imforecast
Paket für die exponentielle Glättung des Zustandsraums).