[PYTHON] Bezüglich der Operationsvariablenmethode

Was ist die Manipulationsvariablenmethode?

Dies ist eine Methode zum Schätzen des kausalen Effekts unter Verwendung einer Variablen, die als Operationsvariable bezeichnet wird, ohne die Verschränkung anzupassen, wenn versucht wird, den durchschnittlichen kausalen Effekt unter einer Struktur mit Verschränkung zu schätzen, die nicht angepasst oder beobachtet werden kann.

Es ist besonders nützlich für die Datenanalyse der Sozialwissenschaften, bei der viele nicht beobachtbare Verstrickungen berücksichtigt werden können.

Das folgende Diagramm heißt DAG (Directed Acyclic Graph) und zeigt den Kausalzusammenhang jeder Variablen. Ich werde erklären, warum der kausale Effekt von A nach Y unter Verwendung der Operationsvariablen unter Verwendung dieser DAG geschätzt werden kann.

image.png Hier,

Es werden vier Variablen aufgerufen, die jeweils durch einen Pfeil verbunden sind. In der DAG ** Die Variable, die auf den Pfeil zeigt, wirkt sich auf die Variable auf der Stichseite aus ** Interpretieren als.

Angenommen, Sie möchten die Auswirkung von A (Maß) auf Y abschätzen. Die Variable U, die sowohl mit A als auch mit Y korreliert, macht es jedoch unmöglich, die Korrelation zwischen A und Y als Ursache und Wirkung zu interpretieren.

Dieses Mal, wenn U nicht beobachtet werden kann, werden wir die IV-Methode als Methode zur Schätzung dieses Kausalzusammenhangs einführen, ohne die Verschränkung anzupassen. (Vgl.: Fehlende variable Vorspannung)

Was sind hier wieder die Operationsvariablen? Ich möchte es erklären. Betriebsvariablen sind

  1. Korreliert mit der Messgröße A.
  2. ** Hat einen kausalen Zusammenhang mit der Zielvariablen Y nur über die Messgröße A ** (Ausschlussbedingung)

Es ist eine Variable wie.

Wie jeder weiß, der DAG kennt, ist Z nur über A mit Y verbunden. Der Zustand von 1.2 oben wird durch diese DAG gut beschrieben.

In diesem Moment, In Anbetracht der Schätzung $ \ displaystyle \ frac {Cov (Z, Y)} {Cov (Z, A)} $ ist dies eine unvoreingenommene Schätzung des durchschnittlichen kausalen Effekts von A bis Y. [^ 1]

Warum ist dieser geschätzte Betrag (im Folgenden als IV-geschätzter Betrag bezeichnet) ein unvoreingenommener geschätzter Betrag? Hier möchte ich eine intuitive Erklärung unter Bezugnahme auf Yamaguchi (2019) [^ 2] geben.

image.png Nehmen wir an, dass der kausale Effekt von Z nach A $ \ alpha $ und der kausale Effekt von A nach Y $ \ beta $ ist.

Zu diesem Zeitpunkt ist der Nenner von $ \ displaystyle \ frac {Cov (Z, Y)} {Cov (Z, A)} $ die geschätzte Menge von $ \ alpha $ und das Molekül die geschätzte Menge von $ \ alpha \ beta $. Ich werde. Daher können Sie durch Teilen des Moleküls durch den Nenner das $ \ beta $ schätzen, das Sie schätzen wollten.

Nun, hier ist eine Erklärung der Manipulationsvariablenmethode mit abgeschnittenen Details. [^ 3]

Im Folgenden werde ich die Schätzung der Operationsvariablen einführen, indem ich die obige DAG-ähnliche Situation tatsächlich simuliere.

Simulation using Python

import numpy as np
Sigma = np.eye(3)
#1 Zeile/Spalte ist A.,2 Zeilen/Die Zeile ist U.,3 Zeilen/Die Spalte entspricht Z.
Sigma[1, 0] = -0.7
Sigma[0, 1] = -0.7
Sigma[2, 0] = 0.4
Sigma[0, 2] = 0.4
#Erklärende Variable A.,Betriebsvariable Z.,Und die multivariate Normalverteilung der Verschränkungsvariablen U.$N(\mu, \Sigma)$Generieren aus
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))
#Zerlegen Sie die d-Matrix, um jede Variable zu erstellen
A = d[:, 0]
u = d[:, 1]
Z = d[:, 2]
#Wahres Modell der Zielvariablen
# y = 2 A + 6U + \epsilon
y = A*2 + 6*u + e
#Bestätigung der Korrelation
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

Man kann sagen, dass $ Cov (Z, U) $ fast 0 ist und die Beziehung jeder in $ \ Sigma $ gesetzten Variablen die Situation von DAG reproduziert!

Betrachten Sie nun einfach die Beziehung zwischen A und Y in einem Streudiagramm?

g=sns.scatterplot(x=A, y=y, )
g.set_ylabel("y");g.set_xlabel("A");

image.png

Es sieht so aus, als ob es eine negative Korrelation wie diese gibt! In der obigen Formel ist jedoch $ y = 2 A + 6U + \ epsilon $, und die kausale Wirkung von A auf Y ist 2. Dies liegt daran, dass U sowohl A als auch Y betrifft. tatsächlich,

g = sns.scatterplot(x=A, y=y-6*u, hue=u)
g.set_ylabel("outcome variable")
g.set_xlabel("Explainary variable")

image.png

Da es eine negative Korrelation zwischen A und U gibt, können wir sehen, dass U mit zunehmendem A abnimmt.

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("Wenn Sie einfach y mit X zurückgeben", OLS(X, y).fit().params[0])
>>> print("Wenn Sie die Verschränkungsfaktoren einbeziehen und eine multiple Regression durchführen,", results.params[0])
Wenn Sie einfach y mit A zurückgeben-2.1853899626462927
Wenn Sie die Verschränkungsfaktoren einbeziehen und eine multiple Regression durchführen, 2.022653523550131

Wenn der Verschränkungsfaktor U beobachtet werden kann, kann der durchschnittliche kausale Effekt geschätzt werden, indem in diesem wahren Modell mehrere Regressionen durchgeführt werden.

Versuchen Sie es mit der Manipulationsvariablenmethode

Ich möchte die folgende Funktion einführen, um $ \ displaystyle \ frac {Cov (Z, Y)} {Cov (Z, A)} $ zu berechnen und IV tatsächlich zu schätzen.

def IV(A, y, z):
    denom = np.cov(A, z)[1, 0]
    nomi = np.cov(z, y)[1, 0]
    return nomi/denom

print("Kausale Wirkung bei Schätzung mit der Manipulationsvariablenmethode", IV(A, y, Z))
Kausale Wirkung bei Schätzung mit der Stellgrößenmethode 2.0858603407321765

Ich konnte den durchschnittlichen kausalen Effekt erfolgreich abschätzen, ohne von U beeinflusst zu werden!

Am Ende

Es wurde gefunden, dass der mittlere kausale Effekt von A auf Y unter Verwendung der IV-Methode geschätzt werden kann, selbst wenn die Verschränkungsvariable U nicht beobachtet werden kann.

Es gibt jedoch zwei Dinge zu beachten.

  1. Ausschlussbeschränkungen können aus den Daten nicht belegt werden! Leider ** gibt es keine Möglichkeit, sicher zu sein, dass Z tatsächlich eine Variable ist, die in einer Situation wie der oben beschriebenen DAG generiert wird. ** (Weil U nicht beobachtet werden kann) Wenn es tatsächlich in der Forschung verwendet wird, ist es notwendig, das Domänenwissen usw. vollständig zu nutzen und Variablen zu verwenden, die zufällig in natürlichen experimentellen Situationen generiert wurden, um davon zu überzeugen, dass die oben genannte Situation wie die DAG auftritt. es gibt.
  2. Wenn die Korrelation zwischen A und Z schwach ist, ist die Streuung der geschätzten Menge groß. (Problem mit schwachen Instrumenten)

Wenn ich tatsächlich nur den Wert von $ Cov (A, Z) $ mit den obigen Einstellungen verschoben und überprüft habe, wie sich der geschätzte Betrag ändert, image.png Wenn $ Cov (A, Z) $ zu klein ist, können Sie sehen, dass die Schätzung der IV-Methode weit vom wahren Wert entfernt ist. Das Obige ist eine kurze Einführung in die Manipulationsvariablenmethode und eine Erklärung unter Verwendung von Simulationsdaten.

Es ist eine Schätzmethode, die jedes Mal auftaucht, wenn Sie ein Lehrbuch über metrische Ökonomie lesen. Bitte studieren Sie es!

Zugehörige Dokumente

  1. Einführung in einen randomisierten Vergleichstest zum Auffinden von Kausalzusammenhängen für die Politikbewertung
  2. Einführung in die teilweise Identifizierung durch Professor Tsunao Okumura
  3. Professor Naoya Sueishi, Quantitative Economics Keine Notwendigkeit zur Analyse von Mikrodaten

Außerdem hat @mns_econ die IV-Methode bei TokyoR eingeführt, daher werde ich sie auch vorstellen.

  1. @mns_econ https://speakerdeck.com/mns54/cao-zuo-bian-shu-fa-ru-men?slide=10

[^ 1]: Laut diesem Dokument handelt es sich nicht genau um eine ** unvoreingenommene ** Schätzung. Das war mein Unverständnis. Es ist nur eine Übereinstimmungsschätzung. $ \ frac {Cov (Z, Y)} {Cov (Z, A)} = \ frac {Cov (Z, 2A + 6U + \ epsilon)} {Cov (Z, A)} = 2 + \ frac {Cov Die Geschichte ist, dass der $ \ frac {Cov (Z, U)} {Cov (Z, A)} $ Teil von (Z, U)} {Cov (Z, A)} $ allmählich gegen 0 konvergiert. tat. Ich habe das Gefühl, dass ich ein wenig Unverständnis für Unparteilichkeit und Beständigkeit habe, deshalb werde ich es noch einmal überprüfen. [^ 2]: Die Grafik wurde aus dem RIETI-Diskussionspapier von Professor Yamaguchi referenziert. https://www.rieti.go.jp/jp/publications/dp/19j003.pdf [^ 3]: In der Praxis erfordern die obigen Schätzungen auch die Annahme, dass die kausalen Auswirkungen von A auf Y bei jedem Individuum homogen sind.

Recommended Posts

Bezüglich der Operationsvariablenmethode
In Bezug auf die Sortiermethode von Python