Neu in

PyStata—Python und Stata

PyStata ermöglicht den direkten Aufruf von Stata aus jeder eigenständigen Python-Umgebung und den direkten Aufruf von Python aus Stata heraus und erweitert damit die Python-Integrationsmöglichkeiten von Stata erheblich.

Zu den neuen Funktionen in PyStata gehören

  1. die Möglichkeit, Stata aus einer IPython-Kernel-bezogenen Umgebung wie Jupyter Notebook, Spyder IDE oder PyCharm IDE zu verwenden;
  2. die Möglichkeit, Stata von der Python-Shell aus zu verwenden, wie der Windows-Eingabeaufforderung, dem macOS-Terminal oder dem Unix-Terminal;
  3. drei magische IPython-Befehle: stata, mata und pystata; und
  4. eine Reihe von API-Funktionen aus Python heraus, um Stata-Befehle auszuführen und auf Stata-Daten und zurückgegebene Ergebnisse zuzugreifen.

Höhepunkte

  • Stata aus Python heraus verwenden
  • Stata-API-Funktionen zur Ausführung von Stata-Befehlen und zum Zugriff auf Stata-Daten und zurückgegebene Ergebnisse von Python aus
  • Magischer IPython-Befehl zur Verwendung von Stata aus Jupyter Notebook

Lassen Sie uns sehen, wie es funktioniert

Stellen Sie sich vor, dass ein Gesundheitsdienstleister daran interessiert ist, die Auswirkung eines neuen Verfahrens zur Krankenhausaufnahme auf die Patientenzufriedenheit zu untersuchen. Sie haben monatliche Daten über Patienten, bevor und nachdem das neue Verfahren in einigen ihrer Krankenhäuser eingeführt wurde. Die Daten liegen im verschachtelten JSON-Format vor, und der Gesundheitsdienstleister verwendet Python als Datenanalysewerkzeug. Aber sie möchten die neue DID-Regression von Stata verwenden, um den Effekt des neuen Aufnahmeverfahrens auf die Krankenhäuser, die an dem Programm teilgenommen haben, zu analysieren. Das Ergebnis von Interesse ist die Patientenzufriedenheit, satisfaction_score, und die Behandlungsvariable ist das Verfahren.

A portion of did.json is

{
„hospital_id“: „1“,
„month“: „7“,
„records“: [
{
„procedure“: „New“,
„satisfaction_score“: „4.1065269“
}
]
}
Wir verwenden die API-Funktion in einem Python-Skript, did.py, um mit Stata zu interagieren. Einige Highlights des Codes sind

# Stata von Python aus einrichten
import stata_setup
stata_setup.config(“C:/Program Files/Stata17”, “se”)
# Importieren Sie die json-Datei in einen Python-Datenrahmen
with open(“did.json”) as json_file:
data = json.load(json_file)
data = json_normalize(data, ‘records’, [‘hospital_id’, ‘month’])
# Python-Datenrahmen in Stata laden
from pystata import stata
stata.pdataframe_to_data(data, True)
# Stata-Befehle in Python ausführen
stata.run(”’
didregress (satisfaction_score) (procedure), ///
group(hospital_id) time(month)
”’, echo=True)
# Laden von in Stata gespeicherten Ergebnissen in Python
r = stata.get_return()[‘r(table)’]
# Verwenden Sie sie in Python
print(“\n”)
print(“The treatment hospitals had a %5.2f-point increase.” % (r[0][0]), end=” “)
print(“The result is with 95%% confidence interval [%5.2f, %5.2f].” % (r[4][0], r[5][0]))
# Stata-Diagramm in Python generieren
stata.run(“estat trendplots”, echo=True)
stata.run(“graph export did.svg, replace”, quietly=True)

Run did.py in Spyder

Hier führen wir did.py, das im obigen Abschnitt erstellt wurde, in Spyder aus.

Die gesamte Analyse wird durchgeführt, ohne die Python-Umgebung zu verlassen. Und mit den API-Funktionen von Stata fließen Daten und Ergebnisse nahtlos zwischen Python und Stata.

did.py in Python-Shell ausführen

Das Skript kann problemlos in jeder Python-Umgebung ausgeführt werden, z. B. in der Windows-Eingabeaufforderung, im macOS-Terminal oder im Unix-Terminal. Diese Methode verwendet nur die Shell-Umgebung und ruft kein GUI-Element von Stata auf.
python did.py > did.log
erzeugt eine Protokolldatei, did.log, mit der Ausgabe von didregress.
Diese Methode ist nützlich, um Aufgaben unter Windows zu automatisieren. Und das obige Skript kann in eine regelmäßig geplante Aufgabe eingebunden werden, um neue Daten zu verarbeiten.
Ein detailliertes Beispiel für die Verwendung von Stata in Jupyter Notebook oder einer anderen Python-Umgebung, die IPython unterstützt, finden Sie unter Jupyter Notebook mit Stata.