Puedes comprar el libro en: https://www.leanpub.com/analisis_exploratorio_datos_con_R

Capítulo 1 Preliminares


1.1 Objetivo y mecánica del curso


  • Como sabéis es un curso de introducción a R.

  • Creemos que al final seréis capaces de utilizar R para cargar datos, arreglarlos, hacer gráficos, tablas e informes reproducibles en Rmarkdown.

  • Intentaremos que el curso sea fundamentalmente práctico, PERO se necesita un mínimo de conocimiento de como funcionan algunas cosas, además, hay que conocer un poco la jerga que se utiliza en la comunidad R.

  • En lugar de presentar todos los pormenores de R de manera lineal, se irán presentando distintos aspectos de R conforme se vayan necesitando; es decir, no vamos a presentar R como un lenguaje de programación sino como una herramienta para hacer análisis estadísticos.

  • En la carpeta del curso tenéis todos los materiales: tutoriales, algunos datos, etc….



1.2 Preliminares


  • Curso de introducción a R.

  • En el curso se trabajará con R a través de RStudio y utilizando Rprojects.

  • Se presentarán las principales funciones de R-base, pero (en general) se priorizará el uso de un conjunto de paquetes englobados bajo el nombre genérico de tidyverse.

  • Se enfatizará la importancia de la investigación reproducible, para lo cual los informes de resultados se generarán con Rmarkdown



1.3 Primeras ideas


En la introducción han aparecido unas cuantas palabras nuevas. Así todas ellas empiezan con la letra R:

  • R vs. RStudio

  • R-base vs. packages vs. tidyverse

  • Reproducible Research: Rprojects y Rmarkdown

Antes de empezar el curso tenemos que tener una idea de qué significan. Vamos a ello:



1.4 R

1.4.0.1 ¿Qué es R?

  • R es un lenguaje de programación y un entorno para el análisis estadístico y gráfico.

  • R es parte del sistema GNU y se distribuye bajo la licencia GNU GPL; es decir, es software libre y gratuito.

  • Es multiplataforma: está disponible para Windows, Macintosh y GNU/Linux.

  • R fue inicialmente creado por R. Ihaka y R.Gentleman de la Universidad de Auckland en 1993, pero actualmente, el entorno R es el resultado de la colaboración de toda una comunidad de usuarios.

  • A partir de 1997 el desarrollo del código fuente (o base-R) de R es llevado por un grupo de programadores conocido como “The R-core team”.

  • La página web oficial de R se llama: The R Project for Statistical Computing. Allí podrás encontrar toda la información oficial acerca de R.

  • Puedes ver la documentación oficial de R con help.start(). ¿Hace falta leerla? No


1.4.0.2 ¿Por qué R?

  • Creemos que es el mejor programa para hacer análisis de datos. Si no nos acabas de creer, o quieres leer algo sobre la importancia y capacidades de R puedes hacerlo aquí o aquí, o aquí

  • R es ampliamente extensible mediante funciones y paquetes

  • R forma parte de un proyecto colaborativo y abierto. Sus usuarios pueden publicar paquetes que extienden su configuración básica. Existe un repositorio oficial de paquetes: Comprehensive R Archive Network o CRAN

  • R (junto con sus paquetes) puede implementar una gran variedad de técnicas estadísticas y gráficas.

  • La comunidad R es muy prolífica y colaborativa: R-bloggers

  • Precisamente estos 2 aspectos (abundancia de paquetes y comunidad de usuarios) son claves en el éxito de R

  • Piensa que R se usa hasta para salvar a los bañistas en las playas de Chicago. No sabía que Chicago tuviera playas!!! Ahora en serio, R es cada vez más usado, no sólo en la universidad y la docencia, sino también en el mundo de la empresa, puedes verlo aquí o aquí. Una de las conferencias más importantes sobre el uso comercial de R es The Enterprise Applications of the R Language Conference (EARL).

  • Entre las empresas que usan R están: Google, Facebook, Twitter, Microsoft, IBM, Uber, Ford, Airbnb, American Express, Barclays Bank, Bank of AmericaAquí puedes encontrar un listado más completo.

1.4.0.3 Instalación de R

  • Sólo tienes que ir a CRAN y descargar la distribución de R adecuada para tu sistema operativo



1.5 RStudio

1.5.0.1 ¿Qué es RStudio?

  • La interfaz de usuario (GUI, Graphical User Interface) de R no es muy amigable ni versátil, así que interactuaremos con R a través de RStudio.

  • RStudio es un programa que nos permitirá interactuar con R de forma más amigable, además de facilitar muchas de las tareas de programación y análisis de datos en R; es decir, RStudio es una GUI (Graphical User Interface)

  • En términos más técnicos, RStudio es más que una GUI, es un entorno de desarrollo integrado para R, en inglés ‘integrated development environment’ o IDE.

  • El actual científico jefe de RStudio es Hadley Wickham. Wickham es uno de los más prolíficos desarrollador de paquetes para R y creador de un nuevo estilo de programar y analizar datos en R conocido como tidyverse. Muchos de los packages que utilizaremos en el curso han sido desarrollados por él.


1.5.0.2 Instalación de RStudio

  • La versión de escritorio de RStudio también es libre y gratuita. Se puede descargar aquí. Tienes que descargarte el ‘installer’ adecuado para tu sistema operativo.

  • Al abrir RStudio verás que tiene 4 paneles: la consola es lo más parecido a R y allí se pueden ejecutar instrucciones de R directamente. Para acostumbrase a R y RStudio lo mejor es la práctica, pero aquí teneis un fantástico libro.



1.6 R-base y Packages


  • Todas las funciones, datos y utilidades de R disponibles para ser utilizadas están almacenados en paquetes (packages en inglés).

  • Un paquete es simplemente un conjunto de funciones, datos y documentación; por ejemplo el paquete vars sirve para estimar modelos VAR.

  • Cuando abrimos RStudio, se cargan automáticamente 7 paquetes: son los paquetes de R-base. Puedes ver sus nombres tecleando en la consola loadedNamespaces()

  • Con los 7 packages de R-base se pueden hacer análisis estadísticos completos; sin embargo, la comunidad de usuarios de R publica constantemente nuevos paquetes que extienden los métodos y capacidades de R

  • La gran cantidad de paquetes disponibles es una de las claves del éxito de R. Ya aprenderemos a instalar paquetes.

  • Podemos ver los paquetes que tenemos instalados con library().

  • El repositorio oficial de packages de R está en The Comprehensive R Archive Network o CRAN

  • En enero de de 2017 se superaron los 10.000 pkgs en CRAN. Puedes ver un listado agrupado por temas aquí. Aunque quizás sea más útil para bucear entre los +10.000 packages este buscador de R-documentation

  • Puedes ver una lista con los packages más populares aquí

  • Si quieres ver una AWESOME lista de recursos de R pincha aquí

  • Para tener una idea de lo dinámica que es la comunidad R os recomendamos que durante las 2 semanas de duración del curso sigáis a R-bloggers en Twitter(@Rbloggers) o que visitéis Rweekly.



1.7 Reproducible Research


  • Investigación Reproducible (IR) o Reproducible Research (RR) en inglés.

  • Cada vez más se requiere que los estudios científicos sean reproducibles. Creemos que se convertirá en un futuro, posiblemente lejano, en el estándar

  • Hacer una investigación reproducible es COSTOSO; de hecho, hay cursos completos sobre el tema, por ejemplo éste, y muchos proyectos que tratan de promoverla; por ejemplo éste que pretende favorecer el uso de datos abiertos a través de R.

  • Afortunadamente, cada vez hay más herramientas que facilitan hacer la IR: Make, Git, Docker, Pandoc, Knitr, markdown ….

  • Hacer una investigación (completamente) reproducible no siempre es posible; OK, PERO al menos acercarse … un poco.

  • En el entorno R cada vez es más fácil acercarse al ideal de la IR.

  • IR no significa sólo proporcionar los datos originales. Como mínimo-mínimo se debería:

    • proporcionar los datos originales (obviamente documentar las fuentes)
    • todo el proceso a través de código (scripts)
    • documentar el proceso de trabajo
  • En concreto, en el curso usaremos RStudio para hacer análisis de datos. Gestionaremos los análisis a través de Rprojects y generaremos los informes y resultados del análisis con documentos en Rmarkdown.

  • Estos documentos .Rmd son reproducibles. En breve veremos que significa esto y sus utilidades tanto para la investigación como para la DOCENCIA

  • Un video de 1’44’’ que muestra una de las principales ventajas de la IR



1.7.1 Rprojects


  • Gestionar tus análisis utilizando Rprojects tiene ventajas: puedes gestionar varios proyectos a la vez y facilita el compartir tus análisis; es decir, favorece la RR.

  • Podemos pensar que un Rproject es una carpeta, pero es más que eso: cada Rproject tiene su propio directorio de trabajo, espacio de trabajo (environment), historial de instrucciones; además, permite crear una estructura de carpetas donde guardar los documentos asociados al proyecto en carpetas separadas (p.ej: una carpeta para datos, otra para imágenes, …).

  • Cuando abres un Rproject en RStudio ocurre lo siguiente:

  • Comienza un nuevo proceso de R

  • El directorio de trabajo se fija a la carpeta que contiene el Rproject.

  • Se restaura la sesión tal y como estaba la ultima vez que se cerró el proyecto (pestañas activas, objetos etc…)

  • Siempre que un proyecto requiera una estructura de subcarpetas, merece la pena gestionarlo a través de un Rproject.


1.7.1.1 Cuidado con los paths!!

  • Un gran inconveniente para conseguir informes (plenamente) reproducibles son los paths o rutas de ficheros. Si un programa necesita llamar a un fichero de datos (por ejemplo para cargar unos datos), tendrás que especificar la ruta y si alguien quiere ejecutar tus scripts en su ordenador deberá cambiar la ruta.

  • Trabajar con Rprojects permite solventar este problema, ya que el directorio de trabajo del Rproject coincide con la carpeta donde está alojado el Rproject y esto permite (ya lo veremos en el próximo tutorial) trabajar con rutas (o paths) relativas en lugar de absolutas. (!!)


  • En palabras de Jenny Bryan una de mis heRoínas y destacada miembro de la comunidad R, si empiezas tus scripts con setwd(), PLEASE STOP DOING THAT !! Ademas Jenny nos lo explica:

This makes your script very fragile, hard-wired to exactly one time and place. As soon as you rename or move directories, it breaks. Or maybe you get a new computer? Or maybe someone else needs to run your code?

  • Para Jenny la solución es usar el pkg here, y tiene razón, pero nosotros (de momento) sólo usaremos Rprojects (suficiente!!).



1.7.2 RMarkdown


  • Los documentos RMarkdown son ficheros con extensión .Rmd.

  • Si acabas utilizando R para hacer análisis estadísticos, los ficheros .Rmd te permitirán escribir muy-muy fácilmente informes, tutoriales y transparencias para presentaciones.

  • Estos ficheros .Rmd son (plenamente) reproducibles.

  • Lo veremos, pero en esos ficheros .Rmd se mezclan trozos de texto escritos en Markdown (narratives) y trozos con código R (chunks) para hacer análisis estadísticos.

  • Estos ficheros se procesan con un paquete de R llamado knitr desarrollado por Yihui Xie … y salen unos informes o transparencias fantásticas … en una gran variedad de formatos.

  • Con RStudio es muy fácil: solo hay que usar los menús desplegables de RStudio para crear un documento Rmarkdown, escribir lo que quieres contar y darle al botón Knitr y knitr tejerá el documento y lo transformará a …. pdf, word, html …




1.8 Recursos para aprender R

  • Si al final acabas utilizando R para tus análisis, seguramente acabarás utilizando Stack Overflow. Es una comunidad de programadores, en la que muchas veces resolverás las dudas que te puedan surgir en tu aprendizaje sobre R,





1.9 Bibliografía



1.10 Cuestiones de repaso



  1. ¿Cual es la diferencia entre R y RStudio?


  1. ¿Qué es un package? ¿Para qué sirven?


  1. ¿Qué es R-base o base-R?


  1. ¿Por qué utilizamos Rprojects?


  1. Haga una frase que tenga sentido con las palabras knitr, archivo, markdown, Rmd, Yihui Xie, package.


  • Nota: puedes ver las soluciones al final, PERO está prohibidísimo!!


1.11 Soluciones


Hey!! prohibido mirar las soluciones.



1.11.1 1. ¿Cual es la diferencia entre R y RStudio?

Bueno, en realidad hay muchaaas diferencias porque son dos programas de ordenador distintos, los dos son de código libre y gratuitos y los usamos juntos, PERO son 2 programas distintos!!! Pero bueno, podemos pensar que la principal diferencia es que R es quien realmente hace los cálculos, gráficos etc… y RStudio es un programa que nos permite usar R de forma más cómoda.


1.11.2 2. ¿Qué es un package? ¿Para que sirven?

Un package es un conjunto de funciones, datos y documentación que están agrupados en una carpeta.

Los packages sirven para algo; por ejemplo el package tabulizer sirve para hacer unas tablas muy chulas. El repositorio oficial de packages es CRAN. Los packages incluyen funciones para hacer algo (por ejemplo tablas), a lo mejor datos y documentación para enseñar como se utilizan las funciones


1.11.3 3. ¿Qué es R-base o base-R?

R-base en realidad el código fuente de R y un grupo de paquetes básicos (7) que se cargan siempre que se abre R. Con los paquetes de R-base ya se pueden hacer análisis estadísticos completos.


1.11.4 4. ¿Por qué utilizamos Rprojects?

Principalmente para no tener (demasiados) problemas con el working directory.

Además, facilita la reproducción de nuestros análisis, ya sea con otras personas o con nosotros mismos en el futuro, ya que al estar todo el proyecto encapsulado en una sola carpeta y estando el working directory en la misma carpeta, nuestros scripts funcionarán en el ordenador de otra persona y también en nuestro futuro ordenador.


1.11.5 5. Haga una frase que tenga sentido con las palabras knitr, archivo, markdown, Rmd, Yihui Xie, package, reproducible, pandoc

Por ejemplo: Yihui Xie es un programador que ha desarrollado el package knitr. Este package permite mezclar texto y análisis estadísticos hechos con R en archivos con extensión .Rmd. Esto favorece la investigación reproducible (RR). En los ficheros Rmarkdown, el texto debe estar escrito en Markdown. Cuando procesas los archivos .Rmd con knitr y pandoc puedes convertirlo fácilmente a diferentes formatos: html, pdf, word, ….

Esto parece muy complicado, pero en RStudio es fácil-fácil (lo veremos)