Dynamic Factor Model: Fehlende Werte einsetzen
Verfasst: Di Mär 05, 2024 9:57 am
Hi zusammen,
derzeit versuche ich mein Bestes, mit einem Dynamic Factor Modell (DFM) bei makroökonomischen Daten umzugehen, bin aber auf ein paar Probleme gestoßen und hoffe, jemand kann mir weiterhelfen.
Folgende Ausgangssituation:
Ich habe ausführliche Zeitreihendaten von 1990 - 2022 zu diversen geldpolitischen Variablen und würde gerne ein Dynamic Factor Model anwenden. Die Zeitreihendaten habe ich bereits als Zeitreihen markiert, d.h. das sind keine Data Frames mit einer "Datumsspalte", sondern liegen bereits als ts Objekt vor. Ebenso habe ich bereits die Zeitreihen stationär gemacht. Bei ein paar Variablen liegen ab 2012 fehlende Werte vor.
Mein Ziel:
Mein Ziel wäre es, mithilfe des DFM die Zusammenhänge zwischen allen Variablen zu modellieren und dann eben für die fehlenden Werte neue Werte einzusetzen, welche gegeben der Beobachtungen der anderen Variablen am wahrscheinlichsten sind (gegeben des ursprünglichen Zusammenhangs zwischen den Variablen). Das heißt: Von 1990 - 2012 liegen mir sämtliche Beobachtungen vor und ab 2012 fehlen bei manchen Variablen Werte. Gegeben der vorherigen Beziehungen zwischen den Variablen, sollen nun diese fehlenden Werte für wahrscheinliche Werte eingesetzt werden, gegeben der Entwicklung der restlichen Variablen (von welchen ich Beobachtungen vorliegen habe).
Mein bisheriges Vorgehen:
Mein erster Versuch wäre es gewesen, die stationären Zeitreihen mithilfe des DFM Befehls zu einem Dynamic Factor Model zu schätzen:
DFM1 = DFM(ts_missing_used, r=4, p=1, em.method = "BM") ,
wo ts_missing_used die stationären Zeitreihen sind, vier Faktoren genommen werden (bereits durch Ellbogenkriterium ermittelt) und nach dem Schwarz Kriterium 1 Lag genommen wird. Die Methode zur expectation maximization ist die von Banbura und Modugno (2014), da diese bei systematisch fehlenden Werten empfehlenswert ist. Nach dem Befehl entsteht eine DFM1 Liste, wo die Eigenwerte und Eigenvektoren abgespeichert sind sowie Factor Estimates nach unterschiedlichen Verfahren, die Factor transition matrix usw.
Leider liegen nun für die fehlende Werte auch bei den fitted values fehlende Werte vor. Ich würde aber gerne für diese die wahrscheinlichsten Werte einsetzen. In der Literatur heißt es, man kann dafür den Kalman Filter benutzen, aber ich bin mir nicht sicher, wie ich dies programmieren soll.
Ebenso bin ich mir noch unschlüssig, ob ich nicht den Datensatz aufspalten soll, also in 1990-2012 und 2012-2022, und das DFM von 1990-2012 schätzen soll und dann die Korrelationen und Faktoren verwenden soll, um die vergangenen Zusammenhänge zu nutzen, um die fehlenden Daten von 2012-2022 zu erklären/ersetzen, gegeben der Entwicklung der Variablen, von welchen Beobachtungen vorliegen. Hier weiß ich dann aber nicht, wie ich im zweiten Teil, also von 2012-2022 vorgehen soll. Müsste ich dafür von meinem dfm Objekt vom ersten Zeitbereich (1990-2012) die Faktoren extrahieren und für eine zweite Gleichung verwenden?
Es würde mich außerordentlich freuen, wenn sich jemand mit dem Thema auskennt und mir weiterhelfen kann!
Liebe Grüße
Felizitas
derzeit versuche ich mein Bestes, mit einem Dynamic Factor Modell (DFM) bei makroökonomischen Daten umzugehen, bin aber auf ein paar Probleme gestoßen und hoffe, jemand kann mir weiterhelfen.
Folgende Ausgangssituation:
Ich habe ausführliche Zeitreihendaten von 1990 - 2022 zu diversen geldpolitischen Variablen und würde gerne ein Dynamic Factor Model anwenden. Die Zeitreihendaten habe ich bereits als Zeitreihen markiert, d.h. das sind keine Data Frames mit einer "Datumsspalte", sondern liegen bereits als ts Objekt vor. Ebenso habe ich bereits die Zeitreihen stationär gemacht. Bei ein paar Variablen liegen ab 2012 fehlende Werte vor.
Mein Ziel:
Mein Ziel wäre es, mithilfe des DFM die Zusammenhänge zwischen allen Variablen zu modellieren und dann eben für die fehlenden Werte neue Werte einzusetzen, welche gegeben der Beobachtungen der anderen Variablen am wahrscheinlichsten sind (gegeben des ursprünglichen Zusammenhangs zwischen den Variablen). Das heißt: Von 1990 - 2012 liegen mir sämtliche Beobachtungen vor und ab 2012 fehlen bei manchen Variablen Werte. Gegeben der vorherigen Beziehungen zwischen den Variablen, sollen nun diese fehlenden Werte für wahrscheinliche Werte eingesetzt werden, gegeben der Entwicklung der restlichen Variablen (von welchen ich Beobachtungen vorliegen habe).
Mein bisheriges Vorgehen:
Mein erster Versuch wäre es gewesen, die stationären Zeitreihen mithilfe des DFM Befehls zu einem Dynamic Factor Model zu schätzen:
DFM1 = DFM(ts_missing_used, r=4, p=1, em.method = "BM") ,
wo ts_missing_used die stationären Zeitreihen sind, vier Faktoren genommen werden (bereits durch Ellbogenkriterium ermittelt) und nach dem Schwarz Kriterium 1 Lag genommen wird. Die Methode zur expectation maximization ist die von Banbura und Modugno (2014), da diese bei systematisch fehlenden Werten empfehlenswert ist. Nach dem Befehl entsteht eine DFM1 Liste, wo die Eigenwerte und Eigenvektoren abgespeichert sind sowie Factor Estimates nach unterschiedlichen Verfahren, die Factor transition matrix usw.
Leider liegen nun für die fehlende Werte auch bei den fitted values fehlende Werte vor. Ich würde aber gerne für diese die wahrscheinlichsten Werte einsetzen. In der Literatur heißt es, man kann dafür den Kalman Filter benutzen, aber ich bin mir nicht sicher, wie ich dies programmieren soll.
Ebenso bin ich mir noch unschlüssig, ob ich nicht den Datensatz aufspalten soll, also in 1990-2012 und 2012-2022, und das DFM von 1990-2012 schätzen soll und dann die Korrelationen und Faktoren verwenden soll, um die vergangenen Zusammenhänge zu nutzen, um die fehlenden Daten von 2012-2022 zu erklären/ersetzen, gegeben der Entwicklung der Variablen, von welchen Beobachtungen vorliegen. Hier weiß ich dann aber nicht, wie ich im zweiten Teil, also von 2012-2022 vorgehen soll. Müsste ich dafür von meinem dfm Objekt vom ersten Zeitbereich (1990-2012) die Faktoren extrahieren und für eine zweite Gleichung verwenden?
Es würde mich außerordentlich freuen, wenn sich jemand mit dem Thema auskennt und mir weiterhelfen kann!
Liebe Grüße
Felizitas