Nouveau dans

PyStata—Python et Stata

PyStata vous permet d’invoquer Stata directement à partir de n’importe quel environnement Python autonome et d’appeler Python directement à partir de Stata, ce qui élargit considérablement les fonctionnalités d’intégration Python de Stata.
Les nouvelles fonctionnalités de PyStata comprennent

  1. la capacité d’utiliser Stata à partir d’un environnement lié au noyau Python, comme Jupyter Notebook, Spyder IDE ou PyCharm IDE;
  2. la possibilité d’utiliser Stata à partir du shell Python, comme l’invite de commande Windows, le terminal macOS ou le terminal Unix;
  3. trois commandes magiques IPython: stata, mata et pystata; et
  4. une suite de fonctions API à partir de Python pour exécuter des commandes Stata et accéder aux données Stata et aux résultats retournés.

Points forts

  • Utilisez Stata à partir de Python
  • Fonctions de l’API Stata pour exécuter des commandes Stata et accéder aux données Stata et aux résultats retournés depuis Python
  • Commande magique IPython pour utiliser Stata à partir de Jupyter Notebook

Voyons comment cela fonctionne

Imaginons qu’un prestataire de santé souhaite étudier l’effet d’une nouvelle procédure d’admission à l’hôpital sur la satisfaction des patients. Il dispose de données mensuelles sur les patients avant et après la mise en œuvre de la nouvelle procédure dans certains de ses hôpitaux. Les données sont au format JSON imbriqué et le prestataire de soins utilise Python comme outil d’analyse des données. Mais il aimerait utiliser la nouvelle régression DID de Stata pour analyser l’effet de la nouvelle procédure d’admission sur les hôpitaux qui ont participé au programme. Le résultat d’intérêt est la satisfaction des patients, satisfaction_score, et la variable de traitement est la procédure.
Une partie de did.json est

{
« hospital_id »: « 1 »,
« month »: « 7 »,
« records »: [
{
« procedure »: « New »,
« satisfaction_score »: « 4.1065269 »
}
]
}
Nous utilisons la fonction API dans un script Python, did.py, pour interagir avec Stata. Voici quelques points forts du code

# Configurer Stata à partir de Python
import stata_setup
stata_setup.config(“C:/Program Files/Stata17”, “se”)
# Importez le fichier json dans un dataframe Python
avec open(« did.json ») comme json_file:
data = json.load(json_file)
data = json_normalize(data, ‘records’, [‘hospital_id’, ‘month’])
# Charger le dataframe Python dans Stata
from pystata import stata
stata.pdataframe_to_data(data, True)
# Exécuter des commandes Stata en Python
stata.run(« ‘
didregress (satisfaction_score) (procédure), ///
group(hospital_id) time(month)
”’, echo=True)
# Charger les résultats enregistrés dans Stata vers Python
r = stata.get_return()[‘r(table)’]
# Utilisez-les en 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]))
# Générer un graphique Stata en Python
stata.run(“estat trendplots”, echo=True)
stata.run(“graph export did.svg, replace”, quietly=True)

Exécuter did.py dans Spyder

Ici, nous exécutons did.py, qui a été créé dans la section ci-dessus, dans Spyder.

L’ensemble de l’analyse est réalisée sans quitter l’environnement Python. Et grâce aux fonctions API de Stata, les données et les résultats circulent de manière transparente entre Python et Stata.

Exécuter did.py dans le shell Python

Le script peut facilement être exécuté dans n’importe quel environnement Python, comme l’invite de commande Windows, le terminal macOS ou le terminal Unix. Cette méthode utilise uniquement l’environnement shell et n’invoque aucun élément GUI de Stata.
python did.py > did.log
produit un fichier journal, did.log, contenant les résultats de didregress.
Cette méthode est utile pour automatiser des tâches sous Windows. Et le script ci-dessus peut être incorporé dans une tâche programmée régulièrement pour traiter les nouvelles données.
Pour un exemple détaillé de l’utilisation de Stata dans Jupyter Notebook ou dans tout autre environnement Python prenant en charge IPython, voir Jupyter Notebook avec Stata.