5 votos

Python vs R (vs Stata): la antigua batalla revisitada

Soy un usuario ávido de Python. Conozco Stata pero no soy un experto. No conozco R. Hago econometría (principalmente series temporales, pero también sección cruzada y paneles), estadísticas, y parece que Python es suficiente para satisfacer mis necesidades.

Sé que los economistas (al menos los tradicionales) suelen usar principalmente Stata y los estadísticos principalmente R.

Leo aquí y allá que 1) las bibliotecas de R son superiores a las de Python, y 2) cuando se trata de visualización nada puede superar al ggplot de R.

Mis preguntas son:

a) ¿Cuáles son ejemplos de análisis econométricos/estadísticos que se pueden hacer fácilmente en R pero no (tan fácilmente o en absoluto) en Python?

b) ¿Es realmente superior la visualización en R a Python? ¿En qué sentido: menos codificación, facilidad de codificación, mayor intuición o calidad de la salida final?

c) ¿Dónde situarías a Stata en esta comparación?

7voto

Matthias Benkard Puntos 11264

Utilizo los tres programas.

Python puede hacer todo lo que R puede hacer y R puede hacer todo lo que hace Python, pero debo decir que R es superior a Python cuando se trata de los paquetes. Por esa razón, para la mayoría de análisis econométricos suelo preferir R. También me resulta más fácil producir gráficos estándar de estadísticas con R (aunque para mapas prefiero Python).

Sin embargo, Python es mucho mejor para web-scraping, análisis numérico y análisis de sentimientos de texto (aunque R también tiene buenos paquetes para eso). Además, prefiero usar Python cuando necesito configurar mi propio programa, ya que programar en Python es más natural (si eso tiene sentido) que en R, a menos que el programa se pueda construir fácilmente a partir de funciones predefinidas de varios paquetes.

Siempre recomiendo a las personas a mi alrededor que aprendan tanto Python como R: la diferencia entre ellos no es tan grande y con R realmente no necesitas invertir demasiado en habilidades de programación, solo lo básico y luego usar paquetes.

Además, los Cuadernos Jupyter que pueden alojar tanto R como Python hacen que sea más fácil usarlos.

Cuando se trata de Stata, lo uso solo con fines educativos (imparto tutoriales econométricos en la universidad). Para ser honesto, no me gusta Stata por varias razones:

  1. Stata no es un software gratuito y no creo que el precio esté justificado dado que es un producto inferior en comparación con programas gratuitos como R y Python. Si lo puedes conseguir de forma gratuita en la universidad, probablemente no te importe, pero aún así es algo a tener en cuenta.

  2. Stata es un programa, no un lenguaje, por lo que si deseas crear una nueva función compleja debes obtener y aprender Mata por separado (el lenguaje de programación de Stata).

  3. Stata tiene algunas limitaciones serias en los tamaños de las matrices, incluso en la edición más cara el tamaño max de mat es 11000, lo que es un límite serio cuando trabajas con datos de panel y debes ejecutar modelos iterativos con un gran número de variables. Te verás obligado a menudo a ejecutar, por ejemplo, pruebas de heterocedasticidad de panel LR en submuestras aleatorias incluso con la edición más cara.

  4. Crear gráficos hermosos en Stata es casi imposible, No me malinterpretes, puedes hacer algunos gráficos decentes en Stata, pero palidece en comparación con lo que puedes hacer con Python o R.

  5. Stata es torpe con el análisis de series temporales. Si buscas un programa fácil de usar para el análisis de series temporales, sería EViews. Por ejemplo, Stata no puede manejar si tienes cuartos que están expresados en formato de fecha, pensará que tienes lagunas en tu serie de tiempo y no te permitirá ejecutar comandos básicos de series temporales hasta que crees una nueva variable de series temporales. Además, la oferta de modelos de series temporales es bastante baja y programar tu propio modelo es doloroso.

  6. Aunque técnicamente es posible hacer web scraping o análisis numérico en Stata, es un infierno; si lo necesitas para tu trabajo, no lo uses.

Sin embargo, Stata también tiene algunas ventajas:

  1. Es más fácil de usar que R o Python e incluso se puede utilizar sin programar a través de la interfaz (por eso lo usamos para tutoriales para estudiantes como el primer programa que ven para no sentirse abrumados).

  2. Hacer ajustes en los conjuntos de datos, crear variables dummy, etc., es más fácil en comparación con Python o R, pero principalmente porque en Python y R puedes tener varios tipos de datos: listas, marcos de datos, etc.

  3. Con la compra de Stata obtienes acceso a los foros de Stata, es algo similar a Stack Exchange, pero en realidad pagan a profesionales para darte respuestas allí y a menudo, además del soporte, puedes obtener consejos muy buenos incluso sobre econometría, y generalmente obtendrás consejos muy rápidos.

Personalmente, no usaría Stata para mi propio trabajo científico. Python y R son superiores en todos los aspectos a Stata, pero es un programa muy bueno para comenzar para los estudiantes.

2 votos

Estoy de acuerdo con todo lo mencionado aquí. Añadiría que una buena razón para utilizar R es el IDE RStudio. Python tiene varios IDES, pero ninguno tan bien diseñado, en mi experiencia (actualmente uso Spyder y Visual Studio). Si quieres aprender un lenguaje para el mercado laboral, entonces Python es la elección obvia. Por último, diré que a menudo si quieres replicar el trabajo de econometría aplicada de otra persona, es más probable que necesites R o Matlab que Python. Recientemente he estado probando con Julia y también la recomendaría.

2voto

user40246 Puntos 46

Utilizo Stata y Python intensamente. He experimentado con R, pero no pretendo conocerlo lo suficiente como para comentar al respecto. Stata y Python se complementan muy bien y soy un gran fanático de ambos. Puedes ejecutar código Python en Stata y Stata desde Python. La clave es que Stata está diseñado específicamente para la gestión de datos y regresiones, se centra en la inferencia causal, y todos sus comandos están mantenidos. Python puede hacer mucho más, pero no es tan bueno si tu enfoque es la inferencia causal. Para ambos, realmente tienes que ponerte a aprender el lenguaje para que sea práctico.

Python

  • Gratis
  • Lenguaje orientado a objetos. Si estás acostumbrado y entiendes las clases, te da un gran poder.
  • Puedes hacer mucho más con Python. Lo uso principalmente para aprendizaje automático, manipulación SIG (geopandas/folium), construcción de sitios interactivos de análisis (Flask/Django), manejo de solicitudes de API, web scraping y trabajar con bases de datos (SQL Alchemy).
  • La escritura de funciones en Python es ridículamente intuitiva.
  • Sin GUI.
  • Hay muchos ejemplos y tutoriales web.
  • La documentación de los paquetes varía mucho.
  • Tienes que recordar los nombres de cada paquete que quieras usar.
  • Tienes que preocuparte por la compatibilidad de paquetes y versiones. El lenguaje no es compatible con versiones anteriores. Todo el entorno necesita estar alineado perfectamente.
  • No hay GUI o menús desplegables (una espada de doble filo).
  • La capacidad de manejar múltiples dataframes, variables, listas, etc.
  • Mejor capacidad para manejar múltiples dataframes, variables, listas, etc.
  • Admite muchas más estructuras de datos (JSON, GeoJSON, etc.).
  • Mucho mejor para aprendizaje automático.
  • No tan bueno para inferencia causal y errores estándar. Para ser justos, el paquete principal para eso, statsmodels, ha estado mejorando. Pero la mayoría de la gente aprende a hacer regresiones en Scikit learn, que ni siquiera te da errores estándar.
  • Muchos paquetes de visualización. Seaborn es bastante impresionante, pero las visualizaciones interactivas como cufflinks, plotly, etc. realmente destacan y se pueden cargar en cualquier sitio web.
  • Es un lenguaje de producción. Significa que puedo configurar un servidor con Python instalado y hacer que reciba solicitudes (a través de un sitio web, API) y ejecute trabajos continuamente según sea necesario.
  • Muchos IDE que pueden ayudar con la codificación. La mayoría de la gente lo aprende en Juyter Notebooks, pero si realmente quieres usar Python eventualmente optarás por algo como Spyder, Atom o VS code.

STATA

  • No es gratis
  • Programación funcional. Sigue una estructura gramatical. Una vez que aprendes tus verbos clave (comandos), se vuelve muy intuitivo, pero debes invertir el tiempo necesario para aprender el lenguaje.
  • Es mejor para la gestión de datos en tablas. Conozco a algunos analistas nativos de Python que aprendieron Stata a fondo y ahora realizan la mayor parte de la administración de datos en Stata y cambian a Python para lo que Python hace mejor.
  • Tiene una GUI. Puedes usar un menú desplegable para encontrar lo que deseas hacer y te imprimirá el código. Es una ventaja y desventaja, ya que permite a las personas usar Stata sin realmente aprender a programar.
  • Mejor capacidad para navegar por los datos.
  • Es compatible con versiones anteriores. No necesitas preocuparte por la versión, comandos obsoletos o si dos paquetes funcionarán juntos.
  • No necesitas recordar ni cargar paquetes. Si escribes un comando, Stata carga el código.
  • El código tiende a ser más conciso en Stata, que tiene muchas funciones auxiliares integradas. Cualquier cosa que escriba en Python, puedo escribirla con la mitad o un tercio de las líneas en Stata.
  • Es compatible (versus exclusivamente escrito por usuarios). Esto significa que tienes documentación estandarizada, ecuaciones y citas. La documentación en lenguajes escritos por usuarios puede variar mucho dependiendo del paquete y rara vez incluye ecuaciones y citas. Sin embargo, el documento está en el programa o en una serie de volúmenes de PDF muy extensos (pero buscables) que vienen con él.
  • Sorprendentemente, la documentación web es pobre y hay menos tutoriales en línea.
  • Es el lenguaje por defecto si te enfocas en la inferencia causal y deseas estar seguro de que tus errores estándar son correctos. Para regresión panel, nada de lo que he probado supera a Stata. En contraste, en Python, algunos de los paquetes de ciencia de datos más comunes y populares, scikit learn y keras, no producen errores estándar porque se centran en la predicción.
  • La escritura de funciones (programas) es menos intuitiva y más engorrosa. Una vez que la aprendes bien, sin embargo, puedes escribir comandos (funciones) de usuario muy poderosos en Stata. Si son buenos, a menudo se publican en el Stata Journal y eventualmente forman parte del código base.
  • Es más engorroso al tratar con varios conjuntos de datos (dataframes), variables y matrices.
  • Los gráficos son fáciles, pero las opciones predeterminadas son muy básicas. Puedes escribir tu propio esquema para que los visuales destaquen, pero pocas personas lo hacen.
  • Muy buena capacidad para producir informes automatizados en Word, PDF y Excel.
  • El aprendizaje automático no ha sido completamente incorporado. En concreto, actualmente carece de métodos de conjunto (Random Forest Regressors, XGBoost) y redes neuronales.
  • No es un lenguaje de producción, lo que significa que no puedo configurar un servidor con Stata y usarlo para recibir solicitudes y producir análisis/informes. Si solo lo estás utilizando dentro de una organización, está bien, pero si necesitas que el análisis interactúe con un sitio web, buena suerte (hay soluciones alternativas, pero es una molestia).

1voto

Arjun Puntos 24

Calificaría mi experiencia: Stata 9/10, Python 7/10, R 3/10

en a) Hay muchos enfoques econométricos específicos para un cierto campo para los cuales se han desarrollado paquetes para R y Stata, pero no (aún) para Python. Un ejemplo es el enfoque de Selección de Heckman en Economía Laboral, que tuve que hacer yo mismo en Python. Hay numerosos ejemplos adicionales.

en b) Posiblemente, ggplot es la mejor combinación en términos de flexibilidad e intuición. Matplotlib en python es bastante complicado, hago bokeh tan a menudo como sea posible.

en c) En mi opinión, Stata supera a los otros dos en términos de facilidad de codificación. Algo como un gráfico de barras con dos categorías anidadas se puede hacer extremadamente rápido e intuitivamente. Sin embargo, la salida de Stata en su mayoría está limitada a gráficos de publicación. Entonces, la calidad de la salida es inferior. Y el manejo de datos antes de poder ponerlos en un gráfico también es probable que sea más doloroso en Stata (solo un conjunto de datos) en comparación con los otros dos (varios marcos de datos paralelos).

1voto

En mi experiencia, creo que Python es mejor para econometría que R y Stata por las siguientes razones:

a) En aplicaciones reales, obtener y transformar datos es el 60% del trabajo. Para estas tareas, Python es mejor.

b) Para seleccionar el mejor modelo y características, es necesario usar bucles. Los bucles en R son difíciles pero en Python son más fáciles de usar.

c) La programación orientada a objetos es más fácil en Python. Esto significa que podemos desarrollar nuestros propios objetos y bibliotecas más fácilmente que en R.

d) Python es una navaja suiza. Se puede utilizar para econometría, para web scraping, machine learning, ETL, finanzas cuantitativas, entre otras aplicaciones.

Si quieres ejemplos de Python aplicado a econometría, puedes consultar este libro https://www.amazon.com/dp/B08KJ1322G que tiene varios ejemplos de Python aplicados a econometría.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X