5 votos

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

Soy un ávido usuario de Python. Sé utilizar Stata pero no soy un experto. No conozco R. Yo hago econometría (principalmente series temporales, pero también de sección transversal y panel), y estadística, y Python parece ser suficiente para satisfacer mis necesidades.

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

Leo aquí y allá que 1) las librerías de R son superiores a las de Python, y 2) cuando se trata de visualización nada supera a ggplot de R.

Mis preguntas son:

a) ¿Cuáles son ejemplos de análisis económicos/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 programación, facilidad de programación, más intuitivo, o la calidad de la salida final?

c) ¿Dónde colocarí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 los análisis econométricos, suelo recurrir a R. También encuentro más fácil producir gráficos estándar de estadísticas agradables con R (pero para mapas prefiero Python).

Sin embargo, Python es mucho mejor para el web scraping, el análisis numérico y el análisis de texto de sentimientos (aunque R también tiene algunos 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 algún sentido) que en R, a menos que el programa se pueda construir fácilmente a partir de funciones listas 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 mucho en habilidades de programación, solo lo básico y luego usar paquetes.

Además, los cuadernos Jupyter que pueden acomodar tanto R como Python hacen que usar ambos sea más fácil.

En cuanto a Stata, solo lo uso con fines educativos (enseño 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. Aunque es posible obtenerlo de forma gratuita en la universidad, probablemente no te importe, pero sigue siendo 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 serias limitaciones en los tamaños de matrices, incluso en la edición más cara el tamaño máximo de matriz es de 11000, lo cual es un límite serio cuando trabajas con datos de panel y debes ejecutar algún modelo iterativo con un gran número de variables. Te verás obligado a menudo a ejecutar, por ejemplo, pruebas de heterocedasticidad en paneles con submuestras aleatorias, incluso con la edición más cara.

  4. Crear gráficos bonitos 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 trimestres expresados en formato de fecha, pensará que tienes lagunas en tu serie temporal 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 limitada y programar los tuyos propios es doloroso.

  6. Aunque técnicamente es posible hacer web scraping o análisis numérico en Stata, es un infierno; si necesitas eso 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 su interfaz (por eso lo usamos para tutoriales para estudiantes como el primer programa que ven para que no se sientan abrumados).

  2. Hacer algunos ajustes a los conjuntos de datos, crear variables ficticias, etc., es más fácil en comparación con Python o R, pero eso es principalmente porque en Python y R puedes tener varios tipos de datos, listas, data frames, etc.

  3. Con la compra de Stata, obtienes acceso a los foros de Stata, algo así como stack exchange pero donde realmente pagan a profesionales para darte respuestas y a menudo, además de soporte, puedes recibir muy buenos consejos incluso sobre econometría, y generalmente recibirás consejos rápidamente.

Personalmente, no usaría Stata para mi trabajo científico. Python y R son superiores en cada aspecto a Stata, pero es un buen programa inicial para estudiantes.

2 votos

Estoy de acuerdo con todo lo que se dice aquí. Añadiría que una buena razón para utilizar R es el IDE de RStudio. Python tiene varios IDEs, pero ninguno está 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 experimentando con Julia y también la recomendaría.

2voto

user40246 Puntos 46

Uso mucho Stata y Python. He experimentado con R, pero no pretenderé saberlo lo suficientemente bien como para comentar sobre ello. Stata y Python se complementan muy bien y soy gran admirador de ambos. Puedes correr código de Python en Stata y Stata desde Python. La diferencia clave es que Stata está hecho específicamente para gestión y regresiones de datos, se enfoca en la inferencia causal, y todos sus comandos están mantenidos. Python puede hacer muchas más cosas pero no es tan bueno si tu enfoque es la inferencia causal. Para ambos, realmente tienes que ponerte las pilas y 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 utilizo principalmente para aprendizaje automático, manipulación de SIG (geopandas/folium), construcción de sitios de análisis interactivos (Flask/Django), manejo de solicitudes de API, web-scrapping, y trabajo con bases de datos (SQL Alchemy).
  • Escribir funciones en Python es ridículamente intuitivo.
  • Sin GUI.
  • Muchísimos ejemplos y tutoriales web
  • La documentación de los paquetes varía bastante ampliamente.
  • Tienes que recordar los nombres de cada paquete que quieras utilizar.
  • Tienes que preocuparte por la compatibilidad de paquetes y versiones. El lenguaje no es compatible con versiones anteriores. Todo el entorno necesita alinearse perfectamente.
  • Sin GUI o menús desplegables (arma de doble filo)
  • La capacidad de manejar múltiples marcos de datos, variables, listas, etc.
  • Mejor capacidad para manejar múltiples marcos de datos, variables, listas, etc.
  • Soporta 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. Siendo justos, el paquete principal para esto, statsmodels, ha avanzado. 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 impresionante, pero las visuales interactivas cufflinks, plotly, etc. realmente resaltan y se pueden cargar en cualquier sitio web.
  • Es un lenguaje de producción. Significa que puedo montar un servidor con Python instalado y hacer que reciba solicitudes (a través de un sitio web, API) y corra trabajos continuamente según sea necesario.
  • Muchos entornos de desarrollo integrado que pueden ayudar con la codificación. La mayoría de la gente lo aprende en Juyter Notebooks pero si realmente quieres usar Python acabarás utilizando 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 tienes que invertir tiempo en aprender el lenguaje.
  • Es mejor para la gestión de datos en tablas. He tenido algunos analistas nativos de Python que aprendieron Stata a la perfección y ahora hacen la mayor parte de la gestión de datos en Stata y cambian a Python para lo que Python hace mejor.
  • Tiene GUI. Puedes usar un menú desplegable para encontrar lo que quieres hacer y te imprimirá el código. Es una ventaja y una desventaja ya que permite a la gente usar Stata sin realmente aprender a codificar.
  • Mejor capacidad para explorar los datos.
  • Es compatible con versiones anteriores. No necesitas preocuparte por la versión, comandos obsoletos, o si los 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 en 1/2 o 1/3 de las líneas en Stata.
  • Es compatible (versus exclusivamente escrito por usuario). Esto significa que tienes documentación estandarizada y las ecuaciones y citas. La documentación en lenguajes escritos por usuario puede variar mucho dependiendo del paquete y rara vez incluye las ecuaciones y citas. Sin embargo, el documento está en el programa o en una serie de volúmenes PDF muy largos (pero buscables) que vienen con él.
  • Sorprendentemente mala documentación web y menos tutoriales en línea
  • Es el lenguaje por defecto si te enfocas en la inferencia causal y quieres asegurarte de que tus errores estándar sean correctos. Para regresiones de panel, nada de lo que he intentado 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.
  • Escribir funciones (programas) es menos intuitivo y más torpe. Una vez que lo aprendes bien, sin embargo, puedes escribir comandos de usuario (funciones) muy poderosos en Stata. Si son buenos, a menudo se publican en el Stata Journal y se convierten eventualmente en parte del código base.
  • Es más torpe al tratar con múltiples conjuntos de datos (marcos de datos), 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 resalten, pero poca gente lo hace.
  • Muy buena capacidad para producir informes automatizados en Word, PDF y Excel.
  • El aprendizaje automático no se ha incorporado completamente. Específicamente, actualmente le faltan métodos de conjunto (regresores de bosques aleatorios, XGBoost), y redes neuronales.
  • No es un lenguaje de producción, lo que significa que no puedo montar un servidor con Stata y usarlo para recibir solicitudes y producir análisis/informes. Si solo lo utilizas 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 un fastidio).

1voto

Arjun Puntos 24

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

a) Hay muchos enfoques econométricos específicos para un campo en particular para los cuales se han desarrollado paquetes para R y Stata, pero no (todavía) 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 otros ejemplos.

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

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 está principalmente limitada a gráficos de publicación. Por lo tanto, la calidad de la salida es inferior. Y el manejo de datos antes de poder ponerlos en un gráfico también es probablemente más doloroso en Stata (solo un conjunto de datos) comparado con los otros dos (múltiples marcos de datos paralelos).

1voto

En mi experiencia, creo que Python es mejor para la 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 con más facilidad que en R.

d) Python es como un cuchillo suizo. Se puede utilizar para econometría, web scraping, aprendizaje automático, ETL, finanzas cuantitativas, entre otras aplicaciones.

Si quieres ejemplos de Python aplicado a la econometría, puedes consultar este libro https://www.amazon.com/dp/B08KJ1322G que tiene varios ejemplos de Python aplicado a la 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