[PYTHON] Einführung in Vector Self-Return-Modelle (VAR) mit Statistikmodellen

Informationen zu VAR basierend auf Gujaratis Basic Econometrics (BE) Ich habe es zusammen versucht. Es basiert auf BEs Beispiel 17.13 und Abschnitt 22.9. Der größte Teil der Übersetzung ist 22,9, aber ohne BE wird es schwierig sein, sie zu lesen. Deshalb habe ich versucht, Gujaratis Ausdruck so gut wie möglich wiederzugeben. Viele von Gujaratis Büchern über Ökonometrie werden als Lehrbücher an Universitäten und Graduiertenschulen in Europa und den Vereinigten Staaten verwendet. Es ist eines der zuverlässigsten Lehrbücher, da es klar beschreibt, was Sie in der metrischen Ökonomie tun können und was nicht.

Darüber hinaus werden wir am 16. Juni 2020 eine kostenlose Online-Studiensitzung (lineare Regression) abhalten (https://connpass.com/event/177556/edit/). Wir hoffen, dass Sie sich uns anschließen.

Vor dem Erlernen von VAR

Die meisten Regressionsanalysen befassen sich mit einem Modell, das aus einer einzelnen Gleichung besteht. Es besteht aus einer abhängigen Variablen und einer oder mehreren erklärenden Variablen. Solche Modelle betonen das Erhalten von Y-Vorhersagen und Durchschnittswerten. Wenn es eine Beziehung zwischen Ursache und Wirkung gibt, dann wäre es in einem solchen Modell von X bis Y. In vielen Situationen wird es jedoch als bedeutungslos angesehen, die Richtung und Beziehung zwischen Ursache und Wirkung zu diskutieren. Es gibt jedoch auch ein Phänomen, dass Y durch X und X durch Y festgelegt ist. Manchmal beeinflussen X und Y beide Richtungen gleichzeitig. In diesem Fall ist die Unterscheidung zwischen abhängigen und erklärenden Variablen nicht sinnvoll. In einem solchen Simultangleichungsmodell wird jedes zur gleichen Zeit wie ein Satz von Variablen festgelegt. In einem solchen Modell gibt es eine oder mehrere Gleichungen, und in einem solchen Modell werden die voneinander abhängigen Variablen als endogene Variablen bezeichnet und sind stochastische Variablen. Andererseits sind Variablen, die nicht wirklich probabilistisch sind, exogene Variablen oder vorbestimmte Variablen. In BE werden die Kapitel 18 bis 20 im Simultangleichungsmodell (18), im Diskriminierungsproblem (19) und im Simultangleichungsverfahren (20) ausführlich erläutert. Betrachten Sie die Preise für Geldmenge (Q) und Waren (P). Der Preis eines Produkts und die Höhe der Geldmenge werden durch die Wechselwirkung des Produkts mit den Angebots- und Angebotskurven bestimmt. Wir stellen diese Kurven also linear dar und fügen ihnen Rauschen hinzu, um die Wechselwirkung zu modellieren. Anforderungsfunktion $ Q_t ^ d = \ alpha_0 + \ alpha_1P_t + u_ {1t} $ Versorgungsfunktion $ Q_t ^ s = \ beta_0 + \ beta_1P_t + u_ {2t} $ Ausgleichsbedingung $ Q_t ^ d = Q_t ^ s $ $ t $ ist die Zeit und $ \ alpha $, $ \ beta $ ist der Parameter. Sowohl die Nachfragefunktion ($ Q_t ^ d ) als auch die Angebotsfunktion ( Q_t ^ s ) bestehen aus diesen Variablen, und die Verbindung zwischen diesen beiden Gleichungen ist die Gleichgewichtsbedingung ( Q_t ^ d = Q_t ^ s $). .. Es ist leicht vorstellbar, dass P und Q untergeordnet sind. $ Q_t ^ d $ wird von Einkommen, Wohlstand und Geschmack beeinflusst. Solche Effekte sind in $ u_ {1t} $ enthalten. Außerdem wird $ Q_t ^ s $ von Wetter, Streiks, Import- / Exportbeschränkungen usw. beeinflusst, die auch in $ u_ {2t} $ enthalten sind. Daher sind diese Variablen nicht unabhängig. Es ist nicht angebracht, mit OLS umzugehen. Vorbestimmte Variablen sind exogene Variablen, ihre Verzögerungen und verzögerte endogene Variablen. Diese und die endogenen Variablen bilden die Strukturgleichung. Diese haben Strukturkoeffizienten. Es ist jedoch schwierig, ein solches Modell zu schätzen, was zu verzerrten oder inkonsistenten Schätzungen führen kann. Aus diesen wird daher ein abgeleitetes Formular erstellt. Diese Gleichung hat einen Induktionskoeffizienten. Der Strukturkoeffizient wird aus diesem Induktionskoeffizienten geschätzt. Dies wird als Identifikationsproblem bezeichnet. Diese können in mäßige Identifikation, Überidentifikation und nicht unterscheidbare unterteilt werden.

Vector Self-Return-Modell (VAR)

In Simultangleichungen (Simultangleichungen) oder Strukturmodellen werden Variablen als endogene, einige exogene oder vorbestimmte Variablen behandelt, die exogenes und verzögertes endogenes kombinieren. Vor der Schätzung eines solchen Modells muss überprüft werden, ob die Gleichungen im System (genau oder übermäßig) identifizierbar sind. Diese Unterscheidbarkeit wird erreicht, indem angenommen wird, dass einige der gegebenen Variablen nur in bestimmten Gleichungen vorhanden sind.

Diese Entscheidung ist oft subjektiv und wurde von Christopher Sims heftig kritisiert. Laut Sims sollten alle Variablen gleich behandelt werden, wenn zwischen einer Reihe von Variablen echte Gleichzeitigkeit besteht. Es darf keine vorherige Unterscheidung zwischen endogenen und exogenen Variablen geben. Basierend auf dieser Idee haben Sims das VAR-Modell entwickelt.

image.png

(17.14.1) und (17.14.2) sind der aktuelle Wert des BIP in Bezug auf den vergangenen Wert der Geldmenge und den Wert des vergangenen BIP sowie die Gegenwart in Bezug auf den vergangenen Wert der Geldmenge und den früheren Wert des BIP. Beschreibt den Wert der Geldmenge in. In diesem System gibt es keine exogenen Variablen.

Lassen Sie uns nun die Art des Kausalzusammenhangs zwischen kanadischer Geldmenge und Zinssätzen untersuchen. Die Geldmengengleichung besteht aus den vergangenen Werten von Geldmenge und Zinssatz, und die Zinsgleichung besteht aus den vergangenen Werten von Zinssatz und Geldmenge. Beide Beispiele sind Beispiele für Vektor-Selbstrückgabemodelle. Der Begriff Selbstrückgabe ist auf die Verwendung früherer oder verzögerter Werte für die abhängige Variable auf der rechten Seite zurückzuführen. Der Begriff Vektor beruht auf der Tatsache, dass es sich um einen Vektor aus zwei (oder mehr) Variablen handelt.

Unter Verwendung der sechs verzögerten Werte jeder Variablen als unabhängige Variablen für die kanadische Geldmenge und die kanadischen Zinssätze besteht, wie wir später sehen werden, ein kausaler Zusammenhang zwischen der Geldmenge (M1) und den Zinssätzen (90-Tage-Unternehmenszinssätze (R)). Wir können die Hypothese, dass M1 R und R M1 beeinflusst, nicht zurückweisen. Diese Situation wird am besten mit VAR verwendet.

Um zu veranschaulichen, wie VAR geschätzt werden kann, nehmen wir an, dass jede Gleichung k Verzögerungen von M (gemessen mit M1) und R aufweist. In diesem Fall schätzt OLS jede der folgenden Gleichungen:

image.png Wobei u ein probabilistischer Fehlerbegriff ist und in der VAR-Sprache als Impuls, Innovation oder Schock bezeichnet wird.

Vor der Schätzung von (22.9.1) und (22.9.2) müssen wir die maximale Verzögerungslänge k bestimmen. Dies wird empirisch ermittelt. Die verwendeten Daten sind 40 Beobachtungen von 1979.I bis 1988.IV. Das Einbeziehen vieler verzögerter Werte in jede Gleichung verringert den Freiheitsgrad. Es besteht auch die Möglichkeit einer multiplen Co-Linearität. Wenn die Anzahl der Verzögerungen zu gering ist, sind die Spezifikationen möglicherweise falsch. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, Informationsstandards wie Akaike und Schwartz zu verwenden und das Modell mit dem niedrigsten dieser Standards auszuwählen. Versuch und Irrtum sind unvermeidlich.

Die folgenden Daten wurden aus Tabelle 17.5 kopiert.

date=pd.date_range(start='1979/1/31',end='1988/12/31',freq='Q')

M1=[22175,22841,23461,23427,23811,23612.33,24543,25638.66,25316,25501.33,25382.33,24753,
    25094.33,25253.66,24936.66,25553,26755.33,27412,28403.33,28402.33,28715.66,28996.33,
    28479.33,28669,29018.66,29398.66,30203.66,31059.33,30745.33,30477.66,31563.66,32800.66,
    33958.33,35795.66,35878.66,36336,36480.33,37108.66,38423,38480.66]
R=[11.13333,11.16667,11.8,14.18333,14.38333,12.98333,10.71667,14.53333,17.13333,18.56667,
   21.01666,16.61665,15.35,16.04999,14.31667,10.88333,9.61667,9.31667,9.33333,9.55,10.08333,
   11.45,12.45,10.76667,10.51667,9.66667,9.03333,9.01667,11.03333,8.73333,8.46667,8.4,7.25,
   8.30,9.30,8.7,8.61667,9.13333,10.05,10.83333]

M1=(np.array(M1)).reshape(40,1)
R=(np.array(R)).reshape(40,1)
ts=np.concatenate([M1,R],axis=1)
tsd=pd.DataFrame(ts,index=date,columns={'M1','R'})
ts_r=np.concatenate([R,M1],axis=1)
tsd_r=pd.DataFrame(ts_r,index=date,columns={'R','M1'})
tsd.M1.plot()
tsd.R.plot()

image.png

image.png

Verwenden Sie zunächst vier Verzögerungswerte (k = 4) für jede Variable und verwenden Sie Statistikmodelle, um die Parameter der beiden Gleichungen zu schätzen. Die Proben stammen von 1979.I bis 1988.IV, aber die Proben von 1979.I bis 1987.IV werden zur Schätzung verwendet und die letzten vier Beobachtungen werden zur Diagnose der optimierten VAR-Vorhersagegenauigkeit verwendet.

Hier nehmen wir an, dass sowohl M1 als auch R stationär sind. Da beide Gleichungen dieselbe maximale Verzögerungslänge haben, verwenden wir OLS für die Regression. Jeder geschätzte Koeffizient ist möglicherweise statistisch nicht signifikant, wahrscheinlich aufgrund mehrfacher Co-Linearität, da er Verzögerungen für dieselbe Variable enthält. Insgesamt ist das Modell jedoch aus den Ergebnissen des F-Tests signifikant.

model = VAR(tsd.iloc[:-4])

results = model.fit(4)
results.summary()
 Summary of Regression Results   
==================================
Model:                         VAR
Method:                        OLS
Date:           Wed, 06, May, 2020
Time:                     22:50:28
--------------------------------------------------------------------
No. of Equations:         2.00000    BIC:                    14.3927
Nobs:                     32.0000    HQIC:                   13.8416
Log likelihood:          -289.904    FPE:                    805670.
AIC:                      13.5683    Det(Omega_mle):         490783.
--------------------------------------------------------------------
Results for equation M1
========================================================================
           coefficient       std. error           t-stat            prob
------------------------------------------------------------------------
const      2413.827162      1622.647108            1.488           0.137
L1.M1         1.076737         0.201737            5.337           0.000
L1.R       -275.029144        57.217394           -4.807           0.000
L2.M1         0.173434         0.314438            0.552           0.581
L2.R        227.174784        95.394759            2.381           0.017
L3.M1        -0.366467         0.346875           -1.056           0.291
L3.R          8.511935        96.917587            0.088           0.930
L4.M1         0.077603         0.207888            0.373           0.709
L4.R        -50.199299        64.755384           -0.775           0.438
========================================================================

Results for equation R
========================================================================
           coefficient       std. error           t-stat            prob
------------------------------------------------------------------------
const         4.919010         5.424158            0.907           0.364
L1.M1         0.001282         0.000674            1.901           0.057
L1.R          1.139310         0.191265            5.957           0.000
L2.M1        -0.002140         0.001051           -2.036           0.042
L2.R         -0.309053         0.318884           -0.969           0.332
L3.M1         0.002176         0.001160            1.877           0.061
L3.R          0.052361         0.323974            0.162           0.872
L4.M1        -0.001479         0.000695           -2.129           0.033
L4.R          0.001076         0.216463            0.005           0.996
========================================================================

Correlation matrix of residuals
            M1         R
M1    1.000000 -0.004625
R    -0.004625  1.000000

Obwohl die Werte von AIC und BIC teilweise unterschiedlich sind, werden fast die gleichen Ergebnisse wie bei BE erhalten. Betrachten wir zunächst die Regression von M1. Verzögerung 1 für M1 und Verzögerung 1 und 2 für R sind statistisch signifikant (5% -Niveau). In Bezug auf die Zinsrendite sind die Verzögerungen von M1 1,2,4 und die Verzögerungen erster Ordnung der Zinssätze signifikant (5% -Niveau).

Zum Vergleich werden die VAR-Ergebnisse basierend auf zwei Verzögerungen für jede endogene Variable gezeigt.

results = model.fit(2)
results.summary()
 Summary of Regression Results   
==================================
Model:                         VAR
Method:                        OLS
Date:           Wed, 06, May, 2020
Time:                     22:50:29
--------------------------------------------------------------------
No. of Equations:         2.00000    BIC:                    13.7547
Nobs:                     34.0000    HQIC:                   13.4589
Log likelihood:          -312.686    FPE:                    603249.
AIC:                      13.3058    Det(Omega_mle):         458485.
--------------------------------------------------------------------
Results for equation M1
========================================================================
           coefficient       std. error           t-stat            prob
------------------------------------------------------------------------
const      1451.976201      1185.593527            1.225           0.221
L1.M1         1.037538         0.160483            6.465           0.000
L1.R       -234.884748        45.522360           -5.160           0.000
L2.M1        -0.044661         0.155908           -0.286           0.775
L2.R        160.155833        48.528324            3.300           0.001
========================================================================

Results for equation R
========================================================================
           coefficient       std. error           t-stat            prob
------------------------------------------------------------------------
const         5.796432         4.338943            1.336           0.182
L1.M1         0.001091         0.000587            1.858           0.063
L1.R          1.069081         0.166599            6.417           0.000
L2.M1        -0.001255         0.000571           -2.199           0.028
L2.R         -0.223364         0.177600           -1.258           0.209
========================================================================

Correlation matrix of residuals
            M1         R
M1    1.000000 -0.054488
R    -0.054488  1.000000

In ähnlicher Weise werden, obwohl die Werte von AIC und BIC teilweise unterschiedlich sind, fast die gleichen Ergebnisse wie BE erhalten. Hier können wir in der Geldmengenregression sehen, dass sowohl die Verzögerung der Geldmenge erster Ordnung als auch die Verzögerung der Zinslaufzeit statistisch signifikant sind. Bei der Zinsrendite sind die Verzögerung der Geldmenge zweiter Ordnung und die Verzögerung des Zinssatzes erster Ordnung signifikant.

Was ist besser, wenn Sie zwischen 4 und 2 Verzögerungsmodellen wählen? Die Informationsmenge von Akaike und Schwartz des 4. Modells beträgt 13,5683 bzw. 14,3927, und die entsprechenden Werte des 2. Modells betragen 13,3058 und 13,7547. Je niedriger die Akaike- und Schwartz-Statistiken sind, desto besser ist das Modell. Daher scheint ein präzises Modell vorzuziehen. Auch hier ist die Auswahl ein Modell, das zwei Verzögerungen für jede endogene Variable enthält.

VAR-Vorhersage

Wählen Sie ein Modell mit zwei Verzögerungen. Wird zur Vorhersage der Werte von M1 und R verwendet. Die Daten stammen von 1979.I bis 1989.IV, aber die 1989er Werte werden nicht zur Schätzung des VAR-Modells verwendet. Lassen Sie uns nun 1989 vorhersagen. I, den Wert von M1 für das erste Quartal 1989. Der vorhergesagte Wert von 1989.I kann wie folgt erhalten werden.

\hat{M_{1989I}}=1451.976201 +1.037538M_{1987IV}-0.044661M_{1987III}
-234.884748R_{1987IV}+160.155833R_{1987III}
mm=results.coefs_exog[0]+results.coefs[0,0,0]*tsd.iloc[-5,0]+results.coefs[1,0,0]*tsd.iloc[-6,0]+\
results.coefs[0,0,1]*tsd.iloc[-5,1]+results.coefs[1,0,1]*tsd.iloc[-6,1]

mm,M1[-4],mm-M1[-4],(mm-M1[-4])/M1[-4]

# (array([36995.50488527]),array([36480.33]),array([515.17488527]),array([0.01412199]))

Hier wird der Koeffizient aus summary.report erhalten.

Anhand der entsprechenden Werte für M und R können wir sehen, dass die geschätzte Geldmenge für das erste Quartal 1988 36995 (Millionen kanadischer Dollar) beträgt. Der tatsächliche Wert von M betrug 1988 36480,33 (Millionen kanadischer Dollar). Dies überschätzte den tatsächlichen Wert um etwa 515 (Millionen Dollar). Dies sind ungefähr 1,4% des tatsächlichen M im Jahr 1988. Diese Schätzungen hängen natürlich von der Anzahl der Verzögerungen im VAR-Modell ab.

Kausaler Zusammenhang mit VAR

Erklären Sie Y mit X, und wenn sich Y ändert, wenn sich dieses X ändert, hat es eine Ursache und Wirkung von Granger. Verwenden wir die Grower-Kausalitätstests von Statistikmodellen, um festzustellen, ob ein Kausalzusammenhang besteht. Zwei endogene Variablen und die Ordnung k sind Argumente. Testet, ob die zweite Spalte der endogenen Variablen die Granger-Kausalität der ersten Spalte ist. Die Nullhypothese von Grangercausalitytests lautet, dass die Zeitreihen in der zweiten Spalte x2 nicht die Zeitreihen in der ersten Spalte x1 verursachen. Grange-Kausalzusammenhang bedeutet, dass der vergangene Wert von x1 einen statistisch signifikanten Einfluss auf den aktuellen Wert von x1 hat, wobei der vergangene Wert von x1 die unabhängige Variable ist. Wenn der p-Wert unter dem gewünschten Signifikanzniveau liegt, lehnen wir die Nullhypothese ab, dass x2 von Granger nicht x1 verursacht.

from statsmodels.tsa.stattools import grangercausalitytests
grangercausalitytests(tsd, 8)
Granger Causality
number of lags (no zero) 1
ssr based F test:         F=15.1025 , p=0.0004  , df_denom=36, df_num=1
ssr based chi2 test:   chi2=16.3610 , p=0.0001  , df=1
likelihood ratio test: chi2=13.6622 , p=0.0002  , df=1
parameter F test:         F=15.1025 , p=0.0004  , df_denom=36, df_num=1

Granger Causality
number of lags (no zero) 2
ssr based F test:         F=12.9265 , p=0.0001  , df_denom=33, df_num=2
ssr based chi2 test:   chi2=29.7702 , p=0.0000  , df=2
likelihood ratio test: chi2=21.9844 , p=0.0000  , df=2
parameter F test:         F=12.9265 , p=0.0001  , df_denom=33, df_num=2

Granger Causality
number of lags (no zero) 3
ssr based F test:         F=7.7294  , p=0.0006  , df_denom=30, df_num=3
ssr based chi2 test:   chi2=28.5987 , p=0.0000  , df=3
likelihood ratio test: chi2=21.1876 , p=0.0001  , df=3
parameter F test:         F=7.7294  , p=0.0006  , df_denom=30, df_num=3

Granger Causality
number of lags (no zero) 4
ssr based F test:         F=5.5933  , p=0.0021  , df_denom=27, df_num=4
ssr based chi2 test:   chi2=29.8309 , p=0.0000  , df=4
likelihood ratio test: chi2=21.7285 , p=0.0002  , df=4
parameter F test:         F=5.5933  , p=0.0021  , df_denom=27, df_num=4

Granger Causality
number of lags (no zero) 5
ssr based F test:         F=4.1186  , p=0.0077  , df_denom=24, df_num=5
ssr based chi2 test:   chi2=30.0318 , p=0.0000  , df=5
likelihood ratio test: chi2=21.6835 , p=0.0006  , df=5
parameter F test:         F=4.1186  , p=0.0077  , df_denom=24, df_num=5

Granger Causality
number of lags (no zero) 6
ssr based F test:         F=3.5163  , p=0.0144  , df_denom=21, df_num=6
ssr based chi2 test:   chi2=34.1585 , p=0.0000  , df=6
likelihood ratio test: chi2=23.6462 , p=0.0006  , df=6
parameter F test:         F=3.5163  , p=0.0144  , df_denom=21, df_num=6

Granger Causality
number of lags (no zero) 7
ssr based F test:         F=2.0586  , p=0.1029  , df_denom=18, df_num=7
ssr based chi2 test:   chi2=26.4190 , p=0.0004  , df=7
likelihood ratio test: chi2=19.4075 , p=0.0070  , df=7
parameter F test:         F=2.0586  , p=0.1029  , df_denom=18, df_num=7

Granger Causality
number of lags (no zero) 8
ssr based F test:         F=1.4037  , p=0.2719  , df_denom=15, df_num=8
ssr based chi2 test:   chi2=23.9564 , p=0.0023  , df=8
likelihood ratio test: chi2=17.8828 , p=0.0221  , df=8
parameter F test:         F=1.4037  , p=0.2719  , df_denom=15, df_num=8

Granger-Kausaltests führen vier Tests durch.

"Params_ftest" und "ssr_ftest" verwenden die F-Verteilung. "Ssr_chi2test" und "lrtest" verwenden die Chi-Quadrat-Verteilung. Es stellt sich heraus, dass Verzögerungen von bis zu 1-6 Granger-kausal mit R von M sind, aber Verzögerungen 7 und 8 haben keinen kausalen Zusammenhang zwischen den beiden Variablen.

Schauen wir uns als nächstes die umgekehrte Beziehung an.

grangercausalitytests(tsd_r, 8)
Granger Causality
number of lags (no zero) 1
ssr based F test:         F=0.2688  , p=0.6073  , df_denom=36, df_num=1
ssr based chi2 test:   chi2=0.2912  , p=0.5894  , df=1
likelihood ratio test: chi2=0.2902  , p=0.5901  , df=1
parameter F test:         F=0.2688  , p=0.6073  , df_denom=36, df_num=1

Granger Causality
number of lags (no zero) 2
ssr based F test:         F=3.2234  , p=0.0526  , df_denom=33, df_num=2
ssr based chi2 test:   chi2=7.4237  , p=0.0244  , df=2
likelihood ratio test: chi2=6.7810  , p=0.0337  , df=2
parameter F test:         F=3.2234  , p=0.0526  , df_denom=33, df_num=2

Granger Causality
number of lags (no zero) 3
ssr based F test:         F=2.7255  , p=0.0616  , df_denom=30, df_num=3
ssr based chi2 test:   chi2=10.0844 , p=0.0179  , df=3
likelihood ratio test: chi2=8.9179  , p=0.0304  , df=3
parameter F test:         F=2.7255  , p=0.0616  , df_denom=30, df_num=3

Granger Causality
number of lags (no zero) 4
ssr based F test:         F=2.4510  , p=0.0702  , df_denom=27, df_num=4
ssr based chi2 test:   chi2=13.0719 , p=0.0109  , df=4
likelihood ratio test: chi2=11.1516 , p=0.0249  , df=4
parameter F test:         F=2.4510  , p=0.0702  , df_denom=27, df_num=4

Granger Causality
number of lags (no zero) 5
ssr based F test:         F=1.8858  , p=0.1343  , df_denom=24, df_num=5
ssr based chi2 test:   chi2=13.7504 , p=0.0173  , df=5
likelihood ratio test: chi2=11.5978 , p=0.0407  , df=5
parameter F test:         F=1.8858  , p=0.1343  , df_denom=24, df_num=5

Granger Causality
number of lags (no zero) 6
ssr based F test:         F=2.7136  , p=0.0413  , df_denom=21, df_num=6
ssr based chi2 test:   chi2=26.3608 , p=0.0002  , df=6
likelihood ratio test: chi2=19.5153 , p=0.0034  , df=6
parameter F test:         F=2.7136  , p=0.0413  , df_denom=21, df_num=6

Granger Causality
number of lags (no zero) 7
ssr based F test:         F=2.8214  , p=0.0360  , df_denom=18, df_num=7
ssr based chi2 test:   chi2=36.2076 , p=0.0000  , df=7
likelihood ratio test: chi2=24.4399 , p=0.0010  , df=7
parameter F test:         F=2.8214  , p=0.0360  , df_denom=18, df_num=7

Granger Causality
number of lags (no zero) 8
ssr based F test:         F=1.6285  , p=0.1979  , df_denom=15, df_num=8
ssr based chi2 test:   chi2=27.7934 , p=0.0005  , df=8
likelihood ratio test: chi2=20.0051 , p=0.0103  , df=8
parameter F test:         F=1.6285  , p=0.1979  , df_denom=15, df_num=8

Hier wird die Nullhypothese in der 6. und 7. Ordnung verworfen.

Die Ergebnisse variieren. Eine der Bedeutungen von Grangers Ausdruckssatz ist, dass zwei Variablen, Xt und Yt, in einer republikanischen Beziehung stehen, jede einzeln I (1) und Summe und jede einzeln instationär. Dann kann Xt Granger-kausales Yt haben, oder Yt kann Granger-kausales Xt haben.

In diesem Beispiel hat M1, wenn M1 und R mit I (1) einzeln republikanisch sind, Granger-Kausalität R oder R Granger-Kausalität M1. Das heißt, Sie müssen zuerst prüfen, ob die beiden Variablen einzeln I (1) sind, und dann prüfen, ob sie republikanisch sind. Ist dies nicht der Fall, kann das gesamte Kausalproblem grundsätzlich vermutet werden. Wenn wir uns tatsächlich M1 und R ansehen, ist nicht klar, ob diese beiden Variablen republikanisch sind. Daher variieren auch die Folgen der Granger-Kausalität.

Einige Probleme mit der VAR-Modellierung

Befürworter von VAR betonen die Vorteile dieser Methode:

(1) Die Methode ist einfach. Sie müssen sich nicht fragen, welche Variablen endogen und welche exogen sind. Alle Variablen in VAR sind endogen.

(2) Vorhersage ist einfach. Das heißt, die übliche OLS-Methode kann auf jede Gleichung angewendet werden.

(3) Die mit diesem Verfahren erhaltenen Vorhersagen sind häufig denen überlegen, die aus komplexeren simultanen Gleichungsmodellen erhalten wurden.

Kritiker der VAR-Modellierung weisen jedoch auf folgende Probleme hin:

  1. Im Gegensatz zum Simultangleichungsmodell ist das VAR-Modell theoretisch. Dies liegt daran, dass ich nicht viele frühere Informationen (Erfahrungen) verwende. In einem Simultangleichungsmodell spielt das Einbeziehen oder Nichteinschließen bestimmter Variablen eine wichtige Rolle bei der Identifizierung des Modells.

  2. Das VAR-Modell eignet sich aufgrund seines Fokus auf Vorhersage nicht gut für die Politikanalyse.

  3. Die größte praktische Herausforderung bei der VAR-Modellierung ist die Auswahl der richtigen Verzögerungslänge. Angenommen, Sie haben ein VAR-Modell mit drei Variablen und möchten 8 Verzögerungen für jede Variable in jede Gleichung aufnehmen. Jede Gleichung hat 24 Verzögerungsparameter und konstante Terme für insgesamt 25 Parameter. Das Schätzen vieler Parameter, sofern die Stichprobengröße nicht groß ist, verringert die Freiheit bei allen damit verbundenen Problemen.

  4. Genau genommen müssen im m-Variablen-VAR-Modell alle m-Variablen (zusammen) stationär sein. Wenn nicht, müssen die Daten entsprechend transformiert werden (z. B. durch eine Differenz erster Ordnung). Wie Harvey betont, können die Ergebnisse der transformierten Daten unzureichend sein. Er führt weiter aus: "Die übliche Methode, die von VAR-Unterstützern angewendet wird, ist die Verwendung von Ebenen, auch wenn einige dieser Zeitleisten nicht stationär sind. In diesem Fall ist die Auswirkung von Einheitswurzeln auf die Verteilung von Schätzungen wichtig. Erschwerend kommt hinzu, dass das Konvertieren von Daten nicht einfach ist, wenn das Modell eine Mischung aus I (0) - und I (1) -Variablen enthält, dh konstante und instationäre Variablen.

  5. Da jeder Koeffizient des geschätzten VAR-Modells oft schwer zu interpretieren ist, schätzen Befürworter dieser Technik häufig die sogenannte Impulsantwortfunktion (IRF). Das IRF verfolgt die Antwort der abhängigen Variablen des VAR-Systems, um die Auswirkungen von Fehlertermen wie u1 und u2 in (22.9.1) und (22.9.2) zu untersuchen. Angenommen, u1 in der M1-Gleichung erhöht sich um eine Standardabweichung. Solche Schocks oder Änderungen werden M1 jetzt und in Zukunft verändern. Da M1 jedoch in der Regression von R auftritt, wirken sich Änderungen in u1 auch auf R aus. In ähnlicher Weise wirkt sich eine Änderung einer Standardabweichung in u2 der R-Gleichung auf M1 aus. Der IRF wird die Auswirkungen solcher Schocks in Zukunft verfolgen. Die Nützlichkeit einer solchen IRF-Analyse wurde von Forschern in Frage gestellt, ist jedoch für die VAR-Analyse von zentraler Bedeutung.

Dies ist die einfache Übersetzung von BE. Danach wird es unter Bezugnahme auf Vector autoregression geschrieben.

Fehlerbedingung Bedingung

y_t=c+A_1y_{t-1}+A_1y_{t-2}+\cdots+A_1y_{t-p}+e_t

$ y_ {t-i} $ ist die Verzögerung i-ter Ordnung von y. c ist ein Vektor vom Grad k. $ A_i $ ist eine zeitabhängige Matrix von kxk. u ist ein Vektor von Fehlertermen vom Grad k.

    1. $ E (e_t) = 0 $: Der Durchschnittswert der Fehlerterme ist Null.
  1. $ E (e_te_t ^ \ `) = \ Omega $: $ \ Omega $ ist eine Kovarianzmatrix von Fehlerausdrücken.
  2. $ E (e_te_ {t-k} ^ \ `) = 0 $: Die Korrelation ist zeitlich Null. Es gibt keine Autokorrelation von Fehlerausdrücken.

Die Reihenfolge der Summe der Variablen

Die Reihenfolge der Summe aller Variablen muss gleich sein.

  1. Alle Variablen sind I (0).
  2. Alle Variablen sind I (d), d> 0. Wenn die Variable republikanisch ist, ist das Fehlerkorrekturmodell in der VAR enthalten. b. Wenn die Variablen nicht republikanisch sind, nehmen Sie die Differenz, bis sie stabil ist. Ich würde)

Holen Sie sich Daten von FRED

Erhalten Sie Langzeitdaten von FRED und analysieren Sie sie aus einer langfristigen Perspektive. Die kanadische Geldmenge verwendet MANMM101CAM189S und der Zinssatz verwendet IR3TCP01CAM156N.

start="1979/1"
end="2020/12"
M1_0 = web.DataReader("MANMM101CAM189S", 'fred',start,end)/1000000
R1_0 = web.DataReader("IR3TCP01CAM156N", 'fred',start,end)#IR3TIB01CAM156N
M1=M1_0.resample('Q').last()
R1=R1_0.resample('Q').last()
M1.plot()
R.plot()

image.png

image.png

ADF-Test

Untersuchen Sie die Stabilität.

from statsmodels.tsa.stattools import adfuller
import pandas as pd
tsd=pd.concat([M1,R1],axis=1)
tsd.columns=['M1','R']

index=['ADF Test Statistic','P-Value','# Lags Used','# Observations Used']
adfTest = adfuller((tsd.M1), autolag='AIC',regression='nc')
dfResults = pd.Series(adfTest[0:4], index)
print('Augmented Dickey-Fuller Test Results:')
print(dfResults)
Augmented Dickey-Fuller Test Results:
ADF Test Statistic      -1.117517
P-Value                  0.981654
# Lags Used              5.000000
# Observations Used    159.000000
dtype: float64

Es überrascht nicht, dass M1 einem zufälligen Spaziergang folgt. Dies ist auch dann der Fall, wenn die Regression c, ct, ctt ist.

adfTest = adfuller((tsd.R), autolag='AIC',regression='nc')
dfResults = pd.Series(adfTest[0:4], index)
print('Augmented Dickey-Fuller Test Results:')
print(dfResults)
Augmented Dickey-Fuller Test Results:
ADF Test Statistic      -4.082977
P-Value                  0.006679
# Lags Used              3.000000
# Observations Used    161.000000
dtype: float64

Selbstverständlich ist R so wie es ist ein stetiger Prozess. Dies ist auch dann der Fall, wenn die Regression c, ct, ctt ist.

Also habe ich den Logarithmus von M1 genommen.

adfTest = adfuller((np.log(tsd.M1)), autolag='AIC',regression='ct')
dfResults = pd.Series(adfTest[0:4], index)
print('Augmented Dickey-Fuller Test Results:')
print(dfResults)
Augmented Dickey-Fuller Test Results:
ADF Test Statistic      -3.838973
P-Value                  0.014689
# Lags Used             14.000000
# Observations Used    150.000000
dtype: float64

Der Logarithmus von M1 scheint Trendstabilität zu haben.

Entfernen wir den Trend.

# remove time trend
gap=np.linspace(np.log(M1.iloc[0]), np.log(M1.iloc[-1]), len(M1))
lnM1=np.log(M1)
lnM1.plot()

image.png

alnM1=lnM1.copy()
alnM1['a']=gap
alnM1=alnM1.iloc[:,0]-alnM1.a
alnM1.plot()

image.png

adfTest = adfuller(alnM1, autolag='AIC',regression='nc')
dfResults = pd.Series(adfTest[0:4], index)
print('Augmented Dickey-Fuller Test Results:')
print(dfResults)
Augmented Dickey-Fuller Test Results:
ADF Test Statistic      -1.901991
P-Value                  0.054542
# Lags Used             14.000000
# Observations Used    150.000000
dtype: float64

lnM ist zu einem stetigen Prozess geworden, bei dem der Trend beseitigt wurde.

Lassen Sie uns zunächst entlang BE analysieren.

tsd0=pd.concat([alnM1,R1],axis=1)
tsd0.columns=['alnM1','R']
tsd=pd.concat([lnM1,R1],axis=1)
tsd.columns=['lnM1','R']

model = VAR(tsd.iloc[:36])

results = model.fit(4)
results.summary()
  Summary of Regression Results   
==================================
Model:                         VAR
Method:                        OLS
Date:           Thu, 07, May, 2020
Time:                     11:57:17
--------------------------------------------------------------------
No. of Equations:         2.00000    BIC:                   -5.33880
Nobs:                     32.0000    HQIC:                  -5.88999
Log likelihood:           25.8004    FPE:                 0.00217196
AIC:                     -6.16328    Det(Omega_mle):      0.00132308
--------------------------------------------------------------------
Results for equation lnM1
==========================================================================
             coefficient       std. error           t-stat            prob
--------------------------------------------------------------------------
const           0.358173         0.225376            1.589           0.112
L1.lnM1         1.286462         0.194312            6.621           0.000
L1.R           -0.005751         0.001961           -2.933           0.003
L2.lnM1         0.025075         0.298562            0.084           0.933
L2.R            0.001647         0.002730            0.604           0.546
L3.lnM1        -0.278622         0.295859           -0.942           0.346
L3.R            0.006311         0.002814            2.243           0.025
L4.lnM1        -0.062508         0.195688           -0.319           0.749
L4.R           -0.004164         0.002222           -1.875           0.061
==========================================================================

Results for equation R
==========================================================================
             coefficient       std. error           t-stat            prob
--------------------------------------------------------------------------
const          38.199790        21.797843            1.752           0.080
L1.lnM1       -15.488358        18.793423           -0.824           0.410
L1.R            0.875018         0.189630            4.614           0.000
L2.lnM1         7.660621        28.876316            0.265           0.791
L2.R           -0.345128         0.263996           -1.307           0.191
L3.lnM1        35.719033        28.614886            1.248           0.212
L3.R            0.310248         0.272203            1.140           0.254
L4.lnM1       -31.044707        18.926570           -1.640           0.101
L4.R           -0.162658         0.214871           -0.757           0.449
==========================================================================

Correlation matrix of residuals
            lnM1         R
lnM1    1.000000 -0.135924
R      -0.135924  1.000000

Verwenden Sie als Nächstes die Daten, wobei der Trend entfernt wurde.

model = VAR(tsd0.iloc[:36])

results = model.fit(4)
results.summary()
 Summary of Regression Results   
==================================
Model:                         VAR
Method:                        OLS
Date:           Thu, 07, May, 2020
Time:                     10:50:42
--------------------------------------------------------------------
No. of Equations:         2.00000    BIC:                   -5.31179
Nobs:                     32.0000    HQIC:                  -5.86298
Log likelihood:           25.3682    FPE:                 0.00223143
AIC:                     -6.13627    Det(Omega_mle):      0.00135930
--------------------------------------------------------------------
Results for equation alnM1
===========================================================================
              coefficient       std. error           t-stat            prob
---------------------------------------------------------------------------
const            0.031290         0.024819            1.261           0.207
L1.alnM1         1.237658         0.189124            6.544           0.000
L1.R            -0.005209         0.001840           -2.831           0.005
L2.alnM1         0.035479         0.288928            0.123           0.902
L2.R             0.001341         0.002650            0.506           0.613
L3.alnM1        -0.267898         0.285970           -0.937           0.349
L3.R             0.006273         0.002722            2.304           0.021
L4.alnM1        -0.092060         0.190650           -0.483           0.629
L4.R            -0.004456         0.002161           -2.062           0.039
===========================================================================

Results for equation R
===========================================================================
              coefficient       std. error           t-stat            prob
---------------------------------------------------------------------------
const            2.626115         2.588966            1.014           0.310
L1.alnM1       -18.059084        19.728553           -0.915           0.360
L1.R             0.945671         0.191924            4.927           0.000
L2.alnM1         7.182544        30.139598            0.238           0.812
L2.R            -0.342745         0.276454           -1.240           0.215
L3.alnM1        37.385646        29.831061            1.253           0.210
L3.R             0.319531         0.283972            1.125           0.260
L4.alnM1       -30.462525        19.887663           -1.532           0.126
L4.R            -0.141785         0.225455           -0.629           0.529
===========================================================================

Correlation matrix of residuals
            alnM1         R
alnM1    1.000000 -0.099908
R       -0.099908  1.000000

Die Ergebnisse zeigen fast die gleichen Eigenschaften, aber Verbesserungen sind bei AIC und BIC zu sehen.

Verwenden wir aktuelle Daten.

model = VAR(tsd0.iloc[-40:])

results = model.fit(4)
results.summary()
 Summary of Regression Results   
==================================
Model:                         VAR
Method:                        OLS
Date:           Thu, 07, May, 2020
Time:                     11:06:09
--------------------------------------------------------------------
No. of Equations:         2.00000    BIC:                   -12.2865
Nobs:                     36.0000    HQIC:                  -12.8019
Log likelihood:           151.245    FPE:                2.13589e-06
AIC:                     -13.0783    Det(Omega_mle):     1.36697e-06
--------------------------------------------------------------------
Results for equation alnM1
===========================================================================
              coefficient       std. error           t-stat            prob
---------------------------------------------------------------------------
const            0.019669         0.012024            1.636           0.102
L1.alnM1         0.706460         0.175974            4.015           0.000
L1.R            -0.015862         0.008523           -1.861           0.063
L2.alnM1        -0.046162         0.185186           -0.249           0.803
L2.R            -0.020842         0.011837           -1.761           0.078
L3.alnM1         0.568076         0.186205            3.051           0.002
L3.R             0.035471         0.011813            3.003           0.003
L4.alnM1        -0.461882         0.175777           -2.628           0.009
L4.R            -0.007579         0.009849           -0.769           0.442
===========================================================================

Results for equation R
===========================================================================
              coefficient       std. error           t-stat            prob
---------------------------------------------------------------------------
const           -0.053724         0.308494           -0.174           0.862
L1.alnM1         1.054672         4.515026            0.234           0.815
L1.R             0.875299         0.218682            4.003           0.000
L2.alnM1        -5.332917         4.751384           -1.122           0.262
L2.R             0.257259         0.303711            0.847           0.397
L3.alnM1         3.412184         4.777534            0.714           0.475
L3.R            -0.263699         0.303088           -0.870           0.384
L4.alnM1         4.872672         4.509976            1.080           0.280
L4.R             0.032439         0.252706            0.128           0.898
===========================================================================

Correlation matrix of residuals
            alnM1         R
alnM1    1.000000 -0.168029
R       -0.168029  1.000000

Das Ergebnis vor der Trendentfernung ist

 Summary of Regression Results   
==================================
Model:                         VAR
Method:                        OLS
Date:           Thu, 07, May, 2020
Time:                     11:07:32
--------------------------------------------------------------------
No. of Equations:         2.00000    BIC:                   -12.3214
Nobs:                     38.0000    HQIC:                  -12.5991
Log likelihood:           144.456    FPE:                2.90430e-06
AIC:                     -12.7524    Det(Omega_mle):     2.26815e-06
--------------------------------------------------------------------
Results for equation lnM1
==========================================================================
             coefficient       std. error           t-stat            prob
--------------------------------------------------------------------------
const           0.079744         0.100134            0.796           0.426
L1.lnM1         0.784308         0.174023            4.507           0.000
L1.R           -0.016979         0.009977           -1.702           0.089
L2.lnM1         0.211960         0.174036            1.218           0.223
L2.R            0.012038         0.009846            1.223           0.221
==========================================================================

Results for equation R
==========================================================================
             coefficient       std. error           t-stat            prob
--------------------------------------------------------------------------
const          -1.450824         2.077328           -0.698           0.485
L1.lnM1         0.736725         3.610181            0.204           0.838
L1.R            0.884364         0.206971            4.273           0.000
L2.lnM1        -0.617456         3.610443           -0.171           0.864
L2.R           -0.027052         0.204257           -0.132           0.895
==========================================================================

Correlation matrix of residuals
            lnM1         R
lnM1    1.000000 -0.260828
R      -0.260828  1.000000

Recommended Posts

Einführung in Vector Self-Return-Modelle (VAR) mit Statistikmodellen
Einführung in Vector Error Correction Models (VECM) mit Statistikmodellen
Einführung in das Testen statistischer Hypothesen mit Statistikmodellen
Einführung in das Generalized Linear Model (GLM) von Python
Einführung in RDB mit sqlalchemy Ⅰ
Einführung in RDB mit sqlalchemy II
Einführung in das maschinelle Lernen: Funktionsweise des Modells
Einführung in das Auffüllen von Python-Bildern Auffüllen von Bildern mit ImageDataGenerator
[Einführung in Python] Verwenden wir foreach mit Python
[Einführung in Pytorch] Ich habe mit sinGAN ♬ gespielt
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Einführung in die künstliche Intelligenz mit Python 1 "Genetic Algorithm-Theory-"
Markov Chain Artificial Brainless mit Python + Janome (1) Einführung in Janome
Einführung in die künstliche Intelligenz mit Python 2 "Genetic Algorithm-Practice-"
[Einführung in StyleGAN2] Unabhängiges Lernen mit 10 Anime-Gesichtern ♬
Einführung in Tornado (1): Python Web Framework mit Tornado gestartet
Einführung in den Formationsflug mit Tello edu (Python)
[Einführung zur Minimierung] Datenanalyse mit SEIR-Modell ♬
Einführung in Python mit Atom (unterwegs)
[Einführung in die Udemy Python3 + -Anwendung] 9. Drucken Sie zunächst mit print
Einführung in MQTT (Einführung)
Einführung in Scrapy (1)
Einführung in Scrapy (3)
Erste Schritte mit Supervisor
Einführung in Tkinter 1: Einführung
Einführung in PyQt
Einführung in Scrapy (2)
[Linux] Einführung in Linux
Einführung in Scrapy (4)
Einführung in discord.py (2)
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
[Einführung in Word Cloud] Einfache Verwendung mit Jetson-nano ♬
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Einführung in die verteilte Parallelverarbeitung von Python durch Ray
Einführung in die Mathematik ab Python Study Memo Vol.1
[Kapitel 6] Einführung in Scicit-Learn mit 100 Klopfen Sprachverarbeitung
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Einführung in Pytorch] Ich habe versucht, Cifar10 mit VGG16 ♬ zu kategorisieren
[Einführung in AWS] Ich habe versucht, mit der Sprach-Text-Konvertierung zu spielen ♪
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung