Dans le modèle de correction d'erreur (ECM) introduit par Granger, Newbold (1974) et Yule (1936), les données analysées ont une tendance probabiliste à long terme connue sous le nom de république. La correction d'erreur exprime que les écarts ou les erreurs par rapport à l'équilibre à long terme affectent la dynamique à court terme. Si la série chronologique économique contient des racines unitaires, la série chronologique n'est pas stationnaire. Deux séries chronologiques non stationnaires et non liées peuvent montrer une relation significative lors de l'utilisation de la méthode des moindres carrés dans l'analyse de régression. Le modèle de correction d'erreur analyse les effets entre les données de séries chronologiques à long terme et à court terme et prédit le temps nécessaire au retour de la variable dépendante à l'équilibre, mais la méthode d'Engel-Granger pose de nombreux problèmes. Johansen a résolu le problème en annonçant le modèle de correction d'erreur vectorielle (VECM). VECM est un modèle de correction d'erreurs avec le concept d'un modèle vectoriel à retour automatique (VAR), qui est l'un des modèles de séries temporelles multiples qui supposent une causalité bidirectionnelle. Par conséquent, le modèle de correction d'erreur vectorielle est également l'un des multiples modèles de séries chronologiques.
Le modèle de correction d'erreurs (ECM) est un modèle de séries chronologiques multiples dans lequel plusieurs variables sous-jacentes sont utilisées pour les données avec des tendances probabilistes à long terme appelées réconciliations. L'ECM aide à estimer les effets à court et à long terme d'une série chronologique sur une autre, et est théoriquement soutenu. La correction des erreurs saisit le fait que les erreurs précoces de l'équilibre à long terme affectent la dynamique à court terme. Par conséquent, l'ECM peut estimer directement le taux auquel la variable dépendante revient à l'équilibre après des changements dans d'autres variables.
Yule (1936) et Granger et Newbold (1974) se sont d'abord concentrés sur le problème de la corrélation apparente et ont trouvé une solution dans l'analyse des séries chronologiques. Dans deux processus de somme (non stationnaires) totalement indépendants, l'un tend à montrer une relation statistiquement significative par rapport à l'autre par analyse de régression. Par conséquent, il peut être erroné qu'il existe une véritable relation entre ces variables. La méthode habituelle des moindres carrés est incohérente et les statistiques de test couramment utilisées ne sont pas valides. En particulier, les simulations de Monte Carlo ont montré que l'on obtient des $ R ^ 2 $ très élevés, des statistiques t très élevées individuellement et des statistiques de Durbin-Watson faibles. Techniquement parlant, Phillips (1986) prouve qu'à mesure que la taille de l'échantillon augmente, les estimations des paramètres ne convergent pas de manière probabiliste, les sections divergent et le gradient devient une distribution non dégénérée. Cependant, parce qu'elle reflète les relations à long terme entre ces variables, il est possible qu'il existe une tendance probabiliste commune dans les deux séries chronologiques qui intéresse vraiment le chercheur.
En raison de la nature probabiliste des tendances, le processus de sommation ne peut pas être divisé en séries temporelles stationnaires contenant des tendances déterministes (prévisibles) et des écarts par rapport aux tendances. Même une marche aléatoire avec les tendances déterministes supprimées finira par montrer une fausse corrélation. Par conséquent, la suppression des tendances ne résout pas le problème d'estimation. Dans la méthode de Box-Jenkins, dans de nombreuses séries temporelles (économie, etc.), on considère généralement que la différence de premier ordre est constante, et la différence des données de séries chronologiques est prise pour estimer un modèle tel que ARIMA. Les prévisions de tels modèles reflètent la périodicité et la saisonnalité des données, mais les informations sur les ajustements à long terme des niveaux (série originale, prix) sont perdues et les prévisions à long terme deviennent peu fiables. En conséquence, Sargan (1964) a développé une méthodologie ECM qui conserve les informations contenues dans le niveau.
Plusieurs méthodes sont connues pour estimer le modèle dynamique sophistiqué décrit ci-dessus. Parmi ceux-ci figurent l'approche en deux étapes d'Engle et Granger et la VECM vectorielle utilisant la méthode d'estimation de l'ECM de Johansen en une seule étape.
La première étape consiste à tester à l'avance si la série chronologique individuelle utilisée est non stationnaire. Utilisez les tests DF et ADF de racine unitaire standard (pour résoudre le problème de l'erreur de corrélation en série). Prenons le cas de deux séries temporelles différentes $ x_ {t} $ et $ y_ {t} $. Si les deux sont I (0), l'analyse de régression standard est valide. Pour des sommes d'ordres différents, par exemple si l'un est I (1) et l'autre est I (0), le modèle doit être transformé. Si les deux sont des sommes du même ordre (généralement I (1)), alors un modèle ECM de la forme peut être estimé:
Si les deux sont des sommes et que cet ECM existe, on dit qu'elles sont des républiques par le théorème d'expression d'Engle-Granger. Puis utilisez la méthode habituelle des moindres carrés pour estimer le modèle $ y_ {t} = \ beta_ {0} + \ beta_ {1} x_ {t} + \ varepsilon_ {t} $. Si la régression ne se fait pas passer pour celle déterminée par les critères de test ci-dessus, non seulement les moindres carrés habituels sont valides, mais en fait il y a super-appariement (Stock, 1987). Enregistrez ensuite le résidu prédit $ \ hat {\ varepsilon_ {t}} = y_ {t} - \ beta_ {0} - \ beta_ {1} x_ {t} $ de cette régression, ainsi que la variable de différence et le délai Utilisé pour la régression du terme d'erreur.
Testez ensuite la réconciliation en utilisant les statistiques t standard de $ \ alpha $. Cette méthode est simple, mais présente un certain nombre de problèmes.
-La puissance de détection statistique du test de racine unitaire univarié utilisé dans la première étape est faible.
VECM L'approche d'Engle-Granger décrite ci-dessus présente de nombreuses faiblesses. Autrement dit, une variable est limitée à une seule équation désignée comme variable dépendante. Cette variable s'explique par une autre variable supposée faiblement exogène au paramètre d'intérêt. Vérifiez également si la série chronologique est I (0) ou I (1) par un test préliminaire. Ces faiblesses peuvent être corrigées par la méthode de Johansen. L'avantage est qu'aucun prétest n'est requis, il n'y a pas de problème avec un grand nombre de relations républicaines, toutes sont traitées comme des variables endogènes, et des tests liés aux paramètres à long terme sont possibles. En conséquence, le modèle ajoute des capacités de correction d'erreur au modèle exogène connu sous le nom d'auto-retour vectoriel (VAR) et est connu sous le nom de modèle de correction d'erreur vectorielle (VECM). La procédure est la suivante.
Étape 1: Estimer un VAR sans contrainte pouvant contenir des variables non stationnaires Étape 2: test de Kyowa à l'aide du test de Johansen Étape 3: Créez et analysez VECM.
L'idée de républicanisation peut être illustrée par un simple exemple macroéconomique. Supposons que $ C_ {t} $ de consommation et $ Y_ {t} $ de revenu disponible sont des séries chronologiques macroéconomiques avec des relations à long terme. Plus précisément, la tendance moyenne à la consommation est fixée à 90%. En d'autres termes, $ C_ {t} = 0.9Y_ {t} $ tient à long terme. Du point de vue d'un économiste métrique, l'erreur $ \ varepsilon_ {t} (= C_ {t} - \ beta Y_ {t}) $ de la régression est une série temporelle stationnaire, $ Y_ {t} $ et $ C_ {t} Si $ n'est pas stationnaire, cette relation à long terme (également appelée républicaine) existe. De plus, si $ Y_ {t} $ change soudainement de $ \ Delta Y_ {t} $, on suppose que $ C_ {t} $ change. $ \ Delta C_ {t} = 0,5 \ Delta Y_ {t} $, c'est-à-dire que la tendance de consommation marginale est de 50%. L'hypothèse finale est que l'écart entre la consommation actuelle et la consommation équilibrée diminuera de 20% sur chaque période.
Avec ce paramètre, modifiez le niveau de consommation $ \ Delta C_ {t} = C_ {t} --C_ {t-1} $ en $ \ Delta C_ {t} = 0,5 \ Delta Y_ {t} -0,2 (C_ {t) -1} -0,9Y_ {t-1}) + \ varepsilon_ {t} $.
Le premier terme de RHS explique l'effet à court terme des variations de $ Y_ {t} $ sur $ C_ {t} $, le deuxième terme explique la relation à long terme des variables vers l'équilibre, et le troisième. Le terme reflète le choc aléatoire que reçoit le système, tel que le choc de confiance des consommateurs qui affecte la consommation.
Pour voir comment le modèle fonctionne, considérez deux types de chocs, permanents et temporaires. Pour plus de simplicité, définissez $ \ varepsilon_ {t} $ à zéro pour chaque t.
Supposons que le système soit en équilibre pour la période t - 1. Autrement dit, $ C_ {t-1} = 0,9Y_ {t-1} $.
Supposons que $ Y_ {t} $ augmente de 10 à la période t, mais retourne ensuite au niveau précédent. Dans ce cas, $ C_ {t} $ augmente de 5 (la moitié de 10) au début (période t), mais dans la deuxième période et les suivantes, $ C_ {t} $ commence à diminuer et converge vers le niveau initial.
En revanche, si l'impact sur $ Y_ {t} $ est permanent, $ C_ {t} $ convergera lentement vers une valeur supérieure à 9 au-dessus du $ C_ {{t-1}} $ initial.
La valeur d'une variable économique spécifique est la valeur de réalisation de la variable de probabilité pour une période donnée, et la série chronologique est considérée comme générée par le processus de probabilité. Pour clarifier le concept de base, jetons un coup d'œil rapide à quelques définitions et expressions de base.
Ω est un ensemble de tous les événements de base (espace d'échantillonnage) et (Ω, F, Pr) est un espace de probabilité. F est l'algèbre sigma de l'événement, ou le complément de Ω, et Pr est la mesure de probabilité définie par F. La variable aléatoire y est une fonction à valeur réelle $ A_c $ = {ω ∈ Ω | y (ω) ≤ c} ∈ F définie par Ω pour chaque nombre réel c, et $ A_c $ a une probabilité définie par Pr. C'est un événement à faire. La fonction F: R → [0, 1] est définie par $ F (c) = Pr (A_c) $ et est une fonction de distribution de $ y $.
Le vecteur de probabilité à K dimensions ou le vecteur à K dimensions de la variable stochastique est une fonction de Ω à y dans l'espace euclidien à K dimensions $ R ^ K $. Autrement dit, y applique respectivement $ y (ω) = (y_1 (ω), ..., y_K (ω)) ^ \ prime $ à ω ∈ Ω, $ c = (c_1, ..., c_K ) ∈ R_K $, $ A_c = {ω | y_1 (ω) ≤ c_1, \ cdots, y_K (ω) ≤ c_K} ∈ F $. Fonction F: RK → [0, 1] est défini par $ F (c) = Pr (A_c) $ et est une distribution simultanée de y fonctions.
Supposons que Z est un ensemble d'indices avec jusqu'à d'innombrables éléments, par exemple un ensemble de tous les entiers ou de tous les entiers positifs. Le processus stochastique (discret) est une fonction à valeur réelle de y: Z × Ω → R, déterminée chaque t ∈ Z, et y (t, ω) est une variable stochastique. La variable de probabilité correspondant à t est représentée par $ y_t $, et l'espace de probabilité sous-jacent n'est pas mentionné. Dans ce cas, on considère que tous les membres $ y_t $ du processus stochastique sont définis dans le même espace stochastique. Habituellement, si la signification du symbole est claire dans le contexte, le processus stochastique est également indiqué par $ y_t $.
Le processus stochastique est décrit comme une fonction de distribution simultanée de toutes les familles de sous-ensembles finis de $ y_t $ lorsque t ∈ S ⊂ Z. En pratique, le système complet de distribution est souvent inconnu, nous utilisons donc souvent les premier et deuxième moments de la distribution. Autrement dit, utilisez la moyenne $ E (y_t) = \ mu_t $, la variance $ E [y_t- \ mu_t ^ 2] $ et la covariance $ E [(y_t- \ mu_t) (y_s- \ mu_s)] $.
Le processus de probabilité vectorielle à K dimensions ou processus de probabilité multivariée est une fonction de y: Z × Ω → $ R ^ K $, et pour chaque t ∈ Z déterminé, y (t, ω) est un vecteur de probabilité à K dimensions. .. Utilisez $ y_t $ pour le vecteur de probabilité correspondant au t ∈ Z déterminé. De plus, le processus stochastique complet peut être représenté par $ y_t $. Cette signification particulière ressort clairement du contexte. Les propriétés stochastiques sont les mêmes que pour les processus univariés. Autrement dit, les propriétés probabilistes sont résumées comme une fonction de distribution simultanée de tous les cosets finis du vecteur de probabilité $ y_t $. En pratique, les moments du premier et du second ordre dérivés de toutes les variables stochastiques pertinentes sont utilisés.
La valeur de réalisation du processus stochastique (vectoriel) est $ y_t (\ omega) $, un ensemble de séquences (vectorielles) pour ω fixées par t ∈ Z. En d'autres termes, la valeur réalisée du processus stochastique est la fonction Z → $ R ^ K $ de t → $ y_t $ (ω). Les séries temporelles sont considérées comme de telles réalisations ou, dans certains cas, des parties finies de telles réalisations. C'est-à-dire, par exemple, qu'il est composé de (vector) $ y_1 (\ omega), \ dots, y_T (\ omega) $. On pense que le processus stochastique sous-jacent a généré la (les) série (s) chronologique (s) et est appelé processus de génération ou de génération de séries chronologiques, ou processus de génération de données (DGP). La série temporelle $ y_1 (\ omega), \ cdots, y_T (\ omega) $ est généralement indiquée par $ y_1, \ cdots, y_T $, ou simplement par le processus stochastique sous-jacent $ y_t $ si aucune confusion ne se produit. Est fait. Le nombre T d'observations est appelé la taille de l'échantillon ou la longueur de la série chronologique.
Les fonctions linéaires étant faciles à manipuler, nous commencerons par prédire les observations passées avec des fonctions linéaires. Considérons les séries temporelles univariées $ y_t $ et $ h = 1 $ prévisions futures. Si f (・) est une fonction linéaire,
Considérant plusieurs séries chronologiques, d'abord
Pour simplifier la notation, $ y_t = (y_ {1t}, \ cdots, y_ {Kt}), \ hat {y_t}: = (\ hat {y_ {1t}}, \ cdots, \ hat {y_ {Kt}}), \ nu = (\ nu_1, \ cdots, \ nu_K) $ et
Puisque $ y_t $ est un vecteur de variables stochastiques, ce prédicteur est le meilleur prédicteur obtenu à partir d'un modèle vectoriel d'auto-retour de la forme:
Modèle VAR (p) (modèle VAR d'ordre p)
Penser à. $ y_t = (y_ {1t}, \ cdots, y_ {Kt}) ^ \ prime $ est le vecteur (K × 1) de la variable de probabilité, $ A_i $ est fixé par la matrice de coefficients (K × K), et $ \ nu = (\ nu_1, \ cdots, \ nu_K) ^ \ prime $ est fixé dans une matrice de coefficients (K × K) et a des sections qui peuvent être des moyennes non nulles $ E (y_t) $. Par conséquent, $ u_t = (u_ {1t}, \ cdots, u_ {Kt}) ^ \ prime $ est un bruit blanc ou un processus d'innovation à K dimensions. Autrement dit, $ s \ net $, $ E (u_t) = 0, E (u_tu_t ^ \ prime) = \ sum_u, E (u_tu_s ^ \ prime) = 0 $. Sauf indication contraire, la matrice de covariance Σu est une matrice non singulière.
Considérons un peu plus le processus de (2.1.1). Pour comprendre la signification du modèle, considérons le modèle VAR (1).
Si ce mécanisme de génération est répété à partir de $ t = 1 $
Par conséquent, le vecteur $ y_1, \ cdots, y_t $ est uniquement déterminé par $ y_0, u_1, \ cdots, u_t $. La distribution simultanée de $ y_1, \ cdots, y_t $ est déterminée par la distribution simultanée de $ y_0, u_1, \ cdots, u_t $.
Parfois, on suppose que le processus commence à une période spécifique, mais parfois il est plus pratique de partir d'un passé infini. En réalité, (2.1.1) correspond à cela. Si tel est le cas, quel est le processus compatible avec le mécanisme de (2.1.1)? Pour examiner ce problème, revisitez le processus VAR (1) dans (2.1.2). À partir de (2.1.3)
Si les coefficients de toutes les valeurs propres de $ A_1 $ sont inférieurs à 1, alors le processus de $ A ^ i_1 $, $ i = 0,1, \ cdots $, peut être ajouté de manière absolue. Par conséquent, somme infinie
A une moyenne au carré. Aussi,
De plus, $ A_1 ^ {j + 1} $ converge rapidement vers zéro comme $ j → \ infty $, donc le terme $ A_1 ^ {j + 1} y_ {t − j − 1} $ est ignoré dans la limite. Sera fait. Par conséquent, si les coefficients de toutes les valeurs propres de $ A_1 $ sont inférieurs à 1, $ y_t $ est le processus VAR (1) de (2.1.2) et $ y_t $ est le processus stochastique bien défini.
La distribution et la distribution simultanée de $ y_t $ sont déterminées uniquement par la distribution du processus de $ u_t $. Les premier et deuxième moments du processus de $ y_t $ sont pour tout $ t $
On peut voir que c'est le cas. Et
Car, dans le cas de $ s \ net $, $ E (u_tu_s ^ \ prime) = 0 $, et en tout $ t $, $ E (u_t u_t) = \ sum_u $.
queue
$ det(I_K − A_1z) \ne 0 \ \ \ \ \ (2.1.7)$
Sera. Le processus $ y_t $ de t = 0, ± 1, ± 2, ... peut également être défini si la condition de stabilité (2.1.7) n'est pas remplie, mais il est défini pour tout t ∈ Z. Nous ne faisons pas cela ici parce que nous supposons toujours la stabilité du processus.
Existe-t-il vraiment un équilibre entre de nombreuses variables économiques, comme le revenu et les dépenses des ménages, et le prix du même produit sur différents marchés? La variable cible est le vecteur $ y_t = (y_ {1t}, ..., y_ {Kt}) ^ \ prime $, et leur relation d'équilibre à long terme est $ \ beta y_t = \ beta_1y_ {1t} + ··· · + \ Beta_Ky_ {Kt} = 0) ^ \ prime $. Ici, $ \ beta = (\ beta_1, ..., \ beta_K) ^ \ prime $. Au fil du temps, cette relation peut ne pas être satisfaite exactement. Soit $ z_t $ une variable stochastique qui représente l'écart par rapport au solde, et supposons que $ \ beta y_t = z_t $ est valable. Si l'équilibre est effectivement établi, on considère que les variables $ y_t $ changent entre elles et $ z_t $ est considérée comme stable. Cependant, avec ce paramètre, la variable $ y_t $ peut errer en tant que groupe. Elle peut être motivée par une tendance probabiliste commune. En d'autres termes, chaque variable est une somme et il existe une connexion linéaire de variables constantes. Une variable de somme ayant cette caractéristique est appelée un rapprochement. En général, tous les composants du processus $ y_t $ K-dimensionnel sont $ I (d) $, sous $ \ beta = (\ beta_1, \ cdots, \ beta_K) ^ \ prime \ ne 0 $, $ z_t = \ beta ^ \ prime S'il y a une jointure linéaire de y_t $ et que $ z_t $ est $ I (d - b) $, alors la variable $ y_t $ est le rapprochement de l'ordre $ (d, b) $ Il est appelé et est exprimé par $ y_t ~ CI (d, b) $. Par exemple, si toutes les composantes de $ y_t $ sont I (1) et que $ \ beta y_t $ est stationnaire (I (0)), alors $ y_t à CI (1,1) $. Le vecteur $ \ beta $ est appelé le vecteur républicain. Le processus composé de variables républicaines s'appelle le processus républicain. Ce processus a été introduit par Granger (1981) et Engle & Granger (1987).
Pour simplifier le terme, nous utilisons une définition légèrement différente de la république. Lorsque $ \ Delta ^ d y_t $ est stable et $ \ Delta ^ {d − 1} y_t $ n'est pas stable, le processus $ y_t $ à K-dimensions est appelé la somme de l'ordre $ d $, qui est facilement $ y_t ~ I. Écrivez (d) $. Le processus I (d) de $ y_t $ est une somme de commandes inférieures à $ d $, et s'il existe une connexion linéaire $ \ beta y_t $ de $ \ beta \ ne 0 $, cela s'appelle une réconciliation. Cette définition est différente de celle d'Engle & Granger (1987) et n'exclut pas les composantes de $ y_t $ dont l'ordre de somme est inférieur à d. Si $ y_t $ n'a qu'un seul composant I (d) et que tous les autres composants sont stables (I (0)), alors $ \ Delta ^ d y_t $ est stable et $ \ Delta ^ Lorsque {d − 1} y_t $ n'est pas stable, le vecteur $ y_t $ devient I (d) selon la définition. Dans un tel cas, la relation $ \ beta y_t $ ne contenant que la composante constante est une relation républicaine dans notre terminologie. Évidemment, cet aspect de notre définition est incompatible avec l'idée originale de considérer une relation spéciale entre des variables de somme avec une tendance stochastique commune comme une république, mais distingue des sommes de variables d'ordres différents. La définition est toujours valable, non pas parce qu'elle simplifie simplement le terme. Les lecteurs doivent avoir une idée de base du républicanisme lorsqu'il s'agit d'interpréter certaines relations.
Evidemment, le vecteur républicain n'est pas unique. La multiplication par une constante non nulle donne un vecteur républicain. En outre, il peut y avoir divers vecteurs républicains linéairement indépendants. Par exemple, si votre système comporte quatre variables, supposons que les deux premières soient en équilibre à long terme et que les deux dernières soient similaires. Par conséquent, il peut y avoir un vecteur républicain avec des zéros dans les deux dernières positions et des zéros dans les deux premières positions. En outre, les quatre variables peuvent avoir une relation républicaine.
Avant l'introduction du concept de républicanité, des modèles de correction d'erreurs très proches ont été discutés dans le domaine de l'économie métrique. En général, dans le modèle de correction d'erreur, les changements de variables sont considérés comme des écarts par rapport à la relation d'équilibre. Par exemple, supposons que $ y_ {1t} $ représente le prix d'un article sur un marché et $ y_ {2t} $ correspond au prix du même article sur un autre marché. De plus, on suppose que la relation d'équilibre entre les deux variables est donnée par $ y_ {1t} = \ beta_1 y_ {2t} $ et que la variation de $ y_ {1t} $ dépend de l'écart par rapport à cet équilibre de période t - 1. Faire.
Une relation similaire peut s'appliquer à $ y_ {2t} $
Dans un modèle de correction d'erreur plus général, $ \ Delta y_ {it} $ peut également dépendre des modifications précédentes des deux variables, par exemple:
Pour voir la relation étroite entre le modèle de correction d'erreur et le concept de républicanité, supposons que $ y_ {1t} $ et $ y_ {2t} $ sont des variables I (1). Dans ce cas, tous les termes de (6.3.1), y compris $ \ Delta y_ {it} $, sont stables. De plus, $ u_ {1t} $ et $ u_ {2t} $ sont des erreurs de bruit blanc, qui sont également stables. Les termes instables ne sont pas équivalents à des processus stables
Marche aléatoire
Ensuite, faites de même pour AR (1). Cependant, multipliez chaque ligne par $ C_ {t-j} (= \ Pi ^ j $) afin que le X diagonalement inférieur soit décalé par le côté gauche.
Si $ X_t $ est I (1) et A est une matrice pxp de rang complet, alors $ AX_t $ est aussi $ I (0) $.
X_t $ soit stable, $ \ beta ^ \
C = 0 $
X_0 = \ beta ^ \
Y_0 ^ \ * $. Puis
Système d'induction du modèle de correction d'erreur
X_t = E (\ beta ^ \
X_t) = c $ définit l'économie sous-jacente. Le coefficient d'ajustement $ \ alpha $ tente de renvoyer l'erreur non équilibrée $ \ beta ^ \ `X_t-c $ à l'état correct.
Ceci est plus facile à comprendre si le décalage est secondaire.
#Initialisation
%matplotlib inline
import matplotlib.pyplot as plt
from statsmodels.tsa.api import VECM
import statsmodels.api as sm
from statsmodels.tsa.base.datetools import dates_from_str
import pandas as pd
import numpy as np
from numpy import linalg as LA
from statsmodels.tsa.vector_ar.vecm import coint_johansen
from statsmodels.tsa.vector_ar.vecm import select_coint_rank
from statsmodels.tsa.vector_ar.vecm import select_order
Processus bidimensionnel $ X_t $
= (a, -1) $. La relation linéaire $ \ beta ^ \
X_t = aX_ {1t} -X_ {2t} = a \ epsilon_ {2t} - \ epsilon_ {3t} $ est stationnaire, donc vérifions-la.
Oxford University Press.
n=10000
a=0.3
e1=np.random.normal(0,1,n)#.reshape([n,1])
e2=np.random.normal(0,1,n)#.reshape([n,1])
e3=np.random.normal(0,1,n)#.reshape([n,1])
X1=np.cumsum(e1)+e2
X2=a*np.cumsum(e1)+e3
X=np.concatenate([X1.reshape([n,1]),X2.reshape([n,1])],1)
plt.plot(X)
D'après le graphique, on peut voir que les deux sont des processus de sommation, mais qu'ils se comportent de la même manière.
betaX=a*X1-X2
plt.plot(betaX)
La stabilité peut être confirmée. Examinons quelques autres caractéristiques.
from statsmodels.tsa.vector_ar.vecm import coint_johansen
jres = coint_johansen(X, det_order=0, k_ar_diff=2)
print('critical value of max eigen value statistic',jres.cvm)
print('maximum eigenvalue statistic',jres.lr2)
print('critical value of trace statistic',jres.cvt)
print('Trace statistic',jres.lr1)
print('eigen values of VECM coefficient matrix',jres.eig)
print('eigen vectors of VECM coefficient matrix',jres.evec)
print('Order of eigenvalues',jres.ind)
print('meth',jres.meth)
critical value (90%, 95%, 99%) of max eigen value statistic
[[12.2971 14.2639 18.52 ]
[ 2.7055 3.8415 6.6349]]
maximum eigenvalue statistic
[2855.97930446 4.11317178]
critical value of trace statistic
[[13.4294 15.4943 19.9349]
[ 2.7055 3.8415 6.6349]]
Trace statistic
[2860.09247624 4.11317178]
eigen values of VECM coefficient matrix
[0.24849967 0.00041136]
eigen vectors of VECM coefficient matrix
[[ 0.50076827 -0.03993806]
[-1.67011922 -0.01128004]]
Order of eigenvalues [0 1]
meth johansen
Ensuite, découvrons le rang.
rres = select_coint_rank(X, det_order=-1, k_ar_diff=2)
rres.summary()
Johansen cointegration test using trace test statistic with 5% significance level
r_0 r_1 test statistic critical value
0 2 2857. 12.32
1 2 1.584 4.130
Ensuite, examinons le décalage.
rres = select_order(X,maxlags=10)
rres.summary()
VECM Order Selection (* highlights the minimums)
AIC BIC FPE HQIC
0 1.079 1.083 2.942 1.081
1 0.9691 0.9764 2.636 0.9716
2 0.9541 0.9642* 2.596 0.9575
3 0.9528* 0.9658 2.593* 0.9572*
4 0.9528 0.9687 2.593 0.9582
5 0.9535 0.9723 2.595 0.9598
6 0.9539 0.9755 2.596 0.9612
7 0.9546 0.9791 2.598 0.9629
8 0.9550 0.9825 2.599 0.9643
9 0.9556 0.9860 2.600 0.9659
10 0.9556 0.9888 2.600 0.9668
Voyons le résultat avec le modèle VECM.
model=VECM(X,k_ar_diff=0,deterministic='na')
res=model.fit()
print(res.summary())
Loading coefficients (alpha) for equation y1
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 -0.0805 0.005 -16.217 0.000 -0.090 -0.071
Loading coefficients (alpha) for equation y2
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 0.2708 0.003 86.592 0.000 0.265 0.277
Cointegration relations for loading-coefficients-column 1
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
beta.1 1.0000 0 0 0.000 1.000 1.000
beta.2 -3.3342 0.004 -850.887 0.000 -3.342 -3.327
==============================================================================
Suivant, Ajoutez $ X_ {3t} = \ epsilon_ {4t} $. Dans ce processus vectoriel, il existe deux vecteurs républicains (a, -1,0) et (0,0,1).
n=10000
a=0.3
e1=np.random.normal(0,1,n)#.reshape([n,1])
e2=np.random.normal(0,1,n)#.reshape([n,1])
e3=np.random.normal(0,1,n)#.reshape([n,1])
e4=np.random.normal(0,1,n)#.reshape([n,1])
X1=np.cumsum(e1)+e2
X2=a*np.cumsum(e1)+e3
X3=e4
X=np.concatenate([X1.reshape([n,1]),X2.reshape([n,1]),X3.reshape([n,1])],1)
model=VECM(X,k_ar_diff=0,deterministic='na')
res=model.fit()
print(res.summary())
Loading coefficients (alpha) for equation y1
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 -0.0319 0.003 -11.006 0.000 -0.038 -0.026
Loading coefficients (alpha) for equation y2
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 0.0962 0.002 42.596 0.000 0.092 0.101
Loading coefficients (alpha) for equation y3
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 -0.1374 0.002 -71.039 0.000 -0.141 -0.134
Cointegration relations for loading-coefficients-column 1
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
beta.1 1.0000 0 0 0.000 1.000 1.000
beta.2 -3.3418 0.008 -445.090 0.000 -3.357 -3.327
beta.3 4.7902 0.059 81.021 0.000 4.674 4.906
==============================================================================
Ensuite, regardons la somme du second ordre I (2).
En ce qui concerne X1, X2 et X3, je ne sais pas si ce sera vraiment stable, donc je vais en fait faire un nombre aléatoire. A, b et c ont été ajustés pour que le graphique soit facile à voir.
n=1000
a=0.3
e1=np.random.normal(0,1,n)#.reshape([n,1])
e2=np.random.normal(0,1,n)#.reshape([n,1])
e3=np.random.normal(0,1,n)#.reshape([n,1])
e4=np.random.normal(0,1,n)#.reshape([n,1])
cs_e1=np.cumsum(e1)
cs_cs_e1=np.cumsum(cs_e1)
cs_e2=np.cumsum(e2)
X1=cs_cs_e1+cs_e2
a=0.5
b=2
X2=a*cs_cs_e1+b*cs_e2+e3
c=100
X3=c*cs_e2+e4
plt.plot(X1)
plt.plot(X2)
plt.plot(X3)
Ensuite, prenons la différence réelle et vérifions la stabilité.
plt.plot(np.diff(X1))
plt.plot(np.diff(np.diff(X1)))
Je comprends que la différence au premier étage n'est pas constante, mais au deuxième étage, elle est constante.
plt.plot(np.diff(X2))
plt.plot(np.diff(np.diff(X2)))
Le résultat ici est le même.
plt.plot(np.diff(X3))
plt.plot(np.diff(np.diff(X3)))
Le modèle de correction d'erreur vectorielle est utilisé pour étudier la relation entre la tendance probabiliste permanente (racine unitaire) de la variable objective et sa divergence à court terme. Le VECM est utilisé pour modéliser des séries différentielles de vecteurs et identifier et estimer ces modèles, en supposant qu'il existe de multiples tendances probabilistes. VECM ($ k_ {ar} -1) $ est
Prend la forme de. De plus, $ \ Pi = \ alpha \ beta ^ \ $. Puisque ces $ \ alpha $ et $ \ beta ^ \
$ ne peuvent pas être estimés par la méthode des moindres carrés, la valeur propre et le vecteur propre de $ \ Pi $ sont obtenus par l'estimation la plus probable du modèle de correction d'erreurs, et $ \ Pi par le test de réconciliation. Déterminez le rang de $ et trouvez le vecteur propre correspondant à la valeur propre. Voir le chapitre 7 de [1]. Il est également possible d'inclure des termes déterministes tels que des termes constants et des termes de tendance dans $ \ Pi y_ {t − 1} $. Voir [3].
VECM ($ k_ {ar} -1 $) avec un terme déterministe Sera. $ D_ {t-1} ^ \ infty $ indique qu'il existe un terme déterministe au sein du vecteur républicain (ou contraignant le vecteur républicain). $ \ eta $ est l'estimation pertinente. Pour passer un terme déterministe dans le vecteur républicain, utilisez l'argument exog_coint. Dans deux cas particuliers, termes constants et tendances linéaires, il existe un moyen plus simple que d'utiliser ces termes. Vous pouvez passer chacun des "ci" et "li" à l'argument déterministe. Par conséquent, pour le terme constant dans le vecteur républicain, passez "ci" pour l'argument déterministe ou np.ones (len (data)) à exog_coint. Dans ce cas, $ D_ {t-1} ^ \ infty = 1 $ pour tout $ t $.
Il est également possible d'utiliser des termes déterministes en dehors du vecteur républicain. Celles-ci sont définies dans $ D_t $ dans l'équation ci-dessus, avec les estimations pour la matrice $ C $. Ces termes sont spécifiés en les passant à l'argument exog. Pour les termes constants et / ou les tendances linéaires, l'argument déterministe peut être utilisé à la place. Passez "co" pour les termes constants et "lo" pour les tendances linéaires. "o" représente l'extérieur. Le tableau suivant présente les cinq cas considérés dans [2]. La dernière colonne montre la chaîne à passer à l'argument déterministe de chacun de ces cas.
class statsmodels.tsa.vector_ar.vecm.VECM(endog, exog=None, exog_coint=None, dates=None, freq=None, missing='none', k_ar_diff=1, coint_rank=1, deterministic='nc', seasons=0, first_season=0)
Class representing a Vector Error Correction Model (VECM).
--Paramètres
endog array-like(nobs_tot x neqs) Variable de réponse endogène bidimensionnelle.
exog: ndarray (nobs_tot x neqs) ou Aucun Un terme déterministe hors du vecteur républicain.
exog_coint: ndarray (nobs_tot x neqs) ou Aucun Un terme déterministe dans le vecteur républicain.
date-type datetime, facultatif. Voir statsmodels.tsa.base.tsa_model.TimeSeriesModel pour plus d'informations.
freqstr, facultatif Voir statsmodels.tsa.base.tsa_model.TimeSeriesModel pour plus d'informations.
chaîne manquante, option, Voir statsmodels.base.model.Model pour plus d'informations.
k_ar_diff int L'ordre de la différence dans le modèle. Égal à kar-1 dans l'équation ci-dessus.
coint_rank int Le rang républicain est égal au rang Π de la matrice et au nombre de colonnes de α et β.
deterministic str {"nc"、 "co"、 "ci"、 "lo"、 "li"} "nc" -aucun terme déterministe "co" -constants hors du vecteur républicain "ci" -constants dans le vecteur républicain "lo" -Tendance linéaire en dehors du vecteur républicain "li" -Tendance linéaire dans le vecteur républicain
Peut être combiné (par exemple "cili" ou "colo" pour des tendances linéaires à termes constants). Si vous utilisez un terme constant, vous devez choisir de le limiter à une relation républicaine (c'est-à-dire «ci») ou de le laisser illimité (c'est-à-dire «co»). N'utilisez pas à la fois «ci» et «co». Il en va de même pour "li" et "lo" lors de l'utilisation de termes linéaires. Voir la note pour plus de détails.
saisons int, par défaut: 0 Le nombre de périodes du cycle saisonnier. 0 signifie qu'il n'y a pas de saison.
first_season int, par défaut: 0 La saison de la première observation.
--Paramètres
steps int Période de prévision.
alpha float, 0 < alpha < 1 or None Si aucun, seule la prédiction ponctuelle est calculée. Dans le cas de float, l'intervalle de confiance est également calculé. Dans ce cas, l'argument représente le niveau de confiance.
exog ndarray (steps x self.exog.shape[1]) Si self.exog n'est pas None, transmettez des informations sur les futures valeurs d'exog à partir de ce paramètre. Le ndarray peut être plus grand dans la première dimension. Dans ce cas, seule la première ligne d'étape est prise en compte.
forecast - ndarray (steps x neqs) or three ndarrays
Pour la prédiction ponctuelle: chaque ligne du ndarray renvoyé représente une prédiction de la variable neqs pour une période donnée. La première ligne (index [0]) est la prédiction pour la période suivante et la dernière ligne (index [étapes-1]) est la prédiction des étapes-périodes-à venir.
References
[1] Lütkepohl, H. 2005. New Introduction to Multiple Time Series Analysis. Springer.
[2] Johansen, S. 1995. Likelihood-Based Inference in Cointegrated * *Vector Autoregressive Models. Oxford University Press.
[3] Johansen, S. and K Jusellus 1990. Likelihood-Based Estimation and Inference on Cointegration with application to the demand for money. 0xford Bullretin of Economics and Statisitics,52,169-210
Générer des données artificielles et utiliser ces données pour comprendre les caractéristiques du modèle avant d'analyser les données réelles est l'arme la plus efficace.
Donc, générons deux séries temporelles non stationnaires, $ x $ et $ y $, et analysons-les avec VECM. À ce moment-là, déterministe = 'nc' et K_ar_diff = 0. Il s'agit d'une tentative de réduire les variables du modèle à seulement $ \ alpha $ et $ \ beta $. À ce moment-là, $ x $ et $ y $ sont simplement régressés pour obtenir la version bêta, et l'erreur est utilisée pour estimer l'alpha. Le nombre de données est $ n = 10000 $. Assez pour converger.
n=10000
y=pd.DataFrame(np.random.normal(0,1,n).reshape([n,1]),columns=['y'])
x=pd.DataFrame(np.random.normal(0,1,n).reshape([n,1]),columns=['x'])
data=pd.concat([y.cumsum(),x.cumsum()],axis=1)
data.columns=['y','x']
model=VECM(data,k_ar_diff=0,deterministic='na')
res=model.fit()
print(res.summary())
xx=sm.add_constant(x.cumsum())
res= sm.OLS(y.cumsum(), xx).fit()
print(res.summary())
Loading coefficients (alpha) for equation y
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 -0.0005 0.000 -1.671 0.095 -0.001 8.89e-05
Loading coefficients (alpha) for equation x
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 -3.723e-05 0.000 -0.121 0.904 -0.001 0.001
Cointegration relations for loading-coefficients-column 1
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
beta.1 1.0000 0 0 0.000 1.000 1.000
beta.2 -0.2731 0.382 -0.716 0.474 -1.021 0.475
==============================================================================
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.126
Model: OLS Adj. R-squared: 0.126
Method: Least Squares F-statistic: 1443.
Date: Sun, 01 Mar 2020 Prob (F-statistic): 4.92e-295
Time: 02:27:15 Log-Likelihood: -43187.
No. Observations: 10000 AIC: 8.638e+04
Df Residuals: 9998 BIC: 8.639e+04
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const -29.8591 0.210 -142.406 0.000 -30.270 -29.448
x -0.1572 0.004 -37.984 0.000 -0.165 -0.149
==============================================================================
Omnibus: 414.693 Durbin-Watson: 0.003
Prob(Omnibus): 0.000 Jarque-Bera (JB): 401.515
Skew: -0.447 Prob(JB): 6.49e-88
Kurtosis: 2.593 Cond. No. 58.5
==============================================================================
u=res.resid
#x1=pd.concat([x,u],axis=1)
#x1=sm.add_constant(x1)
res= sm.OLS(y, u).fit()
print(res.summary())
OLS Regression Results
=======================================================================================
Dep. Variable: y R-squared (uncentered): 0.000
Model: OLS Adj. R-squared (uncentered): -0.000
Method: Least Squares F-statistic: 0.2729
Date: Sun, 01 Mar 2020 Prob (F-statistic): 0.601
Time: 02:57:55 Log-Likelihood: -14187.
No. Observations: 10000 AIC: 2.838e+04
Df Residuals: 9999 BIC: 2.838e+04
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
x1 0.0001 0.000 0.522 0.601 -0.000 0.001
==============================================================================
Omnibus: 0.070 Durbin-Watson: 2.013
Prob(Omnibus): 0.966 Jarque-Bera (JB): 0.053
Skew: -0.002 Prob(JB): 0.974
Kurtosis: 3.011 Cond. No. 1.00
==============================================================================
En déplaçant cela encore et encore, vous devriez être en mesure de voir la signification et l'utilisation du modèle. N'oubliez pas que les données sont une marche aléatoire.
année Période --1959q1 --2009q3 trimestre: trimestre - 1-4 realgdp: Production intérieure totale réelle - (Bil. de 2005 USD enchaînés, taux annuel désaisonnalisé) realcons: Consommation personnelle réelle - (Bil. de 2005 USD enchaînés, taux annuel désaisonnalisé) realinv: Investissement intérieur privé total réel (Bil. d'USD enchaîné de 2005, taux annuel désaisonnalisé)
from statsmodels.tsa.api import VECM
import statsmodels.api as sm
from statsmodels.tsa.base.datetools import dates_from_str
import pandas as pd
import numpy as np
mdata = sm.datasets.macrodata.load_pandas().data
dates = mdata[['year', 'quarter']].astype(int).astype(str)
quarterly = dates["year"] + "Q" + dates["quarter"]
quarterly = dates_from_str(quarterly)
mdata = mdata[['realgdp','realcons','realinv']]
mdata.index = pd.DatetimeIndex(quarterly)
data = np.log(mdata).diff().dropna()
model = VECM(data)
results = model.fit()
print(results.summary())
Det. terms outside the coint. relation & lagged endog. parameters for equation realgdp
===============================================================================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------------------------------------
L1.realgdp -0.0101 0.147 -0.068 0.945 -0.298 0.278
L1.realcons -0.4094 0.133 -3.081 0.002 -0.670 -0.149
L1.realinv 0.0039 0.020 0.197 0.843 -0.035 0.043
Det. terms outside the coint. relation & lagged endog. parameters for equation realcons
===============================================================================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------------------------------------
L1.realgdp 0.0039 0.140 0.028 0.978 -0.270 0.277
L1.realcons -0.4813 0.126 -3.818 0.000 -0.728 -0.234
L1.realinv -0.0083 0.019 -0.443 0.658 -0.045 0.028
Det. terms outside the coint. relation & lagged endog. parameters for equation realinv
===============================================================================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------------------------------------
L1.realgdp 2.3752 0.825 2.879 0.004 0.758 3.992
L1.realcons -1.4317 0.745 -1.922 0.055 -2.892 0.028
L1.realinv -0.3738 0.110 -3.383 0.001 -0.590 -0.157
Loading coefficients (alpha) for equation realgdp
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 -1.2524 0.141 -8.875 0.000 -1.529 -0.976
Loading coefficients (alpha) for equation realcons
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 0.0673 0.134 0.503 0.615 -0.195 0.330
Loading coefficients (alpha) for equation realinv
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 -7.3749 0.791 -9.322 0.000 -8.926 -5.824
Cointegration relations for loading-coefficients-column 1
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
beta.1 1.0000 0 0 0.000 1.000 1.000
beta.2 -0.9514 0.037 -25.704 0.000 -1.024 -0.879
beta.3 -0.0204 0.010 -1.967 0.049 -0.041 -6.88e-05
==============================================================================
import matplotlib.pyplot as plt
start="1949/5/16"
fx = web.DataReader("DEXJPUS","fred",start)# usdjpy
rf = web.DataReader("USD12MD156N", 'fred',start)
rd = web.DataReader("JPY12MD156N", 'fred',start)
data=pd.concat([fx,rf,rd],axis=1).ffill().dropna()
data.tail()
DEXJPUS USD12MD156N JPY12MD156N
DATE
2019-12-02 109.09 1.96250 0.10283
2019-12-03 108.53 1.93663 0.10367
2019-12-04 108.87 1.91700 0.10567
2019-12-05 108.69 1.92263 0.09833
2019-12-06 108.66 1.92313 0.10833
model = VECM(data)
results = model.fit()
print(results.summary())
Det. terms outside the coint. relation & lagged endog. parameters for equation DEXJPUS
==================================================================================
coef std err z P>|z| [0.025 0.975]
----------------------------------------------------------------------------------
L1.DEXJPUS 0.0179 0.011 1.681 0.093 -0.003 0.039
L1.USD12MD156N 0.2679 0.155 1.729 0.084 -0.036 0.572
L1.JPY12MD156N -0.1119 0.272 -0.412 0.681 -0.645 0.421
Det. terms outside the coint. relation & lagged endog. parameters for equation USD12MD156N
==================================================================================
coef std err z P>|z| [0.025 0.975]
----------------------------------------------------------------------------------
L1.DEXJPUS 0.0042 0.001 5.762 0.000 0.003 0.006
L1.USD12MD156N 0.0529 0.011 4.931 0.000 0.032 0.074
L1.JPY12MD156N 0.0111 0.019 0.590 0.555 -0.026 0.048
Det. terms outside the coint. relation & lagged endog. parameters for equation JPY12MD156N
==================================================================================
coef std err z P>|z| [0.025 0.975]
----------------------------------------------------------------------------------
L1.DEXJPUS 0.0041 0.000 9.923 0.000 0.003 0.005
L1.USD12MD156N 0.0337 0.006 5.562 0.000 0.022 0.046
L1.JPY12MD156N -0.0922 0.011 -8.665 0.000 -0.113 -0.071
Loading coefficients (alpha) for equation DEXJPUS
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 -0.0002 7.46e-05 -3.277 0.001 -0.000 -9.82e-05
Loading coefficients (alpha) for equation USD12MD156N
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 -8.487e-06 5.16e-06 -1.645 0.100 -1.86e-05 1.63e-06
Loading coefficients (alpha) for equation JPY12MD156N
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 -1.177e-05 2.92e-06 -4.034 0.000 -1.75e-05 -6.05e-06
Cointegration relations for loading-coefficients-column 1
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
beta.1 1.0000 0 0 0.000 1.000 1.000
beta.2 -34.4981 7.117 -4.847 0.000 -48.447 -20.549
beta.3 52.7028 12.677 4.157 0.000 27.857 77.549
==============================================================================
Taux de change, LIBOR 12 mois et prévision de 250 données
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
results.plot_forecast(250)
Erreur de prédiction du taux de change
plt.hist(results.resid[:,0])
n225 = web.DataReader("NIKKEI225", 'fred',start)
sp500 = web.DataReader("SP500", 'fred',start)
data=pd.concat([fx,n225,sp500],axis=1).ffill().dropna()
data.tail()
DEXJPUS NIKKEI225 SP500
DATE
2019-12-09 108.66 23430.70 3135.96
2019-12-10 108.66 23410.19 3132.52
2019-12-11 108.66 23391.86 3141.63
2019-12-12 108.66 23424.81 3168.57
2019-12-13 108.66 24023.10 3168.80
model = VECM(data)
results = model.fit()
print(results.summary())
Det. terms outside the coint. relation & lagged endog. parameters for equation DEXJPUS
================================================================================
coef std err z P>|z| [0.025 0.975]
--------------------------------------------------------------------------------
L1.DEXJPUS -0.0278 0.021 -1.308 0.191 -0.069 0.014
L1.NIKKEI225 0.0001 6.14e-05 2.016 0.044 3.45e-06 0.000
L1.SP500 0.0019 0.001 2.823 0.005 0.001 0.003
Det. terms outside the coint. relation & lagged endog. parameters for equation NIKKEI225
================================================================================
coef std err z P>|z| [0.025 0.975]
--------------------------------------------------------------------------------
L1.DEXJPUS 63.7228 6.161 10.342 0.000 51.647 75.799
L1.NIKKEI225 -0.1888 0.018 -10.592 0.000 -0.224 -0.154
L1.SP500 5.1709 0.200 25.879 0.000 4.779 5.562
Det. terms outside the coint. relation & lagged endog. parameters for equation SP500
================================================================================
coef std err z P>|z| [0.025 0.975]
--------------------------------------------------------------------------------
L1.DEXJPUS -0.5797 0.631 -0.919 0.358 -1.816 0.656
L1.NIKKEI225 0.0020 0.002 1.097 0.273 -0.002 0.006
L1.SP500 -0.0170 0.020 -0.830 0.406 -0.057 0.023
Loading coefficients (alpha) for equation DEXJPUS
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 0.0003 0.000 1.906 0.057 -8.9e-06 0.001
Loading coefficients (alpha) for equation NIKKEI225
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 0.1447 0.048 3.023 0.003 0.051 0.238
Loading coefficients (alpha) for equation SP500
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 0.0109 0.005 2.231 0.026 0.001 0.021
Cointegration relations for loading-coefficients-column 1
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
beta.1 1.0000 0 0 0.000 1.000 1.000
beta.2 -0.0469 0.014 -3.367 0.001 -0.074 -0.020
beta.3 0.3437 0.113 3.050 0.002 0.123 0.564
==============================================================================
register_matplotlib_converters()
results.plot_forecast(250)
model = VECM(data.iloc[-500:])
results = model.fit()
print(results.summary())
register_matplotlib_converters()
results.plot_forecast(250)
Det. terms outside the coint. relation & lagged endog. parameters for equation DEXJPUS
================================================================================
coef std err z P>|z| [0.025 0.975]
--------------------------------------------------------------------------------
L1.DEXJPUS 0.0021 0.048 0.043 0.966 -0.092 0.096
L1.NIKKEI225 6.633e-05 8.34e-05 0.795 0.427 -9.72e-05 0.000
L1.SP500 -0.0004 0.001 -0.499 0.618 -0.002 0.001
Det. terms outside the coint. relation & lagged endog. parameters for equation NIKKEI225
================================================================================
coef std err z P>|z| [0.025 0.975]
--------------------------------------------------------------------------------
L1.DEXJPUS 74.0915 21.467 3.451 0.001 32.017 116.166
L1.NIKKEI225 -0.1603 0.037 -4.298 0.000 -0.233 -0.087
L1.SP500 4.7485 0.332 14.311 0.000 4.098 5.399
Det. terms outside the coint. relation & lagged endog. parameters for equation SP500
================================================================================
coef std err z P>|z| [0.025 0.975]
--------------------------------------------------------------------------------
L1.DEXJPUS -2.4372 3.102 -0.786 0.432 -8.517 3.642
L1.NIKKEI225 -0.0029 0.005 -0.545 0.586 -0.014 0.008
L1.SP500 0.0160 0.048 0.333 0.739 -0.078 0.110
Loading coefficients (alpha) for equation DEXJPUS
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 0.0004 0.002 0.215 0.830 -0.003 0.004
Loading coefficients (alpha) for equation NIKKEI225
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 2.4929 0.866 2.880 0.004 0.796 4.190
Loading coefficients (alpha) for equation SP500
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
ec1 0.1778 0.125 1.421 0.155 -0.067 0.423
Cointegration relations for loading-coefficients-column 1
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
beta.1 1.0000 0 0 0.000 1.000 1.000
beta.2 -0.0117 0.003 -4.390 0.000 -0.017 -0.006
beta.3 0.0521 0.021 2.510 0.012 0.011 0.093
==============================================================================
référence: référence statsmodels error correction model wiki Analyse de la république, de l'ECM et des relations causales dans le modèle VAR
Recommended Posts