Il s'agit d'une méthode pour estimer l'effet causal à l'aide d'une variable appelée variable d'opération sans ajuster l'intrication lorsque l'on tente d'estimer l'effet causal moyen sous une structure avec enchevêtrement qui ne peut être ajusté ou observé.
Il est particulièrement utile pour l'analyse des données en sciences sociales où de nombreux enchevêtrements non observables peuvent être pris en compte.
Ce qui suit est un graphique appelé DAG (Directed Acyclic Graph) qui montre la relation causale de chaque variable. Je vais expliquer pourquoi l'effet causal de A à Y peut être estimé en utilisant la variable d'opération utilisant ce DAG.
ici,
--A: Mesures / mesures
--Y: variable de résultat
--Z: Variables d'opération
--U: variables interdépendantes non observables
Il existe quatre variables appelées, chacune reliée par une flèche. Dans DAG ** La variable pointant la flèche affecte la variable du côté poignardé ** Interpréter comme.
Supposons maintenant que vous souhaitiez estimer l'effet de A (mesure) sur Y. Cependant, la variable U, qui est corrélée à la fois à A et à Y, ne permet pas d'interpréter la corrélation entre A et Y comme une cause et un effet.
Cette fois, quand U ne peut pas être observé, nous introduirons la méthode IV comme méthode d'estimation de cette relation causale sans ajuster l'intrication. (Cf: biais variable manquant)
Quelles sont les variables de fonctionnement ici encore? Je veux expliquer. Les variables d'opération sont
C'est une variable comme.
Comme le sait tous ceux qui connaissent DAG, Z est connecté à Y uniquement via A. La condition de 1.2 ci-dessus est bien décrite par ce DAG.
Cette fois, En considérant l'estimation $ \ displaystyle \ frac {Cov (Z, Y)} {Cov (Z, A)} $, il s'agit d'une estimation non biaisée de l'effet causal moyen de A à Y. [^ 1]
Pourquoi cette estimation (appelée ci-après estimation IV) est-elle une estimation non biaisée? Ici, je voudrais donner une explication intuitive en me référant à Yamaguchi (2019) [^ 2].
Supposons que l'effet causal de Z à A soit $ \ alpha $ et que l'effet causal de A à Y soit $ \ beta $.
A ce moment, le dénominateur de $ \ displaystyle \ frac {Cov (Z, Y)} {Cov (Z, A)} $ est le montant estimé de $ \ alpha $, et la molécule est le montant estimé de $ \ alpha \ beta $. Je vais. Par conséquent, en divisant la molécule par le dénominateur, vous pouvez estimer le $ \ beta $ que vous vouliez estimer.
Eh bien, voici une explication de la méthode des variables manipulées avec les détails coupés. [^ 3]
Dans ce qui suit, je vais introduire l'estimation de la variable d'opération en simulant réellement la situation de type DAG ci-dessus.
Simulation using Python
--Générer la variable explicative A, la variable d'exploitation Z et la variable d'intrication U à partir de la distribution normale multivariée $ N (\ mu, \ Sigma) $
-
import numpy as np
Sigma = np.eye(3)
#1 ligne/La colonne est A,2 lignes/La ligne est U,3 lignes/La colonne correspond à Z.
Sigma[1, 0] = -0.7
Sigma[0, 1] = -0.7
Sigma[2, 0] = 0.4
Sigma[0, 2] = 0.4
#Variable explicative A,Variable de fonctionnement Z,Et la distribution normale multivariée de la variable d'intrication U$N(\mu, \Sigma)$Générer à partir de
d = np.random.multivariate_normal([0.5, 1.5, 20.0], Sigma, size=10000)
>>> Sigma
array([[ 1. , -0.7, 0.4],
[-0.7, 1. , 0. ],
[ 0.4, 0. , 1. ]])
# error term
e = np.random.randn(len(d))
#Décomposer la matrice d pour créer chaque variable
A = d[:, 0]
u = d[:, 1]
Z = d[:, 2]
#Véritable modèle de variable objective
# y = 2 A + 6U + \epsilon
y = A*2 + 6*u + e
#Confirmation de corrélation
print("Cov(A, u)=", np.corrcoef(A, u)[0, 1])
print("Cov(Z, u)=", np.corrcoef(Z, u)[0, 1])
print("Cov(A, Z)=", np.corrcoef(A, Z)[0,1 ])
Cov(A, u)= -0.701004490456518
Cov(Z, u)= 0.0043542162380179215
Cov(A, Z)= 0.39744458663706667
On peut dire que $ Cov (Z, U) $ est presque 0, et la relation de chaque variable définie dans $ \ Sigma $ reproduit la situation de DAG!
Maintenant, si vous regardez simplement la relation entre A et Y dans un diagramme de dispersion?
g=sns.scatterplot(x=A, y=y, )
g.set_ylabel("y");g.set_xlabel("A");
On dirait qu'il existe une corrélation négative comme celle-ci! Cependant, dans la formule ci-dessus, $ y = 2 A + 6U + \ epsilon $, et l'effet causal de A sur Y est de 2. C'est parce que U affecte à la fois A et Y. réellement,
g = sns.scatterplot(x=A, y=y-6*u, hue=u)
g.set_ylabel("outcome variable")
g.set_xlabel("Explainary variable")
Puisqu'il y a une corrélation négative entre A et U, nous pouvons voir que lorsque A augmente, U diminue.
from statsmodels.regression.linear_model import OLS
lm = OLS(endog=y, exog=np.c_[A, u])
results = lm.fit()
results.params
# ordinary least squares
X = sm.add_constant(A)
>>> print("Si vous renvoyez simplement y avec X", OLS(X, y).fit().params[0])
>>> print("Si vous intégrez les facteurs d'intrication et effectuez une régression multiple,", results.params[0])
Si vous renvoyez simplement y avec A-2.1853899626462927
Si vous intégrez les facteurs d'intrication et effectuez une régression multiple, 2.022653523550131
Si le facteur d'intrication U peut être observé, l'effet causal moyen peut être estimé en effectuant plusieurs régressions dans ce vrai modèle.
Je voudrais introduire la fonction suivante pour calculer $ \ displaystyle \ frac {Cov (Z, Y)} {Cov (Z, A)} $ et estimer réellement IV.
def IV(A, y, z):
denom = np.cov(A, z)[1, 0]
nomi = np.cov(z, y)[1, 0]
return nomi/denom
print("Effet causal lorsqu'il est estimé à l'aide de la méthode des variables manipulées", IV(A, y, Z))
Effet causal lorsque estimé à l'aide de la méthode des variables manipulées 2.0858603407321765
J'ai pu estimer avec succès l'effet causal moyen sans être affecté par U!
Il a été constaté que l'effet causal moyen de A sur Y peut être estimé en utilisant la méthode IV même si la variable d'intrication U ne peut pas être observée.
Cependant, il y a deux choses à savoir.
Lorsque j'ai déplacé uniquement la valeur de $ Cov (A, Z) $ avec les paramètres ci-dessus et vérifié comment le montant estimé change, Si $ Cov (A, Z) $ est trop petit, vous pouvez voir que l'estimation de la méthode IV est loin de la valeur vraie. Ce qui précède est une brève introduction à la méthode des variables manipulées et une explication à l'aide de données de simulation.
C'est une méthode d'estimation qui revient chaque fois que vous lisez un manuel d'économie métrique, alors veuillez l'étudier!
De plus, @mns_econ a introduit la méthode IV à TokyoR, je vais donc la présenter également.
[^ 1]: D'après ce document, ce n'est pas exactement une estimation ** impartiale **. C'était mon manque de compréhension. C'est juste une estimation de correspondance. $ \ frac {Cov (Z, Y)} {Cov (Z, A)} = \ frac {Cov (Z, 2A + 6U + \ epsilon)} {Cov (Z, A)} = 2 + \ frac {Cov L'histoire est que la partie $ \ frac {Cov (Z, U)} {Cov (Z, A)} $ de (Z, U)} {Cov (Z, A)} $ converge progressivement vers 0. fait. J’ai l’impression de ne pas comprendre un peu l’impartialité et la cohérence, je vais donc la revoir. [^ 2]: Le graphique a été référencé à partir du document de travail RIETI du professeur Yamaguchi. https://www.rieti.go.jp/jp/publications/dp/19j003.pdf [^ 3]: En pratique, les estimations ci-dessus nécessitent également l'hypothèse que les effets causaux de A sur Y sont homogènes chez chaque individu.