Einführung in die Überprüfung der Wirksamkeit Kapitel 2 in Python geschrieben

Einführung

Einführung in die Überprüfung der Wirksamkeit - kausales Denken für einen korrekten Vergleich / Grundlagen der quantitativen Ökonomie Reproduzieren Sie den Quellcode in Python Machen.

Ich habe bereits ein Beispiel für die Implementierung eines großartigen Vorfahren, aber ich werde es als Memo für meine Studie hinterlassen.

Dieser Artikel behandelt Kapitel 2. Der Code wird auch auf github veröffentlicht. Darüber hinaus sind Variablennamen und Verarbeitungsinhalte grundsätzlich im Buch implementiert.

Regressionsanalyse

Sie können eine lineare Regression entweder mit Scicit-Learn- oder Statistikmodellen implementieren. In Bezug auf die Statistik jeder Variablen sind Statistikmodelle jedoch vorteilhafter, sodass dies bequemer ist.

scikit-learn

Regressionsanalyse von sklearn


from sklearn.linear_model import LinearRegression

#Modelllernen
X = biased_data[['treatment', 'history']]
y = biased_data['spend']
model = LinearRegression(fit_intercept=True, normalize=False).fit(X, y)

#Ergebnisausgabe
print(f'R^2: {model.score(X, y)}')
print(f'intercept: {model.intercept_}')
print(f'coefficients: {model.coef_}')

Das Ergebnis von Scikit-Learn ist geringer als das von später beschriebenen Statistikmodellen. Es ist möglich, jeden statistischen Wert basierend auf den Trainingsdaten zu berechnen, aber es scheint, dass es bis zu diesem Zeitpunkt keinen Wert gibt, Scikit-Learn zu verwenden.

statsmodels

Es scheint mehrere Möglichkeiten zu geben, Modelle mithilfe von Statistikmodellen zu lernen, aber die R-ähnlichen sind wie folgt.

Regressionsanalyse von Statistikmodellen


from statsmodels.formula.api import ols

#Modelllernen
model = ols('spend ~ treatment + history', data=biased_data).fit()

#Ergebnisausgabe
model.summary()

Übrigens, wenn die Ausgabe des Ergebnisses wie model.summary (). Tables [1] ist, können Sie eine beliebige Tabelle aus mehreren Informationen angeben.

Wenn Sie eine Schätzung erhalten möchten, können Sie mit "model.params" auf die Liste im Wörterbuchformat verweisen.

RData lesen

Verwenden Sie zum Lesen von Daten im R-Format rdata. Einzelheiten zur Verwendung des Moduls finden Sie unter hier.

RData lesen


import rdata

parsed = rdata.parser.parse_file('./vouchers.rda')
converted = rdata.conversion.convert(parsed)
vouchers = converted['vouchers']

Kollektive Regressionsanalyse

In diesem Buch lernen wir die Modelle mehrerer objektiver Variablen gleichzeitig, aber es scheint schwierig, dasselbe in Python zu tun.

Kollektive Regressionsanalyse


import pandas as pd
from statsmodels.formula.api import ols

#Definition der Regressionsgleichung
formula_x_base = ['VOUCH0']
formula_x_covariate = [
    'SVY', 'HSVISIT', 'AGE', 'STRATA1', 'STRATA2', 'STRATA3', 'STRATA4', 'STRATA5', 'STRATA6', 'STRATAMS',
    'D1993', 'D1995', 'D1997', 'DMONTH1', 'DMONTH2', 'DMONTH3', 'DMONTH4', 'DMONTH5', 'DMONTH6',
    'DMONTH7', 'DMONTH8', 'DMONTH9', 'DMONTH10', 'DMONTH11', 'DMONTH12', 'SEX2',
]
formula_ys = [
    "TOTSCYRS","INSCHL","PRSCH_C","USNGSCH","PRSCHA_1","FINISH6","FINISH7","FINISH8","REPT6",
    "REPT","NREPT","MARRIED","HASCHILD","HOURSUM","WORKING3",
]

#Definition der Funktion, die das Regressionsergebnis erhält
def get_regression_result(formula, data):
  model = ols(formula, data=data).fit()
  result = pd.read_html(model.summary().tables[1].as_html(), header=0)[0]
  result.columns = ['term', 'estimate', 'std.err', 'statistic', 'p.value', '0.025', '0.975']
  result
  return result

#Führen Sie gemeinsam eine Regressionsanalyse durch
results = list()
for formula_y in formula_ys:
  base_reg_formula = f'{formula_y} ~ {" + ".join(formula_x_base)}'
  base_reg_model_index = f'{formula_y}_base'
  covariate_reg_formula = f'{formula_y} ~ {" + ".join(formula_x_base+formula_x_covariate)}'
  covariate_reg_model_index = f'{formula_y}_covariate'

  base_reg_result = get_regression_result(base_reg_formula, regression_data)
  base_reg_result['model_index'] = base_reg_model_index
  results.append(base_reg_result)
  
  covariate_reg_result = get_regression_result(covariate_reg_formula, regression_data)
  covariate_reg_result['model_index'] = covariate_reg_model_index
  results.append(covariate_reg_result)

df_results = pd.concat(results).reset_index(drop=True)
df_results = df_results[['model_index', 'term', 'estimate', 'std.err', 'statistic', 'p.value', '0.025', '0.975']]

Darstellung der Beziehung zwischen Intervention und objektiver Variable

Wahrscheinlich einfach mit Fehlerbalken in matplotlib zu zeichnen. Der Punkt besteht darin, die Größe des Fehlers in der Fehlerleiste zu finden, die verwendet wird, um das Konfidenzintervall aus der Differenz zwischen dem geschätzten Wert und dem Konfidenzintervall auszudrücken.

In den zum Zeichnen verwendeten Daten (hier nicht gezeigt) wird der Wert aus dem Modell erhalten, aber da die Anzahl der zu diesem Zeitpunkt gültigen Zahlen gering ist, kann es zu Abweichungen kommen.

Handlung


import matplotlib.pyplot as plt

estimate = going_private_results['estimate']
estimate_error = going_private_results['estimate'] - going_private_results['0.025']  #Die Differenz zwischen dem Konfidenzintervall und dem geschätzten Wert sei die Länge des Fehlerbalkens

xmin = 0
xmax = going_private_results.shape[0] - 1

plt.errorbar(range(xmax+1), estimate, estimate_error, fmt='o')
plt.hlines(y=0, xmin=xmin, xmax=xmax, colors='k', linestyles='dashed')
plt.xlabel('model_indexe')
plt.ylabel('estimate')
plt.xticks(range(going_private_results.shape[0]), going_private_results['model_index'], rotation=45)
plt.show()

Beziehung

Recommended Posts

Einführung in die Überprüfung der Wirksamkeit Kapitel 3 in Python geschrieben
Einführung in die Überprüfung der Wirksamkeit Kapitel 2 in Python geschrieben
Einführung in die Überprüfung der Wirksamkeit Kapitel 1 in Python geschrieben
Einführung in die Effektüberprüfung Schreiben der Kapitel 4 und 5 in Python
Geschrieben "Einführung in die Effektüberprüfung" in Python
[Einführung in Python3 Tag 13] Kapitel 7 Zeichenfolgen (7.1-7.1.1.1)
[Einführung in Python3 Tag 14] Kapitel 7 Zeichenfolgen (7.1.1.1 bis 7.1.1.4)
[Einführung in Python3 Tag 15] Kapitel 7 Zeichenfolgen (7.1.2-7.1.2.2)
[Einführung in Python3 Tag 21] Kapitel 10 System (10.1 bis 10.5)
"Einführung in die Effektüberprüfung Kapitel 3 Analyse mit dem Neigungswert" + α wird in Python versucht
In Python geschriebener Fourier-Serien-Verifizierungscode
[Einführung in Python] Wie verwende ich eine Klasse in Python?
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.1-8.2.5)
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.3-8.3.6.1)
[Einführung in Python3 Tag 19] Kapitel 8 Datenziele (8.4-8.5)
[Einführung in Python3 Tag 18] Kapitel 8 Datenziele (8.3.6.2 bis 8.3.6.3)
Einführung in Vektoren: Lineare Algebra in Python <1>
[Einführung in Python3 Tag 12] Kapitel 6 Objekte und Klassen (6.3-6.15)
tse - Einführung in den Text Stream Editor in Python
Einführung in die Python-Sprache
[Einführung in Python3, Tag 22] Kapitel 11 Parallele Verarbeitung und Vernetzung (11.1 bis 11.3)
Einführung in OpenCV (Python) - (2)
[Einführung in Python3, Tag 23] Kapitel 12 Werden Sie Paisonista (12.1 bis 12.6)
[Einführung in Python3 Tag 20] Kapitel 9 Enträtseln des Webs (9.1-9.4)
[Einführung in Python3 Tag 8] Kapitel 4 Py Skin: Codestruktur (4.1-4.13)
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Technisches Buch] Einführung in die Datenanalyse mit Python -1 Kapitel Einführung-
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Einführung in Python Django (2) Win
So löschen Sie stdout in Python
Melden Sie sich auf der Website in Python an
Einführung in die serielle Kommunikation [Python]
[Einführung in Python] <Liste> [Bearbeiten: 22.02.2020]
Einführung in Python (Python-Version APG4b)
Gacha geschrieben in Python -BOX Gacha-
Eine Einführung in die Python-Programmierung
Wie man in Python entwickelt
Einführung in Python For, While
Post an Slack in Python
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
[Einführung in Python3 Tag 3] Kapitel 2 Py-Komponenten: Numerische Werte, Zeichenfolgen, Variablen (2.2 bis 2.3.6)
[Einführung in Python3 Tag 4] Kapitel 2 Py-Komponenten: Numerische Werte, Zeichenfolgen, Variablen (2.3.7 bis 2.4)
Einführung
[Einführung in Python3 Tag 21] Kapitel 10 System (10.1 bis 10.5)
Echtzeit-Persönliche Schätzung (Lernen)
Kivy Einführung
Cooles Lisp geschrieben in Python: Hy
[Einführung in die Udemy Python3 + -Anwendung] 58. Lambda
[Einführung in die Udemy Python3 + -Anwendung] 31. Kommentar
[Python] Wie man PCA mit Python macht
Trainieren! !! Einführung in Python Type (Type Hints)
[Einführung in Python3 Tag 1] Programmierung und Python
Konvertieren Sie Markdown in Python in PDF
So sammeln Sie Bilder in Python
100 Sprachverarbeitung Knock Kapitel 1 in Python
[Einführung in Python] <numpy ndarray> [edit: 2020/02/22]
[Einführung in die Udemy Python3 + -Anwendung] 57. Decorator
Einführung in Python Hands On Teil 1
Verwendung von SQLite in Python
[Einführung in Python] So analysieren Sie JSON
[Einführung in die Udemy Python3 + -Anwendung] 56. Abschluss
Im Python-Befehl zeigt Python auf Python3.8