R

En la entrada anterior, Luis ha hablado de R (http://www.r-project.org/) como un gran lenguaje de programación para el análisis de datos.

Como varias personas (incluidos periodistas) me han preguntado sobre el tema, resumo aquí brevemente los argumentos a favor de R y porque emplear Excel, en general, para el trabajo empírico es mala idea.

1) R es un proyecto de código abierto. Cualquiera puede ir a la página web y bajarse R de manera gratuita. No solo eso, sino que uno puede analizar el código original, lo que permite identificar posibles bugs. No sería ni la primera ni la segunda vez que los programas comerciales tienen errores. En este blog, donde hemos tenido muchas dudas sobre la legislación actual de derechos de propiedad intelectual, R es la mejor prueba de que otras maneras de innovar son posibles (y mejores).

2) En RStudio uno tiene un IDE sencillo pero poderoso, que permite al usuario escribir código de manera eficiente.

3) Al ser un lenguaje de “scripts” permite una reproducción y documentación de actividades mucho más sencilla que programas de “pinchar” como Excel. Además, obliga a pensar.

4) De igual manera, al manejar “scripts” y tener una historia en memoria de todos los comandos empleados, es mucho más difícil cometer errores como el de R&R (personalmente creo que el problema de R&R fue que un momento pusieron nuevas celdas en la hoja de Excel por el motivo que fuera y Excel “decidió” cambiar la formula).

5) R tiene miles de paquetes (packages en inglés) que permiten extensiones de todo tipo.

6) Entre esos paquetes existen muchos de gráficos, como ggplot2, que permiten dibujar gráficos preciosos.

7) Al ser un proyecto de código abierto, han participado en el mismo estadísticos y científicos de primera línea, lo que ha generado una calidad del resultado mucho más alta que el que jamás hubiera podido conseguir una empresa comercial y la implementación de los más recientes métodos estadísticos, en especial en campos como data mining que ahora están explotando.

8) Existe una amplia comunidad de usuarios. Por ejemplo, yo todas las mañanas miro R-bloggers.com, pero de igual manera hay decenas de libros, cursos y demás medios para aprender a manejarlo, muchos de ellos gratuitos.

9) Es un lenguaje muy elegante: explícitamente orientado a objetos y con una fuerte estructura de programación funcional.

10) Excepto por algunas partes del diseño (como el tratamiento de las matrices), su sintaxis es intuitiva y más bonita que la de Matlab.

11) Los lenguajes estadísticos alternativos, como Stata, demuestran una edad considerable (Stata realmente de los 80 del siglo pasado), que los hace menos adecuados para enseñar a los nuevos estudiantes.

12) Varios de los paquetes existentes, como knitr, permiten la generación automática de informes en html o latex para distribución a terceros (si, Word es otra cosa horrible, Latex y un buen editor de texto -yo utilizo TextWrangler- son una mucho mejor alternativa).

13) Interactúa de manera sencilla con C++.

14) Es facilmente paralelizable, en especial en una GPU.

Todas estas razones me llevan a concluir que R es la mejor manera de efectuar análisis estadístico. Mientras que emplear Excel puede funcionar en unos cuantos casos, es jugar con la suerte y exponerse a riesgos innecesarios.

Concluyo con dos cosas. La primera es un ejemplo de R en acción, con este gráfico de los datos subyacentes en el análisis de R&R en R más una función de regresión de alisado.

Este gráfico demuestra que:

1) Una imagen vale siempre más que mil palabras y que, normalmente, siempre que se pueda hacer un gráfico es preferible a una tabla.

2) Que en los datos existe una pequeña correlación negativa entre deuda/PIB y crecimiento. Por supuesto ni es tan grande como en el análisis original de R&R ni esto implican ninguna causalidad.

La segunda son recomendaciones de un curso sencillito y libros (en order de más simple a más completo) para el que quiera aprender más:

1) R in Action. La página web del autor está muy bien para un tutorial.

2) R in a Nutshell.

3) R Graphics Cookbook.

4) The Art of R Programming.

5) The R Book.

Finalmente un libro sobre RStudio.

En todo caso, uno pone "R" en google y le saldrán miles de páginas web de todo tipo.

Pd 1). Para los que quieran mirar al futuro: Julia puede ser el nuevo estandard en 5 años. Un tutorial aquí.

Pd 2). No, no creo que Python sea mejor que R para análisis de datos.

Pd 3). (Nueva) se me olvidaba: R funciona fenomenal con Git y con Github. A mis estudiantes siempre les insisto en la importancia de emplear source control.

Hay 42 comentarios
  • Llevo utilizando R desde que me lo introdujeron en la carrera y se lo recomiendo a todo el que me escucha. Recientemente he empezado a utilizar los paquetes para generar automáticamente los informes en Latex y la verdad es que es muchísimo más eficiente que cualquier otro flujo de trabajo.

  • Varias cosas:
    - R es maravilloso, yo lo uso mucho para mi trabajo y te da una flexibilidad fenomenal, desde el tratamiento de datos de mala calidad, buscando algoritmos que te arreglen lo más posible hasta estimaciones bastante raras. Los gráficos son maravillosos, aunque a veces es complicado ajustar alguna tontería que en Excel lleva 3 segundos.
    - Como se dice, hay muchísimos nerds que usan R y que preguntan y dan respuestas en abierto. Cuando te quedas atascado pones "R How to... " y dentro de las 5 primeras entradas encontrarás la respuesta.
    - Pegas que he encontrado a R: Los datos de panel son muy, muy lentos y comen mucha máquina. Cosas que EViews hace en 10 segundos pueden tardar 1 hora en R. También para datos con microsegundos, se vuelve algo tarumba (floating numbers)
    - Excel. No comparto el desprecio que creo un poco snob (señalización). Aunque tiene muchas limitaciones, para el 95% del trabajo de gente fuera de la universidad es magnífico. Una cosa buena, es posible "tocar con las manos" los datos sin trabajar en abstracto como en R, lo que elimina un buen número de problemas tontos enseguida. Lo mejor es usarlo como un trabajo previo con una submuestra para comprobar que estás codificando bien en R.
    Una entrada sobre el tema de un amigo mío: http://www.sintetia.com/8-grandes-motivos-para-comenzar-a-utilizar-r/

  • Grandioso post; para guardar para siempre.

    Señor Villaverde, me da vd miedo. ¿No será vd un robot?

  • R está más orientado a la estadística, tiene estructuras de datos adecuadas, y permite un uso interactivo de forma cómoda. Python es similar, pero es un lenguaje de programación más general. Tiene módulos especializados para hacer cálculos numéricos con una sintaxis parecida a Matlab o Octave. El problema es que no permite manipular fácilmente conjuntos de datos de tipos no homogéneos (e.g. variables categóricas y numéricas en un mismo conjunto), lo cual es una limitación importante a la hora de hacer estadística.

  • En coursera casi todos (por no decir todos) los cursos de estadistica y data mining los imparten en R.

    Jesus, yo empece aprender Latex con el TexMaker y es una maravilla escribas textos cientificos o poesia. De todas formas, aunque algo he visto, puede ser mortal hacer un documento estilo Accenture con leones y elefantes a página completa y efectos rotulador jaja.
    El TextWrangler lo usas desde un mac no?

    Por cierto, las nuevas versiones estilo ubuntu de linux como el nadia mint son pura elegancia y sencillez con cero problemas...

    • 1) Latex lo empleo con TexShop (http://pages.uoregon.edu/koch/texshop/).

      2) TextWrangler lo empleo desde Mac, si, pero para editar archivos de texto sin nada especial.

      3) Como IDE para Fortran 2008 y C++ uso Eclipse (http://www.eclipse.org/). Eclipse tambien se puede integrar con R (http://www.walware.de/goto/statet).

      Si, tengo ganas de instalarme una de las nuevas versiones de Ubuntu (como diria Sheldon Cooper, mi version de Linux favorita 🙂 pero no he tenido mucho tiempo ultimamente. Una de las razones por las que utilizo Mac es porque puedo abrir una terminal en Unix (bueno, Darwin) y emplear Bash, que me hace las cosas mucho mas rapido que los botoncitos de las narices 🙂

    • Si se va a utilizar R, LaTeX, Fortran y C++, o cualquier subconjunto de ellos, conviene considerar al menos el instalar una distribución Linux (ver http://www.distrowatch.com), como Ubuntu o Kubuntu, y usar Emacs como interfaz único para todos ellos. Tiene su curva de aprendizaje, pero es, simplemente, imbatible. En todo caso Emacs no impide que se pueda usar simultáneamente Eclipse, Texmaker, Kile o cualquier otro entorno que guste más, dentro de ese sistema operativo.

      • Yo escribi mi tesis doctoral *y el codigo que la computo* en Emacs. Aquellos si que eran tiempos 🙂

      • Yo también recomiendo Emacs. Hay un modo llamado ESS (Emacs speaks statistics) que permite ejecutar R en un buffer y enviar bloques de código desde otro buffer. El único problema, como dices, es que la curva de aprendizaje. Sólo diré que el fichero de configuración es en Lisp.

  • "Todas estas razones me llevan a concluir que R es la mejor manera de efectuar análisis estadístico."

    Lo que pasa es que cuando miras ofertas de trabajo relacionadas con análisis de datos en empresas privadas, un montón, por no decir una gran mayoría, piden conocimientos de SAS. Mientras que es difícil ver alguna que pida R. ¿Por que ocurre esto cuando el primero es de pago y el segundo es gratuito? ¿Está el SAS mejor adaptado para su uso en empresas, mientras que R funciona mejor en la investigación académica ? ¿Hay una mejor disponibilidad de servicio técnico en caso de incidencias? ¿Se responsabiliza la empresa que hay detrás del programa en caso de algún fallo en el software que haga perder dinero al usuario? ¿O es que acaso los responsables de adquirir la licencia para usar SAS en las empresas no tuvieron en cuenta en su momento que hay software libre y no quieren ponerse en evidencia a ellos mismos incorporando ahora ese software, revelando así que lo que habían hecho hasta ese momento adquiriendo software de pago era tirar el dinero?

    • Esto es un tema que sale mucho en las discusiones de internet.

      Personalmente creo que es una combinacion de inercia en la empresa privada ("esto lo hemos hecho asi toda la vida") con la reticencia a admitir que hay cosas mejores y mas baratas pero con menos imagen de marca ("nadie ha sido despedido por comprar IBM").

      Estos dias Revolution Analytics http://www.revolutionanalytics.com/ y RStudio (http://www.rstudio.com/) te dan apoyo tecnico mucho mas barato que SAS.

      Con respecto a la "responsabilizacion" de la empresa: cuando compras software privado, firmas (o aceptas) un contrato donde basicamente renuncias a ser compensado si algo va mal con ese software. Buena suerte demando a SAS si no quieren solucionarte un problema o un error!

      Un buen post: http://www.r-bloggers.com/on-r-versus-sas/

      y sobre la popularidad relativa de cada uno: http://r4stats.com/articles/popularity/

    • SAS es un entorno muy extenso y muy antiguo, que no anticuado. Eso en sí mismo ya le da una ventaja. Otra, fundamental, es la conexión que desde muy pronto ha tenido con los sistemas de bases de datos que usan las empresas, y de ahí su éxito en el ámbito de las grandes empresas, que son las que manejan las mayores bases de datos. De ahí también su precio. El paquete R es una implementación, casí podíamos decir que tardía, del lenguaje S, originado en los Bell Labs en la década de los 60, me parece. R surgió al calor del movimiento de la Free Software Foundation, el código abierto y Linux como alternativa a la implementación comercial S-plus. No es más nuevo como lenguaje, pero sí como implementación. Sus extensiones (packages) son de una calidad conceptual de primera línea. Sin embargo, en mi opinión, empiezan a ser demasiados (+4000) y es difícil encontrar lo que quieres o, simplemente, saber si existe. En opinión de programadores informáticos, los paquetes de R no están optimizados desde un punto de vista computacional; esto significa que si R y SAS pueden hacer una misma cosa, generalmente los cálculos en SAS son más rápidos. Esto es una ventaja cuando la masa de datos es muy grande. Yo uso R, SAS es simplemente prohibitivo.

  • En Coursera hay un curso exigente para hacer una inmersión a R en cuatro semanas:

    "Computing for Data Analysis", (no sé cuándo es la siguiente iteración).

    Otros cursos de estadística también proveen de vídeos tutoriales más asequibles. De todas formas todos coinciden que "R has a steepy learning curve".

  • Vaya, se me borró el mensaje por haber fallado en el CAPTCHA. User friendly nivel Excel.
    Lo que puse era algo así
    Punto 15) En R o Matlab es más rápido descubrir porqué una instrucción ha fallado. El programa devuelve un mensaje específico de dónde está el error. Además se puede leer los archivos sobre los que hacemos llamadas para comprovar que nuestra instrucción es consistente.
    En Excel este feedback no está. Especialmente eso es grave en Solver, para escribir proyectos sencillos se puede intentar, pero para los grandes ya no; y es frustrante darse cuenta que nunca sabrás por qué tus comandos no funcionan, y tienes que empezar en Matlab.

  • Hice el curso de coursera de introducción a R https://www.coursera.org/course/compdata y me convenció plenamente. Creo que es esencial el tema de la reproducibilidad: en excel haces mil cosas "a mano" para adecentar los datos (uniformizar provincia 1 o Álava o ALAVA o ALAVA/ARABA...) que no dejan rastro y es más difícil detectar un error. En R tu programita crea una salida a partir de unos datos de entrada y se puede repetir el proceso pulsando una tecla cada vez que queremos añadir nuevos datos. La potencia de los gráficos de R también me sorprendió.

  • 16) sea cual sea el tipo de análisis que llevas a cabo, seguramente hay un investigador (¿asiatico?) que ha colgado en su web un paquete o el script que necesitas para implementarla

  • Enhorabuena por el excelente artículo sobre un herramienta informática poco conocida en el ámbito universitario y completamente desconocida en el ámbito empresarial. Pero estas son las grandezas y las miserias que conlleva el software libre.

    Tuve que hacer un trabajo en la entidad financiera donde trabajo y, aunque se trataba de un trabajo de minería de datos y no de análisis, valoré el uso de varios programas:

    Weka [http://www.cs.waikato.ac.nz/ml/weka/] de la universidad de Waikato,
    Rattle [http://rattle.togaware.com/] que es una interfase gráfica de R orientado a “data mining”

    pero la sorpresa me la llevé con
    Knime [http://www.knime.org/] desarrollado en la Universidad de Konstanz (Alemania).

    Al final, esta última fue la que elegí y no porque tuviera miedo al scripting en R sino por la curva de aprendizaje y los excelentes y rápidos resultados que me proporcionó.

    Saludos.

    • knime parece bien chulo! Gracias por la recomendacion

  • Suscribo los 14 puntos del post, pero con reservas en el último: paralelizable sí es, "fácilmente" es una cuestión subjetiva 🙂

    Mi (limitada) experiencia es que R funciona increíblemente bien siempre que todos tus datos quepan en memoria. Claro, la memoria hoy en día es barata, así que para un gran trozo del espacio total de problemas, siempre puedes poner unos pocos GB más en tu máquina y listos, y paralelizar en CPUs es _relativamente_ sencillo (aunque casi nunca transparente).

    Pero si tus datos no caben en RAM, estás más pillado. Hay paquetes que te permiten descargar parte a disco, y trabajar en memoria sólo con la porción que haga falta (por ejemplo, bigmemory o ff), pero a nada que quieras hacer algo rebuscado te encuentras con cuellos de botella. Y el procesado distribuido, aunque tiene ya posibilidades (por ejemplo RHadoop, si eres capaz de transformar tus análisis al paradigma Map/Reduce, te permite integrarte en arquitecturas Big Data) de momento sigue estando sólo al alcance de gurús.

    Vamos, que la curva de aprendizaje de R es significativa, pero la de aprendizaje de R Paralelo no es una curva, es una escalada 😉

    • En sistemas Unix el paquete 'multicore' funciona bien. Simplemente tienes que sustituir lapply() por mclapply() en el algoritmo que quieres paralelizar. Aún así puede no ser suficiente, igual que en el caso de no tener suficiente memoria... supongo que llega un punto en que necesitas un súper-ordenador.

  • Para los que habláis de LaTex, os recomiendo Lyx. Ofrece prácticamente todos los comandos de Latex de una forma intuitiva y una vez des con el formato que más te guste puedes crearte plantillas para ponerte a escribir directamente sin preocuparte de darle formato al documento.

    Respecto a R, creéis que es mejor que Matlab y Stata? Es que yo tengo los tres y R parece menos flexible (no soy un gran usuario de R, así que seguro que es una impresión equivocada). Si os tuvieseis que especializar en un software, cual elegiríais? Gracias

    • Mejor que Stata, si (a menos que lo unico que quieras es algo muy, muy sencillo, para lo que los menus de Stata te sirvan).

      Comparacion con matlab? Mas dificil. En UPenn, los estudiantes de primer año tienen que aprender los dos (Matlab y R). Si solo tienes tiempo para uno, yo diria que si las aplicaciones en mente son basicamente de estadistica/econometria, R, si son mas de modelos macro/IO/juegos, Matlab.

      • Matlab para el trabajo con matrices es bastante más fácil e intuitivo que R.

        Como anécdota graciosa de mi paso de excel a R fue descubrir que para hacer un histograma solo había que poner >hist() jaja desde ese momento me entraron ganas de imprimir el logo de excel y tirarle dardos 😀

  • Estupendo post.
    Utilizo R desde hace más de 5 años, y estoy encantado.
    Para informes, suelo utilizar knitr , bien para pasar a html o para latex. Un magnífico frontend para latex es lyx http://www.lyx.org/ en el qeu colabora el creador de knitr .

    Como miembro de la comunidad R Hispano, no puedo sino recomendar su página web http://r-es.org/Comunidad y la lista de correo de R en castellano r-help-es@r-project.org

    Yo he utilizado R para casi todo, ecuaciones estructurales, modelos mixtos, modelos lineales generalizados, modelos tobit, etc..
    Otra cosa. Alguna vez he tenido problemas con algún paquete y tengo que decir que , los autores de los paquetes contestan los mails rápidamente y dando soluciones..

    Saludos

  • Gracias por hablar de R.

    Me gustaría añadir algunos comentarios, como que existe una comunidad de usuarios en España muy activa que organiza conferencias (este año tendrá lugar la quinta), reuniones locales en Madrid y Barcelona, mantiene una lista de correo de ayuda específica,...

    Y estamos intentando que se haga un hueco en las empresas, la educación (sí, todavía se pagan muchas licencias de SPSS o SAS en la universidad), el llamado periodismo de datos, etc.

  • Yo llevo enseñando cursos de Econometría con R desde el año 98, es decir, cuando aún no estaba la versión 1.0 disponible. nunca me he arrepentido y mis alumnos me lo han agradecido (muy especialmene los de la Licenciatura en Estadística, obviamente). La precisión estadística está garantizada, y me permite preparar informes y transparencias con mucha comodidad (yo soy más de Sweave para la integración LateX). Al haber tantos paquetes disponibles siempre encuentras alguno (puede que más de uno, coomo es el caso que me ocupa para una clase que estoy preparando sobre selcción de carteas financieras) que te sirve para lo que necesitas. Hace unos años no era tan fácil y había que estar dispuesto a escribir más código. Dado que en el fondo es un lenguaje de programación orientado a objetos, no es difícil de programar. Y. como se ha señalado, si bien es algo lento en algunos aspectos, se puede ensamblar con algún otro lenguaje de programación.

    • Yo fui alumno suyo - macroeconometría - y sólo puedo agradecerle el esfuerzo que hizo durante el cuatrimestre. Sinceramente, de las asignaturas más divertidas que cursé. Un abrazo

  • Por cierto, si queréis un interfaz decente para R, podéis usar Rstudio (www.rstudio.com). Para los usuario de Mac no es imprescindible, pues el interfaz original ya es suficientemente bueno. Y si usáis Emacs, hay una aplicación llamada ESS (yo sigo usando Emacs y lo combino con auctex para escribir LateX).

  • Por favor, no confundamos a los lectores cautos ( y desprevenidos) o aquellos que están empezando en el mundo académico o la investigación empírica en economía.
    Puede ser posible que R sea un magnifico software y ampliamente utilizado por estadísticos. Pero en economía el software que hoy en día lleva la delantera es Stata y su lenguaje de programación matricial MATA.
    YA NO necesitas usar R y MATLAB, ahora con Stata (MATA) lo tienes todo. Y con un buen editor de LATEX (yo utilizo TexnicCenter) ya tienes las herramientas básicas para hacer investigación aplicada en ECONOMÍA … La desventaja y principal critica a Stata radica en que no es gratis … pero no habíais quedado en que NADA ES GRATIS!
    PD. Los felicito por el BLOG lo leo todos los días.
    😉

    • Sinceramente, no estoy de acuerdo y yo no recomendaria a los lectores que no conozcan Stata que no empiecen con el. Es un lenguaje con un diseño al que se le notan mucho los años, que no enfatiza lo que creo que tiene que enfatizar un lenguaje moderno (orientacion a objetos, funcionalidad, polimorfismos) y MATA, la verdad, es que no va muy lejos como lenguaje.

      Mi sensacion es que muchos de los usuarios de Stata han transicionado hacia R en los ultimos años y que la tendencia continuara (solo hace falta ver la cantidad de blogs dedicados a R versus los dedicados a Stata). En todo caso, es verdad que para datos de panel gigantes Stata puede ser un poco mejor, pero me parece un argumento que queda dominado por todos los otros argumentos en favor de R.

  • Como nadie se anima, y sin que sirva de precedente, seré yo el que rompa una lanza en favor de las hojas de cálculo. Para cierto tipo de análisis, sobre todo descriptivo, se pueden hacer cosas muy decentes y en un tiempo récord, cosa que algunos entornos profesionales es la clave.

    Ocurre también que las hojas de cálculo suelen ser parte de un paquete de oficina que incluye un procesador de textos. Si tengo que rendir un informe en menos de 30 minutos y que requiere un par de gráficos, esta combinación es infinitamente más rápida que ninguna otra.

    Por si fuera poco, en ciertos entornos profesionales el 99 por ciento de tus colegas sólo dominan Excel y Word -- y ni siquiera eso -- así que andar enviando documentos de LaTeX por ahí no es una opción. Y al que no me crea, un día le cuento lo que me costó sólo obtener el permiso para que me instalaran R...

  • R es terriblemente paralelizable, de hecho hay una versión optimizada para Big Data, Hadoop y similares, que es gratis para Research. Se llama RevolutionR y clusteriza muy bien.

    Saludos

  • R es un lenguaje excepcional. Pero, conociendo bien Excel y sus limitaciones, y uno puede apañarse para realizar pequeños cálculos/tests en proyectos "pequeños". No conozco muy bien el caso de R&R, pero a mí me huele a que R&R no sabían utilizar R, ni Excel.

  • Una cita de Virginia Wolf que me han contado esta mañana:

    "In that flash of darkness he heard people saying--he was a failure--that R was beyond him. He would never reach R."

  • La verdad es que no la he usado, pero la librería "pandas" de Python incorpora al parecer nuestro querido data.frame de R. Teniendo en cuenta lo natural que es la orientación a objetos en Python, quizás pueda seguir ganando terreno. Y Julia la verdad es que promete, sí. La sintaxis parece (todavía) más sencilla que la de R y los tiempos de ejecución...

  • El R le pinta la cara a cualquier programa de código cerrado. Tiene multiples paquetes que te facilitan enormemente la programación y además el "soporte técnico" que te dan los mismos usuarios es infinitamente mayor que el que te pueda dar una compañía de pago (ie Matlab, Microsoft, Stata, and so on!)... No lo cambio por ninguno. Yo estoy metiendome con temas varipintos, como social network analysis y big-data (aparte de mis temas de tesis) y va como un rayo... Aguante el R!

Los comentarios están cerrados.