[PYTHON] Abschätzung der Wirkung von Maßnahmen anhand von Neigungswerten

Einführung

Das statistische kausale Denken (im Folgenden als kausales Denken bezeichnet) ist ein Rahmen für eine genauere Abschätzung der Auswirkungen von Maßnahmen und Behandlungen in den Bereichen Marketing und medizinische Versorgung. Insbesondere,

Ich werde kurz zusammenfassen.

Kürzlich ein sehr leicht verständliches Einführungsbuch zum kausalen Denken ([Einführung in die Verifikation - Kausales Denken für einen korrekten Vergleich / Grundlagen der metrischen Ökonomie](https://gihyo.jp/book/2020/978-4-297- Seit 11117-5)) habe ich das Gefühl, dass das kausale Denken auch die Staatsbürgerschaft erlangt hat.

Wann man kausales Denken anwendet

** Wenn Sie kausales Denken verwenden, können Sie den AB-Test nicht durchführen, aber Sie möchten die Wirkung von Interventionen (Marketingmaßnahmen und -behandlungen) genauer abschätzen **.

Der AB-Test (auch als Randomized Controlled Trial (RCT) bezeichnet) ordnet die Probanden zufällig zwei Gruppen zu, wobei eine Gruppe eingreift und die andere eingreift. Stattdessen wird der Interventionseffekt durch Vergleich der Ergebnisse beider Gruppen geschätzt. Durch zufällige Zuordnung der Probanden zu zwei Gruppen und Bildung homogener Gruppen in beiden Gruppen mit oder ohne Intervention kann der durchschnittliche Interventionseffekt durch einen einfachen Unterschied zwischen den Ergebnissen beider Gruppen geschätzt werden. Wie in der folgenden Abbildung gezeigt, ist beispielsweise die Differenz in der durchschnittlichen Anzahl von Reservierungen für jede Gruppe (= durchschnittliche Reservierung), wenn E-Mails an die Hälfte der zufällig ausgewählten Benutzer und E-Mails nicht an die andere Hälfte der Benutzer zugestellt werden. (Erhöhung der Anzahl) wird die Auswirkung der Postzustellungsmaßnahmen sein. ABtest.JPG

Aufgrund der Kosten für die Durchführung des AB-Tests kann der Interventionseffekt jedoch nicht durch das obige Verfahren geschätzt werden, wenn das Interventionsziel durch nicht zufällige Logik bestimmt wird.

Wenn Sie beispielsweise die Wirksamkeit einer Marketingmaßnahme abschätzen möchten, aber die Anzahl der Personen, die die Maßnahme umsetzen, auf die Hälfte reduzieren möchten, besteht eine hohe Wahrscheinlichkeit, dass Opportunitätsverluste (Umsatzrückgänge usw.) auftreten. Dies gilt auch (im weiteren Sinne), wenn es ethisch vertretbar ist, ein Behandlungsziel zufällig auszuwählen, z. B. wenn Sie die Wirkung der Behandlung abschätzen möchten.

** Wenn die Ergebnisse der Interventionsgruppe und der Nicht-Interventionsgruppe einfach verglichen werden, wenn der AB-Test nicht durchgeführt wird, können andere Effekte (Verzerrungen) als die Intervention nicht ausgeschlossen werden, und der Interventionseffekt wird unterschätzt (oder überschätzt). Es besteht die Möglichkeit, dass dies getan wird. ** ** **

Nehmen wir ein Beispiel für Postzustellungsmaßnahmen. Nehmen wir an, Sie implementieren Maßnahmen wie maschinelles Lernen, um vorherzusagen, ob ein Benutzer eine Reservierung vornehmen und eine E-Mail an einen Benutzer mit einer hohen vorhergesagten Punktzahl senden wird. Zu diesem Zeitpunkt kann davon ausgegangen werden, dass der Benutzer, der das Ziel der E-Mail-Zustellung ist, über ein Attribut verfügt, das die Reservierung vereinfacht. Können wir zu diesem Zeitpunkt sagen, dass der einfache Unterschied zwischen der Anzahl der Reservierungen für Postzustellungsziele und der Anzahl der Reservierungen für Nicht-Postzustellungsziele der Effekt der Postzustellung ist? Die Antwort ist wahrscheinlich NEIN. Der Grund dafür ist, dass E-Mails an Benutzer zugestellt werden, deren Attribute in erster Linie einfach zu reservieren sind, und es wird erwartet, dass die Anzahl der Reservierungen für Zielgruppen der E-Mail-Zustellung um diesen Betrag groß ist, sodass der Effekt der E-Mail-Zustellung auf den Einfluss anderer Attribute als der E-Mail-Zustellung zurückzuführen ist. Dies liegt daran, dass es überschätzt wird. biased_test.JPG

Wenn Sie die Wirkung von TV CM abschätzen möchten, wird das Vorhandensein oder Nichtvorhandensein einer Intervention durch die Absicht der Zielperson bestimmt (es ist Sache der Person, das CM zu sehen oder nicht zu sehen, und die Person, die das CM sendet, entscheidet, wer das CM sieht Selbst wenn dies nicht möglich ist, kann ein einfacher Vergleich zwischen der Interventionsgruppe und der Nicht-Interventionsgruppe die Wirksamkeit der Intervention überschätzen (oder unterschätzen), da das Vorhandensein oder Fehlen einer Intervention nicht zufällig bestimmt wird.

Selbst in den oben genannten Fällen ist die Methode zur Abschätzung der Wirkung der Intervention kausales Denken.

Inverse Wahrscheinlichkeitsgewichtungsmethode unter Verwendung des Neigungsscores

Hier erklären wir das Inverse Probability Weighting (IPW), eine der kausalen Inferenzmethoden, anhand von Neigungsbewertungen.

** Propensity Score ist die Wahrscheinlichkeit, dass das Subjekt $ i $ zu einer Gruppe (Behandlungsgruppe) mit Intervention gehört **, und "die Hintergrundinformationen (Attribut) des Subjekts $ i $ sehen so aus, also Subjekt $ i $ Die Wahrscheinlichkeit, die zur Behandlungsgruppe gehört (Leichtigkeit, der Behandlungsgruppe zugeordnet zu werden), ist ungefähr so. " In der Formel ist der Neigungswert $ e_i $ der Zielperson $ i $

e_i = P(Z_i =1| X=x_i)

ist. $ Z_i $ ist eine Variable, die die Gruppierung des Subjekts $ i $ darstellt ($ Z_i = 1 $ gehört zur Interventionsgruppe (Behandlungsgruppe), $ Z_i = 0 $ gehört zur Kontrollgruppe (keine Interventionsgruppe)) , $ X_i $ repräsentieren die Hintergrundinformationen (Kovariaten genannt) des Subjekts $ i $.

Bisher habe ich erklärt, dass die Wirkung einer "durchschnittlichen" Intervention ohne besondere Ankündigung geschätzt wird. Der Grund ist, dass es nicht möglich ist, die Wirkung von Interventionen auf individueller Ebene abzuschätzen (das grundlegende Problem des kausalen Denkens genannt). Dies liegt daran, dass es nicht möglich ist, die Anzahl der Reservierungen zu ermitteln, wenn eine E-Mail an einen Benutzer gesendet wird, und die Anzahl der Reservierungen, wenn die E-Mail nicht gleichzeitig zugestellt wird. Daher verfolgen wir einen Ansatz zur Abschätzung des durchschnittlichen Interventionseffekts durch Bildung einer homogenen Gruppe mit Ausnahme des Vorhandenseins oder Nichtvorhandenseins einer Intervention.

Ebenso wie der Durchschnittswert je nach zu aggregierender Gruppe variiert, unterscheidet sich auch der durchschnittliche Interventionseffekt je nach Interessengruppe. Die grundlegenden sind die folgenden drei.

Wenn Sie jeweils in eine Formel schreiben,

ATE = E(Y_1) - E(Y_0) = \frac{\sum_{i=1}^{N} \frac{z_i}{e_i}y_i}{\sum_{j=1}^{N} \frac{z_j}{e_j}} - \frac{\sum_{i=1}^{N} \frac{1-z_i}{1-e_i}y_i}{\sum_{j=1}^{N} \frac{1-z_j}{1-e_j}}
ATT = E(Y_1 | Z=1) - E(Y_0 | Z=1) = \bar{y}_1 - \frac{\sum_{i=1}^{N} \frac{(1-z_i)e_i}{1-e_i}y_i}{\sum_{j=1}^{N} \frac{(1-z_j)e_j}{1-e_j}}
ATU = E(Y_1 | Z=0) - E(Y_0 | Z=0) = \frac{\sum_{i=1}^{N} \frac{z_i(1-e_i)}{e_i}y_i}{\sum_{j=1}^{N} \frac{z_j(1-e_j)}{e_j}} - \bar{y}_0

Und $ y_i $ repräsentiert die Ergebnisvariable der Zielperson $ i $ (den Betrag, für den der Interventionseffekt geschätzt wird. Dies wird auch als Ergebnis bezeichnet. Im Beispiel der Postzustellung die Anzahl der Reservierungen).

Alle ATE, ATT und ATU sind die Unterschiede zwischen "Ergebnissen bei Eingriffen in die Interessengruppe (erste Amtszeit)" und "Ergebnissen bei Eingriffen in die Interessengruppe (zweite Amtszeit)".

ATE konzentriert sich auf die gesamte Gruppe. Der erste Term berechnet den Durchschnittswert der Ergebnisvariablen, gewichtet mit der Umkehrung des Neigungsscores für die Behandlungsgruppe (Gruppe von $ z_i = 1 ), und der zweite Term ist die Kontrollgruppe ( z_i = 0 $). Für die Gruppe) wird der Durchschnittswert der Ergebnisvariablen berechnet, gewichtet mit der Umkehrung von (1-anfälliger Punktzahl). Wenn der Neigungswert als "Ähnlichkeit der Behandlungsgruppe des Probanden" und (1-Neigungswert) als "Ähnlichkeit der Kontrollgruppe des Probanden" interpretiert wird, ist der erste Term neutral, indem die Behandlungsgruppe durch "Ähnlichkeit der Behandlungsgruppe" geteilt wird. Im zweiten Term kann es als neutrale (?) Gruppe angesehen werden, indem die Kontrollgruppe durch "Kontrollgruppenähnlichkeit" geteilt wird. Mit anderen Worten, wir schätzen den durchschnittlichen Interventionseffekt der gesamten Bevölkerung unabhängig vom Vorhandensein oder Fehlen einer Intervention.

** ATT ** konzentriert sich auf die Behandlungsgruppe "Verlängerung der Ergebnisvariablen aufgrund eines Eingriffs in die Behandlungsgruppe (= tatsächlicher Wert der Ergebnisvariablen der Behandlungsgruppe und der Ergebnisvariablen, wenn die Behandlungsgruppe nicht interveniert). Unterschied) ”. Es wird häufig ** verwendet, um die Kosteneffizienz einer Intervention abzuschätzen, da Sie damit den direkten Nutzen der Intervention abschätzen können. Der erste Term $ \ bar {y} _1 $ ist der Durchschnittswert (Istwert) der Ergebnisvariablen der Behandlungsgruppe. Der zweite Term berechnet den Durchschnittswert der Ergebnisvariablen, gewichtet mit dem Neigungswert / (1-Neigungswert) für die Kontrollgruppe (Gruppe von $ z_i = 0 $). Dies kann so interpretiert werden, dass die "Ergebnisvariable, wenn die Behandlungsgruppe nicht interveniert" geschätzt wird, indem die Ergebnisvariable der Kontrollgruppe durch die "Kontrollgruppenähnlichkeit" dividiert und mit der "Behandlungsgruppenähnlichkeit" multipliziert wird.

** ATU ** konzentriert sich auf die Kontrollgruppe und sagt: "Verlängerung der Ergebnisvariablen, wenn die Kontrollgruppe vorläufig interveniert wird (= der tatsächliche Wert der Ergebnisvariablen, wenn die Kontrollgruppe vorläufig interveniert, und die Ergebnisvariable der Kontrollgruppe. (Unterschied) ”. Durch die Abschätzung des Interventionseffekts in einer Gruppe, die derzeit nicht interveniert, wird häufig verwendet, um ** zu bestimmen, ob der Interventionsumfang in Zukunft erweitert werden soll **. Der erste Term berechnet den Durchschnittswert der Ergebnisvariablen, gewichtet mit (1-anfälliger Score) / Neigungs-Score für die Behandlungsgruppe (Gruppe von $ z_i = 1 $). Dies kann als Schätzung der "Ergebnisvariablen bei vorläufiger Intervention der Kontrollgruppe" interpretiert werden, indem die Ergebnisvariable der Behandlungsgruppe durch die "Behandlungsgruppenähnlichkeit" dividiert und mit der "Kontrollgruppenähnlichkeit" multipliziert wird. Der zweite Term $ \ bar {y} _0 $ ist der Durchschnittswert (Istwert) der Ergebnisvariablen der Kontrollgruppe.

Verfahren zur Abschätzung des Effekts

Lassen Sie uns nun den Effekt der Intervention abschätzen. Hier gibt CM-Kontakt unter Verwendung von Iwanami DS Vol.3 CM-Kontakteffektschätzungsdaten die Anwendungsnutzung an Implementieren Sie die Effektschätzung in Python. Hier schätzen wir, um wie viel Prozent der Personen, die die App tatsächlich nutzen, durch die Ausstrahlung eines CM, das die Nutzung der App fördert, gestiegen sind. ATT wird geschätzt, um den direkten Gewinn (= Anstiegsrate der Benutzer, die die Anwendung verwenden) aus CM-Maßnahmen zu schätzen. Das Schätzverfahren ist wie folgt.

  1. Erstellen Sie ein Neigungsbewertungsmodell
  2. Überprüfen Sie die Schätzgenauigkeit des Propensity-Score-Schätzmodells
  3. ATT berechnen

Unten ist der Code.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns

import statsmodels.api as sm
from sklearn.calibration import calibration_curve
from sklearn.metrics import roc_auc_score

import itertools
import time

Sei $ Z $ die Variable, die die Gruppe der "gesehenen / nicht gesehenen CM" darstellt, und die Kovariate $ X $ für Fernsehzeit, Geschlecht, Alter usw.

data = pd.read_csv('./q_data_x.csv')
X = data[['TVwatch_day', 'age', 'sex', 'marry_dummy', 'child_dummy', 'inc', 'pmoney','area_kanto', 'area_tokai', 'area_keihanshin', 
          'job_dummy1', 'job_dummy2', 'job_dummy3', 'job_dummy4', 'job_dummy5', 'job_dummy6', 'job_dummy7',
          'fam_str_dummy1', 'fam_str_dummy2', 'fam_str_dummy3', 'fam_str_dummy4']] #Covariate
Z = data['cm_dummy'] #Gruppenvariablen

Schätzen Sie den Neigungswert für jeden Benutzer anhand der Kovariaten. Hier verwenden wir die Logit-Funktion der StatsModels-Bibliothek, um ein Modell zur Schätzung des Neigungswerts durch logistische Regression zu erstellen.

exog = sm.add_constant(X) #Abschnitt hinzufügen
logit_model = sm.Logit(endog=Z, exog=exog) #Logistische Rückgabe
logit_res = logit_model.fit()

Betrachtet man die Schätzgenauigkeit mit dem folgenden Code, so betrug die AUC = 0,792. Es ist eine vernünftige Schätzgenauigkeit.

ps = logit_res.predict(exog)
print('AUC = {:.3f}'.format(roc_auc_score(y_true=Z, y_score=ps)))
#Ausgabe:=> AUC = 0.792

Zeichnen Sie dann ein Kalibrierungsdiagramm mit dem folgenden Code. Da sich das Kalibrierungsdiagramm ungefähr auf der 45-Grad-Linie befindet, ist es immer noch eine vernünftige Schätzgenauigkeit.

_, ax1 = plt.subplots(figsize=(10, 5))

prob_true, prob_pred = calibration_curve(y_true=Z, y_prob=ps, n_bins=20)
ax1.plot(prob_pred, prob_true, marker='o', label='calibration plot')
ax1.plot([0,1], [0,1], linestyle='--', color='black', label='ideal')
ax1.legend(bbox_to_anchor=(1.2, 0.9), loc='upper left', borderaxespad=0)
ax1.set_xlabel('predicted probability')
ax1.set_ylabel('true probability')

ax2 = ax1.twinx()
ax2.hist(ps, bins=20, histtype='step', rwidth=0.9)
ax2.set_ylabel('count')
plt.tight_layout()
plt.show()

calibration_plot.PNG

--ATT-Schätzung

Schätzung ATT. Die zu schätzende Ergebnisvariable ist eine Dummy-Variable für die Anwendungsnutzung (eine Variable, die 1 verwendet, wenn eine Anwendung verwendet wird, und 0, wenn nicht). Bei Schätzung der ATT mit dem folgenden Code betrug der Effekt von CM etwa 0,026 (± 0,013 ist das 95% -Konfidenzintervall, das mit der Bootstrap-Methode berechnet wurde). Mit anderen Worten, es wurde festgestellt, dass der Prozentsatz der Benutzer, die die App verwenden, aufgrund der CM-Maßnahmen um etwa 2,6% zunehmen wird. (Es wurde bestätigt, dass es dem in Iwanami DS Vol.3 beschriebenen Wert entspricht.)

Y = data['gamedummy'] #Ergebnisvariable (geschätztes Ziel)
sample_size = len(data.loc[data['cm_dummy']==1])
ATT_list = []

for i in range(10000):
    idx1 = pd.Series(data.loc[data['cm_dummy']==1, 'gamedummy'].index).sample(n=sample_size, replace=True, random_state=i)
    idx0 = pd.Series(data.loc[data['cm_dummy']==0, 'gamedummy'].index).sample(n=sample_size, replace=True, random_state=i)
    
    Z_tmp = np.r_[Z[idx1], Z[idx0]]
    Y_tmp = np.r_[Y[idx1], Y[idx0]]
    ps_tmp = np.r_[ps[idx1], ps[idx0]]
    w01_tmp = (1-Z_tmp)*ps_tmp/(1-ps_tmp)
    
    E1 = np.mean(Y_tmp[Z_tmp==1])
    E0 = np.sum(Y_tmp * w01_tmp) / np.sum(w01_tmp)
    ATT = E1 - E0
    ATT_list.append(ATT)
    
print('ATT = {:.3f} ± {:.3f} (s.d.={:.3f})'.format(np.mean(ATT_list), np.std(ATT_list)*1.96, np.std(ATT_list)))
#Ausgabe:=> ATT = 0.026 ± 0.013 (s.d.=0.006)

Bestätigung der Kovariatenverteilung

Wir konnten die ATT mit dem obigen Code schätzen, aber gehen wir noch einen Schritt weiter, um zu sehen, ob wir die Wirkung der Intervention richtig abschätzen können.

Bei der Schätzung der ATT ist es wichtig, den zweiten Term (den Durchschnittswert der Ergebnisvariablen, wenn die Behandlungsgruppe nicht interveniert) unter Verwendung des Neigungsscores korrekt zu schätzen. Zu diesem Zweck wird der "Wert der Ergebnisvariablen der Kontrollgruppe" gut an den "Wert der Ergebnisvariablen angepasst, wenn die Behandlungsgruppe nicht interveniert", dh die Kontrolle wird durch Anpassen unter Verwendung des ** Neigungsscores durchgeführt. Es muss bestätigt werden, ob die Hintergrundinformationen (Kovariaten) der zur Gruppe gehörenden Benutzer mit den Hintergrundinformationen (Kovariaten) der zur Behandlungsgruppe gehörenden Benutzer übereinstimmen **. Wir haben die Schätzgenauigkeit des Neigungsscores bestätigt, aber ich denke, wir sollten vorrangig bestätigen, ob die Verteilung der Kovariaten homogen ist. Bei der Überprüfung wird jede Kovariate wie die Ergebnisvariable angemessen mit einem Neigungswert gewichtet.

Lassen Sie uns nun überprüfen, ob die Verteilung der Kovariaten in jeder Gruppe homogen ist, indem wir den Neigungswert anpassen. Hier verwenden wir einen Index namens Standardized Mean Difference (SMD). Wenn in einer Formel geschrieben,

SMD = \frac{\bar{x}_1 - \bar{x}_0}{\sigma_{pool}}
\sigma_{pool}^2 = \frac{(N_1-1)\sigma_1^2+(N_0-1)\sigma_0^2}{N_1+N_2-2}

ist. Die Differenz zwischen dem Mittelwert der Kovariaten in der Behandlungsgruppe $ \ bar {x} \ _1 $ und dem Mittelwert der Kovariaten in der Kontrollgruppe $ \ bar {x} \ _0 $ wird zusammengefasst. Sie kann berechnet werden, indem Sie durch die Quadratwurzel von $ dividieren. $ \ Sigma_1 ^ 2 $ ist die kovariate Varianz der Behandlungsgruppe, $ \ sigma_0 ^ 2 $ ist die kovariate Varianz der Kontrollgruppe, $ N_1 $ ist die Anzahl der Benutzer in der Behandlungsgruppe, $ N_0 $ ist die Anzahl der Benutzer in der Kontrollgruppe ..

Wenn der Unterschied zwischen den Mittelwerten jeder Gruppe gering und die Varianz groß ist, ist SMD ein Index, der zeigt, dass die Verteilung der Kovariaten in beiden Gruppen eine große Überlappung aufweist und der Unterschied in der Verteilung der Kovariaten gering ist. Wenn Sie den Unterschied in der Verteilung beurteilen möchten, möchten Sie möglicherweise den Kormogorov-Smirnov-Test (KS-Test) durchführen. Da dies jedoch eine Methode ist, um zu zeigen, dass "es einen statistisch signifikanten Unterschied in der Verteilung gibt", " Ich denke, es ist ein Missbrauch, damit anzuzeigen, dass die Verteilungen homogen sind (es gibt keinen Unterschied in den Verteilungen).

Lassen Sie uns nun die standardisierte mittlere Differenz (SMD) jeder Kovariate überprüfen. Der folgende Code definiert zunächst eine Funktion zur Berechnung der SMD (standardisierte_Mittel_Differenz) und eine Funktion zur Berechnung der SMD vor und nach der Anpassung mithilfe von Neigungsbewertungen (smd_on_the_treated). Dann wird für jede Kovariate die SMD vor und nach der Anpassung unter Verwendung des Neigungsscores aufgezeichnet. Diese Handlung wird Liebeshandlung genannt.

def standardized_mean_difference(X1, X0): #Funktion zur Berechnung der SMD
    N1 = len(X1)
    N0 = len(X0)
    s_pool = ((N1-1)*np.var(X1)+(N0-1)*np.var(X0))/(N1+N0-2)
    
    return (np.mean(X1)-np.mean(X0))/np.sqrt(s_pool)

def smd_on_the_treated(X, Z, ps): #Eine Funktion, die die SMD vor und nach der Anpassung anhand des Neigungsscores berechnet
    X1 = X[Z==1]
    X0 = X[Z==0]
    ps0 = ps[Z==0]
    X10 = X0*ps0/(1-ps0)
    
    smd_before = standardized_mean_difference(X1, X0)
    smd_after = standardized_mean_difference(X1, X10)
    
    return smd_before, smd_after

#Berechnen Sie die SMD vor und nach der Anpassung anhand des Neigungswerts für jede Kovariate
smd_list = []
for name in X.columns:
    smd_before, smd_after = smd_on_the_treated(X=X[name], Z=Z, ps=ps)
    smd_list.append([name, smd_before, smd_after])
smd_df = pd.DataFrame(smd_list, columns=['covariate', 'SMD(before)', 'SMD(after)'])

#Zeichnen Sie für jede Kovariate die SMD vor und nach der Anpassung mit dem Neigungswert (erstellen Sie einen Liebesplot).
plt.figure(figsize=(5, 10))
plt.scatter(smd_df['SMD(before)'], smd_df['covariate'], label='before')
plt.scatter(smd_df['SMD(after)'], smd_df['covariate'], label='after')
plt.vlines([0], ymin=-1, ymax=X.shape[1])
plt.legend()
plt.xlabel('standardized mean difference')
plt.ylabel('covariate')
plt.grid(True)
plt.show()

love_plot.png

Die blauen Punkte zeigen die SMD zwischen den voreingestellten Kovariaten unter Verwendung des Neigungsscores an, und die orangefarbenen Punkte zeigen die SMD zwischen den angepassten Kovariaten an. Wenn man dies betrachtet, kann man sehen, dass die SMD durch Anpassen der Fernsehzeit (TVwatch_day) unter Verwendung des Neigungsscores stark reduziert wird. Es gibt jedoch einige Kovariaten, bei denen die SMD eher durch Anpassung unter Verwendung von Neigungswerten wie der Anwesenheit oder Abwesenheit von Kindern (child_dummy) erhöht wird.

So wählen Sie Kovariaten aus

Der Grund, warum die Verteilung der Kovariaten nicht homogen ist, wie oben beschrieben, besteht darin, dass die Kovariaten, die zur Schätzung des Neigungsscores verwendet werden sollten, nicht berücksichtigt werden und eine versteckte Verzerrung bestehen bleibt. Um die versteckte Vorspannung zu beseitigen, ist es notwendig, die Bedingung "stark vernachlässigbare Zuordnung" zu erfüllen, aber da es unmöglich ist, direkt zu überprüfen, ob diese Bedingung erfüllt ist, ist die Bedingung indirekt erfüllt. Es scheint, dass Sie häufig eine Kovariate überprüfen und auswählen. (Die Erklärung der Bedingung "stark vernachlässigbare Zuordnung" wird den Fachbüchern überlassen.)

Die Grundrichtlinie für die Auswahl von Kovariaten besteht darin, so viele Kovariaten wie möglich einzubeziehen, die sich auf das Ergebnis und die Gruppenvariablen beziehen. Das Auswahlverfahren ist

  1. Extrahieren Sie Variablen, die sich auf Ergebnisvariablen beziehen --Beispiel: Führen Sie eine Regressionsanalyse mit der Anzahl der Ergebnisse als Zielvariable und einem der kovariaten Kandidaten als erklärende Variable durch und extrahieren Sie die mit dem höchsten Pseudobestimmungskoeffizienten.
  2. Extrahieren Sie Variablen, die sich auf Gruppenvariablen beziehen --Beispiel: Führen Sie eine Regressionsanalyse mit der Gruppenvariablen als Zielvariable und einem der kovariaten Kandidaten als erklärende Variable durch und extrahieren Sie die mit dem höchsten Pseudobestimmungskoeffizienten.
  3. Führen Sie die in 1. und 2 extrahierten Kovariaten zusammen.
  1. Bestätigung der Erklärungskraft der Zuordnung durch die Kovariate
  1. Bestätigung der Kovariatenverteilung

ist. Es wird gesagt, dass die Regressionsanalyse in den Beispielen von 1 und 2 durchgeführt wird, aber da der Zweck hier darin besteht, die Variablen zu extrahieren, die sich auf die Ergebnisvariable und die Gruppenvariable beziehen, wird es nicht notwendigerweise eine Regression sein, wenn dieser Zweck erreicht wird. Es ist keine Analyse erforderlich. In Schritt 4 überprüfen wir die Schätzgenauigkeit des Propensity-Score-Schätzmodells. Beachten Sie jedoch, dass es sich nicht um eine Frage hoher Genauigkeit handelt. Dies liegt daran, dass eine Kovariate ausgewählt werden muss, die enger mit der Ergebnisvariablen als mit der Gruppenvariablen zusammenhängt, um die geschätzte Varianz des kausalen Effekts auf die Ergebnisvariable niedrig zu halten. Daher denke ich, dass die variable Auswahlmethode, die die Schätzgenauigkeit des Neigungswerts durch Verwendung eines Algorithmus für maschinelles Lernen mit guter Genauigkeit erhöht, als Richtlinie unterschiedlich ist.

abschließend

Wir haben das Implementierungsverfahren mit Python-Code für statistische kausale Überlegungen zusammengefasst, insbesondere die Methode zur Schätzung der Wirkung von Maßnahmen durch die inverse Wahrscheinlichkeitsgewichtungsmethode basierend auf dem Neigungswert. Er ging auch auf die Auswahl von Kovariaten ein. Es ist jedoch schwierig zu beurteilen, ob der Effekt korrekt geschätzt werden kann. Seien Sie also vorsichtig, wenn Sie statistische kausale Schlussfolgerungen verwenden! Ich muss sagen.

Wir würden uns freuen, wenn Sie auf falsche Beschreibungen hinweisen könnten.

Referenz

Recommended Posts

Abschätzung der Wirkung von Maßnahmen anhand von Neigungswerten
[Nicht parametrische Felder] Schätzen der Anzahl von Clustern mithilfe des Diricle-Prozesses
Untersuchen Sie die Auswirkung von Ausreißern auf die Korrelation
Verkürzung der Analysezeit von Openpose mithilfe von Sound
Überprüfen Sie den Typ der von Ihnen verwendeten Variablen
Exklusive Veröffentlichung der Django App mit ngrok
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Berücksichtigung der Neigungsbewertung und der Genauigkeit der Effektschätzung
Bestimmen Sie die Anzahl der Klassen mithilfe der Starges-Formel
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Überprüfen Sie den Status der Daten mit pandas_profiling
Scraping der Gewinndaten von Zahlen mit Docker
Berechnung der kürzesten Route nach der Monte-Carlo-Methode
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 2
Schneiden Sie einen Teil der Zeichenfolge mit einem Python-Slice aus
Zeichnen auf Jupyter mit der Plot-Funktion von Pandas
Der Schmerz von gRPC mit Python. November 2019. (Persönliches Memo)
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Lassen Sie uns die Emotionen von Tweet mit Chainer (2.) analysieren.
Erläuterung des Konzepts der Regressionsanalyse mit Python Extra 1
Studie aus Python Hour8: Verwenden von Paketen
Lassen Sie uns die Emotionen von Tweet mit Chainer (1.) analysieren.
Die Geschichte der Verwendung von Circleci zum Bau vieler Linux-Räder