EXPLORATORIOS EN R
Javier Rodríguez Barrios
MSc. Multivariados
Taller 2.1 Explor. Insectos
# Librerías requeridas
library(tidyverse)
library(dplyr)
library(kableExtra) # Para la edición de tablas
library(readxl) # Cargar bases de Excel
require(stats) # No se requiere instalar
library(lattice) # No se requiere instalar
library(ggrepel) # insertar rótulos a los puntos
require(SciViews) # Fig. dispersión con coef. de pearson
library(plotrix) # Figuras de cajas con múltiples variables
library(corrplot) # Figuras de elipses
library(psych) # Matrices de correlación para figuras de elipses
library(reshape) # Figuras de cajas con múltiples variables
library(reshape2) # Figuras de cajas con múltiples variables
library(gridExtra) # Para figuras estadísticas (varios factores)
library(grid) # Para figuras estadísticas (varios factores)
library(ggplot2) # Paquete gráfico
library(forcats) # Para manipulación de factores
library(viridis) # Opciones de paletas de colores#------------
datos <- read_excel("Insectos.xlsx") # paquete "readxl"
head(datos)
# Explorar estructura
# glimpse(datosl)
# summary(datos)
1. ELIPSES
# Elipses con colores
M <- cor(datos[,3:10]) # Matriz de Correlación (M)
# Elipses con colores
corrplot(M, method = "ellipse") # Figura de correlaciones con elipses# Elipses con colores
corrplot(M, method = "circle") # Figura de correlaciones con circulos# Elipses con colores
corrplot.mixed(M, upper="ellipse")OPCIONES DE ELIPSES

# Figura de elipses con coeficientes de correlación
corrplot(M, method = "circle", # Correlaciones con circulos
type = "lower", insig="blank", # Forma del panel
order = "AOE", diag = FALSE, # Ordenar por nivel de correlación
addCoef.col ="black", # Color de los coeficientes
number.cex = 0.8, # Tamaño del texto
col = COL2("RdYlBu", 200)) # Transparencia de los circulos2. DISPERSIÓN

# Correlaciones de Pearson
library(SciViews)
pairs(datos[,c(3,5,7,8,10)], diag.panel = panel.hist,
upper.panel = panel.cor, lower.panel = panel.smooth)3. HISTOGRAMAS

# Frecuencias de abundancias por cuencas
ggplot(data = ..., aes(x = ..., color = ...)) +
geom_density(aes(fill = ...), alpha = 0.5) +
labs( y="Frecuencia", x="Abundancia") +
theme_bw() +
theme(panel.grid = element_blank()
)# Otra opción
ggplot(data = datos, aes(x = Ab, color = ...)) +
geom_density(aes(fill = ...)) +
facet_wrap(~ ...) +
theme_bw() +
theme(panel.grid = element_blank()
)
4. DISPERSIÓN X-Y

# Regresiones lineales (Esquema ggplot2)
# ***Ejercicio*** Graficar la relación entre el pH y los efemerópteros
ggplot(datos, ... ) +
geom_point(aes(color = cuenca), size = 3) +
geom_smooth(method= "lm") +
theme(panel.grid = element_blank()
)# Regresiones suavizadas - Loess o Lowess (Esquema ggplot2)
ggplot(datos,aes(x = pH, y = Efem)) +
geom_point(aes(color = cuenca), size = 3) +
geom_smooth() +
theme_bw() +
theme(panel.grid = element_blank()
)# Regresiones suavizadas (Loess)
ggplot(datos,aes(x = pH, y = Efem)) +
geom_point(aes(color = cuenca), size = 3) +
geom_smooth(se = FALSE, span = 0.4) +
theme_bw() +
theme(panel.grid = element_blank()
)
CAJAS Y BIGOTES

Cajas con la biblioteca "ggplot2"
ggplot(..., aes(x=..., y=...)) +
geom_boxplot(aes(fill = ...)) +
labs(x="Cuencas", y= "Abundancia de Insectos") +
scale_fill_manual(values = c('#fc8d59','#ffffbf','#99d594','#377eb8')) +
theme_bw() +
theme(panel.grid = element_blank()
)
# geom_boxplot(notch = T,... para las muescas.# violin: como histograma acostado
ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_violin(aes(fill = Species)) +
geom_jitter() +
scale_fill_manual(values = c('#fc8d59','#ffffbf','#99d594')) +
theme_bw() +
theme(panel.grid = element_blank()
)Cajas con un factor: Cuencas.
Violines con un factor: Species.
# Figuras multivariadas de Cajas y bigotes
ggplot(melt(datos[,c(2,c(3,7,8,10))]), aes(x=variable, y=value)) +
geom_boxplot(aes(fill=cuenca)) +
scale_fill_manual(values = c('#fc8d59','#ffffbf','#99d594','#377eb8')) +
labs(x="",y="Abundancia") +
facet_wrap(~ variable,scales="free") +
theme_bw() +
theme(panel.grid = element_blank()
)Cajas con multiples variables (melt).
# Coplot con líneas de ajuste suavizado (loess)
with(datos, {
coplot(Efem~pH|temp,
panel = panel.smooth)})Coplot
# Categorización de la temperatura
datos <-
datos %>%
mutate(clasetemp = case_when(
... <= quantile(..., 1/3, na.rm = TRUE) ~ "T.Baja",
... <= quantile(..., 2/3, na.rm = TRUE) ~ "T.Media",
... <= quantile(..., 3/3, na.rm = TRUE) ~ "T.Alta"
))
# Categorización del pH
datos <-
datos %>%
mutate(clasepH = case_when(
pH <= quantile(pH, 1/3, na.rm = TRUE) ~ "pH.Bajo",
pH <= quantile(pH, 2/3, na.rm = TRUE) ~ "pH.Medio",
pH <= quantile(pH, 3/3, na.rm = TRUE) ~ "pH.Alto"
))Cajas con variables contínuas categorizadas
# Cambiar etiquetas de Layers con recode_factor()
datos <-
datos %>%
mutate(cuenca = recode_factor(cuenca,
"cuen1" = "Cuenca1",
"cuen2" = "Cuenca2",
"cuen3" = "Cuenca3",
"cuen4" = "Cuenca4"))
# Crear gráfico con etiquetas de valores atípicos redondeados
ggplot(datos, aes(x = factor(cuenca), y = Ab)) +
geom_boxplot(aes(fill = clasetemp)) +
labs(
x = "Cuencas", fill = "Temperatura",
y = "Abundancia") +
scale_color_viridis(discrete = TRUE) +
facet_wrap(~ clasetemp, nrow = 1, strip.position = "top") +
theme_bw() +
theme(
panel.grid = element_blank(),
axis.text.x = element_text(angle = 45, hjust = 1))Cajas con variables contínuas categorizadas
7. FIGURAS CON ESTADÍSTICOS

# Resumen estadístico "datos_resum"
datos_resum <- datos %>% # Base de datos resumida
group_by(...) %>% # Factor o variable agrupadora
summarise(datos.m = ...(Ab), # Media de cada grupo del factor
datos.de = ...(Ab), # Desviacioes est?ndar de cada grupo
datos.var = ...(Ab), # Varianzas de cada grupo
n.Ab = n(), # Tamaño de cada grupo
datos.ee = ...(Ab)/...(n())) # Error est?ndar de cada grupo
datos_resum# Figura de promedios y errores estándar
DatosPlot<-
ggplot(datos_resum, aes(cuenca, datos.m, dev.off())) +
geom_bar(stat="identity", col="blue", fill="lightblue") +
geom_errorbar(aes(ymin=datos.m-datos.ee,
ymax=datos.m+datos.ee),width=0.2) # Imprimir la figura
print(DatosPlot + labs(y="Abundancia ± e.e.", x = "cuenca") +
theme_classic())
# Base de datos multifactorial (insectos1)
datos1<-read_csv2("Insectos2.csv") # Formato *Tidyr
head(datos1) # Encabezado de la base "datos1"
str(datos1) # estructura de la base "datos1"# Resumen estadístico "datos_resum"
datos_resum <- datos1 %>% # Base de datos resumida
group_by(...,...) %>% # Factor o variable agrupadora
summarise(datos.m = ...(Biom), # Media de cada grupo del factor
datos.de = ...(Biom), # Desviacioes estándar de cada grupo
datos.var = ...(Biom), # Varianzas de cada grupo
n.Biom = n(), # Tamaño de cada grupo
datos.ee = sd(Biom)/sqrt(n())) # Error estándar de cada grupo
datos_resum# Promedios y errores con colores automáticos (Figura p1)
p1<-
ggplot(datos_resum, aes(x=GF, y=datos.m, fill=Lluvia)) +
geom_bar(stat="identity", col="black", position=position_dodge()) +
geom_errorbar(aes(ymin=datos.m, ymax=datos.m+datos.ee),width=0.2,
position=position_dodge(.9)) +
labs(x="Grupos Funcionales-GF", y ="Biomasa")# Figura con definición de colores por periodo (figura p2)
p2 <-
p1 +
labs(title="Biomasa por GF",x="Grupos Funcionales-GF",y ="Biomasa") +
theme_classic() +
scale_fill_manual(values=c('#E69F00','#999999'))# Impresión de un panel con las dos figuras (p1 y p2)
library(gridExtra)
grid.arrange (p1, p2, ncol=2)# Inserción de las figuras en columna (figuras p1 y p2)
g2 <- ggplotGrob(p1)
g3 <- ggplotGrob(p2)
g <- rbind(g2, g3, size="first")
g$widths <- unit.pmax(g2$widths, g3$widths)
grid.newpage()
grid.draw(g)OTRAS OPCIONES
Para la casa
6. COPLOT

# Coplot con líneas de ajuste suavizado (loess)
with(datos, {
coplot(Efem~pH|temp,
panel = panel.smooth)})# Función para el coplot
panel.lm = function(x, y, ...) {
tmp<-lm(y~x,na.action=na.omit)
abline(tmp, lwd = 1.5, col= 2)
points(x,y, ...)}
# Cotplot con variables categorizadas
summary(datos[,2:8])
clasetemp <- cut(datos$temp,seq(15,20,1.2),include.lowest=T,
labels = c("t.baja", "t.media1","t.media2", "t.alta"))
clasepH <- cut(datos$pH,seq(5,8,1),include.lowest=T,
labels = c("pH.bajo", "pH.medio","pH.alto"))# Relación trivariada - Lineal
coplot(Efem~pH | clasetemp, pch=19,
panel = panel.lm, data=datos)# Relación trivariada - Suavizada
with(datos, {
coplot(Efem~pH|clasetemp,
panel = panel.smooth)})4. FIGURAS ANIMADAS

library(ggplot2)
library(gganimate)
theme_set(theme_bw()) # Tema o fondo de la figura por default
library(gapminder)# Edición de la figura
p <- ggplot(
gapminder,
aes(x = gdpPercap, y=lifeExp, size = pop, colour = country)) +
geom_point(show.legend = FALSE, alpha = 0.7) +
scale_color_viridis_d() +
scale_size(range = c(2, 12)) +
scale_x_log10() +
labs(x = "GDP per capita", y = "Life expectancy")# Figura estática
p
# Figura animada
p + transition_time(year) +
labs(title = "Year: {frame_time}")TALLER DE ENTRENAMIENTO
Objetivo 1: Poner en práctica los conceptos vistos en el módulo de exploratorios multivariados, realizando las siguientes opciones gráficas en las bases de datos asignadas para los estdios de caso:
-
Figuras de elipses
-
Figuras de Dispersión por pares de variables (pairs)
-
Histogramas
-
Dispersión X-Y
-
Cajas y Bigotes
-
Coplot
-
Figuras con estadísticos (promedios, errores, …)
TALLER DE ENTRENAMIENTO
Objetivo 2: Poner en práctica lo anterior con la base de datos de lirios `"data(iris)"`
-
Figuras de elipses
-
Figuras de Dispersión por pares de variables (pairs)
-
Histogramas
-
Dispersión X-Y
-
Cajas y Bigotes
-
Coplot
-
Figuras con estadísticos (promedios, errores, …)
2.1 Exploratorios Insectos
By Javier Rodriguez
2.1 Exploratorios Insectos
- 23