Nou în

PyStata—Python și Stata

PyStata vă permite să invocați Stata direct din orice mediu Python independent și să apelați Python direct din Stata, extinzând astfel caracteristicile de integrare Python ale Stata.

Alte caracteristici din PyStata includ

  1. capacitatea de a utiliza Stata dintr-un mediu legat de kernel-ul IPython, cum ar fi Jupyter Notebook, Spyder IDE sau PyCharm IDE;
  2. capacitatea de a utiliza Stata din Python Shell, cum ar fi Promptul de comandă Windows, terminalul macOS sau terminalul Unix;
  3. trei comenzi magice IPython: stata, mata și pystata; și
  4. o suită de funcții API din Python pentru a rula comenzile Stata și pentru a accesa datele Stata și rezultatele returnate.

Repere

  • Folosiți Stata din Python
  • Stata API funcționează pentru a rula comenzi Stata, pentru a accesa datele Stata și rezultatele returnate din Python
  • IPython magic comandă să utilizeze Stata din Jupyter Notebook

Să vedem cum funcționează

Imaginați-vă că un furnizor de sănătate este interesat să studieze efectul unei noi proceduri de admitere în spital asupra satisfacției pacientului. Ei au date lunare despre pacienți înainte și după ce noua procedură a fost implementată în unele spitale. Datele sunt în format JSON imbricat, iar furnizorul de sănătate folosește Python ca instrument de analiză a datelor. Dar ar dori să folosească noua regresie DID a Stata pentru a analiza efectul noii proceduri de admitere asupra spitalelor care au participat la program. Rezultatul dorit este satisfacția pacientului, scorul_satisfacție, iar variabila tratamentului este procedura.

O parte din did.json este
{
“hospital_id”: “1”,
“month”: “7”,
“records”: [
{
“procedure”: “New”,
“satisfaction_score”: “4.1065269”
}
]
}
Folosim funcția API într-un script Python, did.py, pentru a interacționa cu Stata. Unele puncte culminante ale codului sunt
# Configurați Stata din Python
import stata_setup
stata_setup.config(“C:/Program Files/Stata17”, “se”)
# Importați fișierul json într-un cadru de date Pyt
cu open(“did.json”) ca json_file:
data = json.load(json_file)
data = json_normalize(data, ‘records’, [‘hospital_id’, ‘month’])
# Încărcați cadrul de date Python în Stata
din pystata importă stata
stata.pdataframe_to_data(data, True)
# Rulați comenzile Stata în Python
stata.run(”’
didregress (satisfaction_score) (procedure), ///
group(hospital_id) time(month)
”’, echo=True)
# Încărcați rezultatele salvate Stata în Python
r = stata.get_return()[‘r(table)’]
# Folosiți-le în 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]))
# Generați graficul Stata în Python
stata.run(“estat trendplots”, echo=True)
stata.run(“graph export did.svg, replace”, quietly=True)

Rulați did.py în Spyder

Aici rulăm did.py, care a fost creat în secțiunea de mai sus, în Spyder.

Întreaga analiză este efectuată fără a părăsi mediul Python. Și cu funcțiile API Stata, datele și rezultatele circulă perfect între Python și Stata.

Rulați did.py în Python Shell

Scriptul poate fi executat cu ușurință în orice mediu Python, cum ar fi promptul de comandă Windows, terminalul macOS sau terminalul Unix. Această metodă utilizează numai mediul shell și nu invocă niciun element GUI al Stata.
python did.py > did.log
produce un fișier jurnal, did.log, cu ieșiredin
didregress.

Această metodă este utilă pentru automatizarea sarcinilor în Windows. Și scriptul de mai sus poate fi încorporat într-o sarcină programată în mod regulat pentru a gestiona date noi.
Pentru un exemplu detaliat folosind Stata în Jupyter Notebook sau orice mediu Python care acceptă IPython, consultați Jupyter Notebook cu Stata.