Este curso presenta un acercamiento a R con el objetivo de que aprendas a manejar datos y poder hacer representaciones visuales de la estadística.
En lugar de presentar los conceptos de R de manera lineal, iré 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.
Muchas de las infnormaciones que aquí se reflejan están extraidas del trabajo realizado por Iosu Paradinas y Orlando Joaqui-Barandica
R es un lenguaje de programación y un entorno para el análisis estadístico y gráfico.
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.
Podemos ver la documentación oficial de R con help.start(). ¿Hace falta leerla? No
Programa gratuito y muy potente para hacer análisis de datos.
No es R en si, sino su comunidad la que hace de R un programa tan potente.
Como consecuencia R (junto con sus paquetes) puede implementar una gran variedad de técnicas estadísticas y gráficas.
Entre las empresas que usan R están: Google, Facebook, Twitter, Microsoft, IBM, Uber, Ford, Airbnb,
Pues descargar R desde CRAN.R. Desde esta página web puedes descargar tanto R como RStudio :
Todas las funciones, datos y utilidades de R disponibles para ser utilizadas están almacenados en paquetes (PACKAGES en inglés).
Cuando abrimos RStudio, se cargan automáticamente 7 paquetes: son los paquetes de R-base. Podemos ver sus nombres tecleando en la consola loadedNamespaces()
Con los 7 packages de R-base se pueden hacer análisis estadísticos completos, pero hay miles de paquetes que podemos instalar de manera gratuita que nos permitirá extender las funcionalidades de R.
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
Para tener una idea de lo dinámica que es la comunidad R os recomiendo que sigáis el foro R-bloggers.
¿Qué es RStudio? La interfaz de usuario de R no es muy amigable por lo que lo más común es usar R a través de RStudio.
RStudio es un programa que nos facilitar trabajar con R.
En términos más técnicos, RStudio es más que una GUI (interfaz), es un entorno de desarrollo integrado para R, en inglés ‘integrated development environment’ o IDE.
Si abrimos RStudio vamos a ver algo parecido a lo que se muestra en la siguiente imagen:
Por defecto, la consola se encuentra en el panel inferior-izquierdo. ¿Vemos la pestaña que pone Console? Inmediatamente debajo aparece un texto informativo y, finalmente, el símbolo “>”. Aquí es donde R espera que le demos instrucciones. Para ejecutarlas y obtener el resultado pulsamos Enter.
El script es lo más parecido a un cuaderno de trabajo. Es en donde realizaráas la practica totalidad de las acciones en R.
Para crear un script nuevo seleccionamos la siguiente ruta de menús: File > New File > R script
En el script podemos escribir como si fuera un cuaderno, o también podemos copiar pedazos de código. Ahora, escribir o copiar de arriba las siguientes líneas y correr las diferentes líneas del script:
Para guardar el script:
El panel, llamémoslo, de entorno está compuesto de cuatro pestañas: Environment, History, Connections y Tutorial.
En el Environment se irán registrando los objetos que vayamos creando en la sesión de trabajo. También tenemos la opción de cargar y guardar una sesión de trabajo, importar datos y limpiar los objetos de la sesión. Estas opciones están accesibles a través de la cinta de opciones de la pestaña.
Este panel se encuentra en la parte inferior-derecha del escritorio de RStudio.
En este panel cabe destacar las siguientes pestañas, cada una con diferentes opciones:R está compuesto por un sistema base, pero para extender su funcionalidad es necesario instalar paquetes adicionales.
Podemos instalar paquetes de varias formas:
Utilizando la función install.packages(). El nombre del paquete que queremos instalar debe ir entre comillas.
En ocasiones, para nuestra sesión de trabajo necesitamos instalar varios paquetes.
Una vez instalado el paquete debemmos cargarlo.
Para ello, o bien en el menu anterior presionamos en los recuadros, bien
a través de una instruccion como esta:
Es indiscutible que, hoy en día, la mayoría de las representaciones
gráficas en R pasan por el package ggplot2.
Un gráfico realizado con ggplot2 presenta, al menos,
tres elementos:
aes() y se refieren
a:
geom_point (para puntos)geom_lines (para lineas)geom_histogram (para histograma)geom_boxplot (para boxplot)geom_bar (para barras)geom_smooth (líneas suavizadas)geom_polygons (para polígonos en un mapa)Ten en cuenta que no todos los tipos de datos admiten todos los objetos geométricos. Por tanto, para construir un gráfico con ggplot2 comenzamos con la siguiente estructura de código, usando + como nexo entre argumentos:
ggplot(datos, aes() ) + geom_tipo()
A partir de esta estructura básica puede mejorarse la presentación de los gráficos introduciendo, por ejemplo, características estéticas en los objetos geométricos, rotulando los gráficos, etc.
Otros elementos que conviene tener presente en un gráfico de ggplot2 son:
Para trabajar la apariencia del gráfico, ggplotnos
ofrecen multitud de colores. Los más habituales són estos:
Vamos a realizar algunos gráficos con ggplot2. Para
ello, cargamos la librería.
También cargaremos la base de datos. Para ello necesitaremos en
primer lugar la librería readxl
Para cargar la base de datos usaremos la siguiente instrucción:
En tu caso puedes usar:
Una foorma rápida de saber laas distintas variables de nuestra base de datos es a través de la instrucción names().
## [1] "Authors" "Author Full Names"
## [3] "Article Title" "Source Title"
## [5] "Abstract" "Times Cited, WoS Core"
## [7] "Times Cited, All Databases" "Publication Year"
## [9] "Volume" "Issue"
## [11] "Special Issue" "Start Page"
## [13] "End Page" "DOI Link"
## [15] "IA" "Estudiantes"
## [17] "N_Autores" "Cuantitativo"
En los ejemplos que siguen tratamos de ir introduciendo poco a poco distintos elementos y argumentos para mejorar la apariencia de los gráficos.
No confundas un histograma con un diagrama de barras. Un diagrama de barras da un valor para cada grupo de una variable categórica.
Veamos la distribución artículos en función del año. Para ello usamos
la instrucción geom_istogram().
## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.
En vuestro caso, podéis adaptar el código en función de las variables y de la base de datos que deseéis analizar.
Podemos añadir el nombre de los ejes con la instrucción
labs().
ggplot(ejemplo, aes(x = `Publication Year`)) +
geom_histogram() + labs(x = "Año de publicación", y = "Recuento")## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.
Los colores se pueden modificar fácilmente con la instrucción
fill (color de de relleno) y color (color del
borde).
ggplot(ejemplo, aes(x = `Publication Year`)) +
geom_histogram(fill = "blue", color = "red") + labs(x = "Año de publicación", y = "Recuento")## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.
Una de las opciones de histograma más importantes es bins, que controla
el número de contenedores en los que se divide la variable numérica (es
decir, el número de barras en el gráfico). El valor predeterminado es
30, pero es útil probar números cada vez más pequeños para tener una
mejor impresión de la forma de la distribución. Fíjate que también añado
un título a la figura y un subtítulo.
ggplot(ejemplo, aes(x = `Publication Year`)) +
geom_histogram(fill = "blue", color = "red", bins = 10) +
labs(x = "Año de publicación", y = "Recuento", title = "Publicaciones por año", subtitle = "bins = 10")
Con el histrogma también podemos realizar comparaciones.Veamos que pasa
con los estudiantes.
ggplot(ejemplo, aes(x = `Publication Year`)) +
geom_histogram(fill = "blue", color = "red", bins = 15) +
facet_wrap(~ Estudiantes) +
labs(x = "Año de publicación", y = "Recuento", title = "Publicaciones por año", subtitle = "bins = 15")O, en vez de verlo en dos gráficos, usar líineas que nos permitan ver la tendencia.
ggplot(ejemplo, aes(x = `Publication Year`)) +
geom_histogram(bins = 15, fill = "grey", color = "white") +
geom_freqpoly(aes(color = Estudiantes), bins = 15, linewidth = 1) +
labs( x = "Año de publicación", y = "Recuento",
title = "Publicaciones por año",
subtitle = "Publicaciones sobre estudiantes")Los diagramas de barras (geom_bar) nos permiten ver la frecuencia de una o más variables. Por ejemplo, si queremos saber cuantos artículos usaron una metodología cuantitativa podemos usar la siguiente función.
En vuestro caso, podéis adaptar el código en función de las variables y de la base de datos que deseéis analizar.
Al igual que antes, podemos mejorar la apariencia del gráfico.
ggplot(ejemplo, aes(x = `Cuantitativo`)) +
geom_bar(fill = "darkmagenta", color = "black") +
labs(x = "Artículos que usan una metodología cuantitativa", y = "Recuento", title = "Meetodología de los artículos")También podemos usar las barras apiladas para mostrar tendencias.
ggplot(ejemplo, aes(x = Cuantitativo, fill = `Estudiantes`)) +
geom_bar(color = "black", position = "stack") +
labs(x = "Artículos que usan metodología cuantitativa", y = "Recuento",
title = "Metodología de los artículos",
subtitle = "Distribución en función de si se tiene en cuenta al alumnado")La instrucción position = “stack” nos muestraa las barras apiladas en función del recuento. Si loos grupoos son muy desiguales podemos usar otro tipo de barras apiladas, como por ejemplo con position = “fill” que nos mostrará las disferencias porcentuales.
ggplot(ejemplo, aes(x = IA, fill = `Cuantitativo`)) +
geom_bar(color = "black", position = "fill") +
labs(x = "Artículos que tranta la IA", y = "Porcentual",
title = "Metodología de los artículos que tratan la IA")La visualización más simple de dos variables cuantitativas es un diagrama de dispersión, con cada variable representada en un eje. Por ejemplo, podemos observar la relación entre el numero de citas y el número de autores.
En vuestro caso, podéis adaptar el código en función de las variables y de la base de datos que deseéis analizar.
Las opciones se pueden utilizar para cambiar el geom_point().
Vamos a ver un ejempplo teniendo en cuenta el año de publicación y las citaciones.
ggplot(ejemplo,
aes(x = `Publication Year`,
y = `Times Cited, All Databases`)) +
geom_point(color = "darkmagenta", size = 5, alpha = 0.3) +
labs (x = "Año de publicación", y = "Veces citado")A menudo es útil resumir la relación que se muestra en el diagrama de dispersión, utilizando una línea de mejor ajuste. Se admiten muchos tipos de líneas, incluidas las lineales polinomiales y no paramétricas (loess). De forma predeterminada, se muestran los límites de confianza del 95% para estas líneas.
ggplot(ejemplo,
aes(x = `Publication Year`,
y = `Times Cited, All Databases`)) +
geom_point(color = "black", size = 3, alpha = 0.4) +
labs (x = "Año de publicación", y = "Número de citas") +
geom_smooth(color = "darkmagenta", size = 1)## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
A modo de ejemplo, y solo para que sea pueda apreciar mejor la tendencia, trabajaremos con los artículos que tienen menos de 50 citas
ggplot(ejemplo2,
aes(x = `Publication Year`,
y = `Times Cited, All Databases`)) +
geom_point(color = "blue", size = 4, alpha = 0.2) +
labs (x = "Año de publicación", y = "Número de citas") +
geom_smooth(color = "red", size = 2)## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Un diagrama de caja ofrece un buen resumen de una o más variables numéricas. Un diagrama de caja se compone de varios elementos:
A modo de ejemplo, trabajaremos solo con los artíuculos firados por un máximo de cuatro autores (fijaros que he pasado la variable autores a “texto”)
ejemplo3 <- read_excel("JCR_Tecnología Educativa - copia2.xls")
ggplot(ejemplo3,
aes(x = `N_Autores`, y = `Times Cited, All Databases`)) +
geom_boxplot() En vuestro caso, podéis adaptar el código en función de las variables y de la base de datos que deseéis analizar.
Como en ocasiones anteriores, se puede mejorar bastante la estética del gráfico.
ggplot(ejemplo3, aes(x = factor(`N_Autores`),
y = `Times Cited, All Databases`,
fill = `N_Autores`)) +
geom_boxplot(color = "black") +
scale_fill_brewer(palette = "Set2") +
labs(x = "Número de autores", y = "Citas") La opción jitter nos dará mucha más información ya que podremos ver cómo se situaban las citas.
ggplot(ejemplo3, aes(x = factor(`N_Autores`),
y = `Times Cited, All Databases`,
fill = `N_Autores`)) +
geom_boxplot(color = "black") +
geom_jitter(color="black", size=1, alpha=0.1) +
scale_fill_brewer(palette = "Set2") +
labs(x = "Número de autores", y = "Citas") Existen otras opciones muy llamativas cuando la muestra es muy grande usando geom_violin
ggplot(ejemplo3, aes(x = factor(`N_Autores`),
y = `Times Cited, All Databases`,
fill = factor(`N_Autores`))) +
geom_violin (width=0.3)+
geom_boxplot(width=0.6, color="grey", alpha=0.4, width=0.5) +
scale_fill_brewer(palette = "Set2") +
labs(x = "Número de autores", y = "Citas") ## Warning: Duplicated aesthetics after name standardisation: width
En la agrupación, los valores de las dos primeras variables se asignan a los ejes X e Y. A continuación, las variables adicionales se asignan a otras características visuales, como el color, la forma, el tamaño, el tipo de línea o la transparencia. La agrupación permite representar los datos de varios grupos en un único gráfico. Por ejemplo, vamos a observar la relación entre las citas en WoS, las citas enn JCR y la metodología usada.
ggplot(ejemplo,
aes(x = `Times Cited, All Databases`, y = `Times Cited, WoS Core`, color = Cuantitativo)) +
geom_point( size = 4, alpha = 0.4) +
labs (x = "Citas en WoS", y = "Citas en JCR", color = "Cuantitativo")Tienes mucha información sobre R, códigos, paquetes, etc. en cualquier buscador.