À propos de VAR basé sur [Économétrie de base] gujarati (http://www.unife.it/economia/lm.economics/lectures/applied-econometrics/materiale-didattico-2018-2019/gujarati_book.pdf) (BE) J'ai essayé ensemble. Il est basé sur l'exemple 17.13 et la section 22.9 de BE. La plupart de la traduction est 22.9, mais il sera difficile de lire sans BE, alors j'ai essayé de reproduire autant que possible l'expression gujarati. De nombreux livres de gujarati liés à l'économétrie sont utilisés comme manuels dans les universités et les écoles supérieures en Europe et aux États-Unis. C'est l'un des manuels les plus fiables car il décrit clairement ce que vous pouvez et ne pouvez pas faire en économie métrique.
De plus, nous organiserons une session d'étude en ligne gratuite (régression linéaire) le 16 juin 2020 (https://connpass.com/event/177556/edit/). On espère que vous allez nous rejoindre.
La plupart des analyses de régression portent sur un modèle constitué d'une seule équation. Il se compose d'une variable dépendante et d'une ou plusieurs variables explicatives. De tels modèles mettent l'accent sur l'obtention de prévisions et de moyennes Y. S'il existe une relation de cause à effet, un tel modèle serait dans la direction de X à Y. Cependant, dans de nombreuses situations, il est considéré comme dénué de sens de discuter de la direction et de la relation entre la cause et l'effet. Cependant, il existe également un phénomène selon lequel Y est fixé par X et X est fixé par Y. Parfois, X et Y affectent les deux directions en même temps. Dans ce cas, la distinction entre les variables dépendantes et explicatives n'a pas de sens. Dans un tel modèle d'équation simultanée, chacun est fixé en même temps qu'un ensemble de variables. Dans un tel modèle, il existe une ou plusieurs équations et, dans un tel modèle, les variables mutuellement dépendantes sont appelées variables endogènes et sont des variables stochastiques. En revanche, les variables qui ne sont pas vraiment probabilistes sont des variables exogènes ou prédéterminées. En BE, les chapitres 18 à 20 sont expliqués en détail dans le modèle d'équation simultanée (18), le problème de discrimination (19) et la méthode d'équation simultanée (20). Considérons les prix de la masse monétaire (Q) et des biens (P). Le prix d'un produit et la quantité de masse monétaire sont déterminés par l'interaction du produit avec les courbes d'offre et d'offre. Nous représentons donc ces courbes linéairement et y ajoutons du bruit pour modéliser l'interaction.
Fonction de demande $ Q_t ^ d = \ alpha_0 + \ alpha_1P_t + u_ {1t} $
Fournir la fonction $ Q_t ^ s = \ beta_0 + \ beta_1P_t + u_ {2t} $
Condition de solde $ Q_t ^ d = Q_t ^ s $
$ t $ est l'heure et $ \ alpha $, $ \ beta $ est le paramètre.
La fonction de demande ($ Q_t ^ d
Dans les équations simultanées (équations simultanées) ou les modèles structurels, les variables sont traitées comme des variables endogènes, certaines exogènes ou prédéterminées qui combinent des variables exogènes et endogènes retardées. Avant d'estimer un tel modèle, il est nécessaire de vérifier si les équations du système sont (précisément ou excessivement) identifiables. Cette distinction est obtenue en supposant que certaines des variables données ne sont présentes que dans certaines équations.
Cette décision est souvent subjective et a été sévèrement critiquée par Christopher Sims. Selon Sims, s'il existe une véritable simultanéité entre un ensemble de variables, elles devraient toutes être traitées de la même manière. Il ne doit y avoir aucune distinction préalable entre les variables endogènes et exogènes. C'est sur la base de cette idée que Sims a développé le modèle VAR.
(17.14.1) et (17.14.2) sont la valeur actuelle du PIB en termes de valeur passée de la masse monétaire et la valeur du PIB passé, et le présent en termes de valeur passée de la masse monétaire et de valeur passée du PIB. Décrit la valeur de la masse monétaire en. Il n'y a pas de variables exogènes dans ce système.
Examinons maintenant la nature de la relation causale entre la masse monétaire canadienne et les taux d'intérêt. L'équation de la masse monétaire comprend les valeurs passées de la masse monétaire et du taux d'intérêt, et l'équation du taux d'intérêt se compose des valeurs passées du taux d'intérêt et de la masse monétaire. Ces deux exemples sont des exemples de modèles de retour automatique vectoriel. Le terme d'auto-retour est dû à l'utilisation de valeurs passées, ou de valeurs différées, pour la variable dépendante à droite. Le terme vecteur est dû au fait que nous avons affaire à un vecteur de deux (ou plus) variables.
En utilisant les six valeurs différées de chaque variable comme variables indépendantes de la masse monétaire canadienne et des taux d'intérêt, comme nous le verrons plus loin, la relation causale entre la masse monétaire (M1) et les taux d'intérêt (taux d'intérêt des entreprises à 90 jours (R)) Nous ne pouvons pas rejeter l'hypothèse selon laquelle il y a, c'est-à-dire que M1 affecte R et R affecte M1. Cette situation est mieux utilisée avec VAR.
Pour illustrer comment estimer le VAR, nous supposerons que chaque équation a k retards de M (mesurés par M1) et R. Dans ce cas, OLS estime chacune des équations suivantes:
Où u est un terme d'erreur probabiliste et est appelé impulsion, innovation ou choc dans le langage VAR.
Avant d'estimer (22.9.1) et (22.9.2), nous devons déterminer la longueur de retard maximale k. Ceci est déterminé empiriquement. Les données utilisées sont 40 observations de 1979.I à 1988.IV. L'inclusion de nombreuses valeurs retardées dans chaque équation réduit le degré de liberté. Il y a aussi la possibilité d'une colinéarité multiple. Si le nombre de retards est trop faible, les spécifications peuvent être incorrectes. Une façon de résoudre ce problème consiste à utiliser des normes d'information telles que Akaike et Schwartz et à sélectionner le modèle avec le plus bas de ces normes. Les essais et erreurs sont inévitables.
Les données suivantes sont copiées du tableau 17.5.
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()
Tout d'abord, utilisez quatre valeurs de retard (k = 4) pour chaque variable et utilisez statsmodels pour estimer les paramètres des deux équations. Les échantillons sont de 1979.I à 1988.IV, mais les échantillons de 1979.I à 1987.IV sont utilisés pour l'estimation et les quatre dernières observations sont utilisées pour diagnostiquer la précision de prédiction VAR optimisée.
Ici, nous supposons que M1 et R sont stationnaires. De plus, comme les deux équations ont la même longueur de retard maximale, nous utilisons OLS pour la régression. Chaque coefficient estimé peut ne pas être statistiquement significatif, probablement en raison de la colinéarité multiple, car il contient des retards pour la même variable. Mais dans l'ensemble, le modèle est significatif d'après les résultats du test F.
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
Bien que les valeurs de l'AIC et du BIC soient partiellement différentes, on obtient presque les mêmes résultats que BE. Regardons d'abord la régression de M1. Le délai 1 pour M1 et les délais 1 et 2 pour R sont respectivement statistiquement significatifs (niveau de 5%). Au regard du rendement des taux d'intérêt, les retards de M1 1,2,4 et les retards de premier ordre des taux d'intérêt sont importants (niveau de 5%).
À titre de comparaison, les résultats VAR basés sur deux retards pour chaque variable endogène sont présentés.
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
De même, bien que les valeurs de AIC et BIC soient partiellement différentes, on obtient presque les mêmes résultats que BE. Ici, dans la régression de la masse monétaire, nous pouvons voir que le retard de premier ordre de la masse monétaire et le retard du terme du taux d'intérêt sont respectivement statistiquement significatifs. Dans le retour des taux d'intérêt, le retard de second ordre de la masse monétaire et le retard de premier ordre du taux d'intérêt sont importants.
Quel est le meilleur, si vous choisissez entre 4 et 2 modèles de délai? La quantité d'informations d'Akaike et Schwartz du 4e modèle est de 13,5683 et 14,3927, respectivement, et les valeurs correspondantes du 2e modèle sont 13,3058 et 13,7547. Plus les statistiques d'Akaike et Schwartz sont faibles, meilleur est le modèle, donc un modèle concis semble préférable. Là encore, la sélection est un modèle qui contient deux retards pour chaque variable endogène.
Sélectionnez un modèle avec deux délais. Utilisé pour prédire les valeurs de M1 et R. Les données vont de 1979.I à 1989.IV, mais les valeurs de 1989 ne sont pas utilisées pour estimer le modèle VAR. Prédisons maintenant 1989.I, la valeur de M1 pour le premier trimestre de 1989. La valeur prévue de 1989 I peut être obtenue comme suit.
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]))
Ici, le coefficient est obtenu à partir de summary.report.
En utilisant les valeurs appropriées pour M et R, nous pouvons voir que la quantité monétaire estimée pour le premier trimestre de 1988 est de 36995 (millions de dollars canadiens). La valeur réelle de M en 1988 était de 36480,33 (millions de dollars canadiens). Cela a surestimé la valeur réelle d'environ 515 (millions de dollars). Cela représente environ 1,4% du M réel en 1988. Bien entendu, ces estimations varieront en fonction du nombre de retards dans le modèle VAR.
Expliquez Y avec X, et si Y change lorsque X change, on dit qu'il a une cause et un effet Granger. Utilisons les tests de causalité des producteurs des modèles de statistiques pour voir s'il existe une relation causale. Deux variables endogènes et l'ordre k sont des arguments. Teste si la deuxième colonne de la variable endogène est la causalité de Granger de la première colonne. L'hypothèse nulle des tests de causalité granger est que la série chronologique de la deuxième colonne x2 ne provoque pas la série chronologique de la première colonne x1. La relation causale de Grange signifie que la valeur passée de x1 a un effet statistiquement significatif sur la valeur actuelle de x1 avec la valeur passée de x1 comme variable indépendante. Si la valeur p est inférieure au niveau de signification souhaité, nous rejetons l'hypothèse nulle que x2 ne cause pas x1 par Granger.
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
Les tests de causalité de Granger effectuent quatre tests.
«Params_ftest» et «ssr_ftest» utilisent la distribution F. «Ssr_chi2test» et «lrtest» utilisent la distribution du chi carré. Il s'avère que des retards allant jusqu'à 1-6 sont causaux de Granger avec R de M, mais avec des retards 7 et 8, il n'y a pas de relation causale entre les deux variables.
Ensuite, regardons la relation inverse.
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
Ici, l'hypothèse nulle est rejetée dans les 6e et 7e ordres.
Les résultats varient. L'une des significations du théorème d'expression de Granger est que deux variables, Xt et Yt, sont dans une relation républicaine, chacune individuellement I (1) et somme, et chacune individuellement non stationnaire. Alors Xt peut avoir Granger causal Yt, ou Yt peut avoir Granger causal Xt.
Dans cet exemple, si M1 et R sont individuellement républicains avec I (1), alors M1 a Granger causal R ou R a Granger causal M1. Autrement dit, vous devez d'abord vérifier si les deux variables sont individuellement I (1), puis vérifier si elles sont républicaines. Si ce n'est pas le cas, tout le problème causal peut être fondamentalement suspecté. Quand on regarde réellement M1 et R, il n'est pas clair si ces deux variables sont républicaines. Par conséquent, les conséquences de la causalité de Granger varient également.
Les partisans du VAR soulignent les avantages de cette méthode:
(1) La méthode est simple. Vous n'avez pas à vous demander quelles variables sont endogènes et lesquelles sont exogènes. Toutes les variables de VAR sont endogènes.
(2) La prédiction est facile. Autrement dit, la méthode OLS habituelle peut être appliquée à chaque équation.
(3) Les prédictions obtenues par cette méthode sont souvent supérieures à celles obtenues à partir de modèles d'équations simultanées plus complexes.
Cependant, les critiques de la modélisation VAR soulignent les problèmes suivants:
Contrairement au modèle d'équation simultanée, le modèle VAR est théorique. C'est parce que je n'utilise pas beaucoup d'informations antérieures (expérience). Dans un modèle d'équation simultanée, l'inclusion ou non de certaines variables joue un rôle important dans l'identification du modèle.
Le modèle VAR n'est pas bien adapté à l'analyse des politiques en raison de sa focalisation sur la prévision.
Le plus grand défi pratique dans la modélisation VAR est de choisir la bonne longueur de retard. Supposons que vous ayez un modèle VAR à 3 variables et que vous décidiez d'inclure 8 retards pour chaque variable dans chaque équation. Chaque équation a 24 paramètres de retard et des termes constants, pour un total de 25 paramètres. L'estimation de nombreux paramètres, sauf si la taille de l'échantillon est grande, réduit beaucoup de liberté dans tous les problèmes connexes.
Strictement parlant, dans le modèle VAR à m-variables, toutes les m-variables (ensemble) doivent être stationnaires. Sinon, les données doivent être transformées de manière appropriée (par exemple, par une différence de premier ordre). Comme le souligne Harvey, les résultats des données transformées peuvent être inadéquats. Il déclare en outre: «La méthode habituelle adoptée par les partisans du VAR est d'utiliser des niveaux, même si certains de ces délais ne sont pas stationnaires. Dans ce cas, l'effet des racines unitaires sur la distribution des estimations est important. Pour aggraver les choses, la conversion des données n'est pas facile si le modèle contient un mélange de variables I (0) et I (1), c'est-à-dire des variables constantes et non stationnaires.
Étant donné que chaque coefficient du modèle VAR estimé est souvent difficile à interpréter, les partisans de cette technique estiment souvent ce que l'on appelle la fonction de réponse impulsionnelle (IRF). L'IRF suit la réponse de la variable dépendante du système VAR pour étudier les effets des termes d'erreur tels que u1 et u2 dans (22.9.1) et (22.9.2). Supposons que u1 dans l'équation M1 augmente d'un écart type. De tels chocs ou changements changeront M1 maintenant et à l'avenir. Cependant, puisque M1 apparaît dans la régression de R, les changements de u1 affectent également R. De même, une modification d'un écart-type de u2 de l'équation R affecte M1. L'IRF suivra les effets de ces chocs à l'avenir. Les chercheurs ont mis en doute l'utilité d'une telle analyse IRF, mais elle est au cœur de l'analyse VAR.
C'est la simple traduction de BE. Après cela, il est écrit en référence à Vector autorégression.
$ y_ {t-i} $ est le i-ième délai d'ordre de y. c est un vecteur de degré k. $ A_i $ est une matrice temporelle de kxk. u est un vecteur de termes d'erreur de degré k.
L'ordre de la somme de toutes les variables doit être le même.
Obtenez des données à long terme auprès de FRED et analysez-les dans une perspective à long terme. La masse monétaire canadienne utilise MANMM101CAM189S et le taux d'intérêt utilise 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()
Examinez la stabilité.
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
Sans surprise, le M1 suit une marche aléatoire. C'est la même chose même si la régression est c, ct, ctt.
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
Bien entendu, R est un processus constant tel qu'il est. C'est la même chose même si la régression est c, ct, ctt.
J'ai donc pris la logarithmique de M1.
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
La logarithmique de M1 semble avoir une stabilité de tendance.
Supprimons la tendance.
# remove time trend
gap=np.linspace(np.log(M1.iloc[0]), np.log(M1.iloc[-1]), len(M1))
lnM1=np.log(M1)
lnM1.plot()
alnM1=lnM1.copy()
alnM1['a']=gap
alnM1=alnM1.iloc[:,0]-alnM1.a
alnM1.plot()
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 est devenu un processus régulier avec la tendance supprimée.
Tout d'abord, analysons le long de BE.
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
Ensuite, utilisez les données avec la tendance supprimée.
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
Les résultats montrent à peu près les mêmes caractéristiques, mais des améliorations sont observées en AIC et BIC.
Utilisons des données récentes.
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
Le résultat avant la suppression de la tendance est
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