Cargar datos al ambiente de trabajo (Global Environment)

Recuerden que para poder usar los datos con los códigos estos deben estar en el ambiente de trabajo. Para ello, se puede utilizar la función read.csv() para cargar datos en formato CSV, o read.table() para cargar datos en formato de tabla.

# Cargar datos en formato CSV
encuesta <- read.csv("datos-estudiantes.csv")
municipios <- read.csv("Tasa_de_natalidad_por_municipio_2013.csv")

Estadísticas básicas

La manera más rápida de obtener estadísticas básicas de un conjunto de datos es utilizando la función summary(). Esto además, nos permite identificar si hay datos faltantes o missing values, o errores evidentes en los datos.

Datos de encuesta a estudiantes:

# Resumen de las variables
summary(encuesta)
##   Timestamp            pueblo              altura         hermanos  
##  Length:30          Length:30          Min.   :1.520   Min.   :0.0  
##  Class :character   Class :character   1st Qu.:1.573   1st Qu.:1.0  
##  Mode  :character   Mode  :character   Median :1.620   Median :1.0  
##                                        Mean   :1.631   Mean   :1.6  
##                                        3rd Qu.:1.694   3rd Qu.:2.0  
##                                        Max.   :1.800   Max.   :5.0  
##   dificultad            sexo          
##  Length:30          Length:30         
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 

Datos poblacionales de municipios de Puerto Rico:

# Resumen de las variables
summary(municipios)
##   municipio          nacimientos       poblacion         tasa2013    
##  Length:78          Min.   :  23.0   Min.   :  1828   Min.   : 8.10  
##  Class :character   1st Qu.: 246.2   1st Qu.: 23019   1st Qu.: 9.60  
##  Mode  :character   Median : 351.0   Median : 34278   Median :10.10  
##                     Mean   : 467.7   Mean   : 46347   Mean   :10.28  
##                     3rd Qu.: 440.2   3rd Qu.: 46470   3rd Qu.:10.80  
##                     Max.   :3798.0   Max.   :374682   Max.   :13.50

Variables numéricas

Estadísticas de las variables numéricas de la encuesta a estudiantes, con una medida de la tendencia central y otra de la dispersión, en una tabla gt.

# Cargar librería gt
library(gt)

# Seleccionar solo las variables numéricas
encuesta_num <- encuesta[, sapply(encuesta, is.numeric)]

# Calcular media, mediana y desviación estándar para las dos variables numéricas
encuesta_stats <- data.frame(
  variable = c("altura","hermanos"),
  media = sapply(encuesta_num, mean, na.rm = TRUE),
  mediana = sapply(encuesta_num, median, na.rm = TRUE),
  desviacion = sapply(encuesta_num, sd, na.rm = TRUE)
)
# crear tabla gt con titulo "Estadísticas de variables numéricas" con la media y desviación estándar con dos decimales
gt(encuesta_stats) %>%
  tab_header(title = "Estadísticas de variables numéricas") %>%
  fmt_number(
    columns = c(media, mediana, desviacion),
    decimals = 2
  )
Estadísticas de variables numéricas
variable media mediana desviacion
altura 1.63 1.62 0.08
hermanos 1.60 1.00 1.16

Histograma de la variable altura

Un histograma es una representación gráfica de la distribución de frecuencias de una variable numérica. En este caso, vamos a crear un histograma de la variable altura de la encuesta a estudiantes.

# Cargar librería ggplot2
library(ggplot2)

# Crear histograma de la variable altura
ggplot(encuesta, aes(x = altura)) +
  geom_histogram(binwidth = 0.05, fill = "skyblue", color = "black") +
  labs(x = "Altura (m)", y = "Frecuencia")

Boxplot de la variable hermanos

Un boxplot es una representación gráfica de la distribución de una variable numérica a través de sus cuartiles. Vamos a crear un boxplot de la variable hermanos de la encuesta a estudiantes.

# Crear boxplot de la variable hermanos con color rojo para linea de mediana
ggplot(encuesta, aes(x = "", y = hermanos)) +
  geom_boxplot(fill = "lightblue", color = "blue") +
  geom_hline(yintercept = median(encuesta$hermanos, na.rm = TRUE), color = "red") +
  labs(x = "", y = "Número de hermanos")

Estadísticas de los datos de población por municipio

Estadísticas básicas de las variables numéricas de los datos de población por municipio de Puerto Rico.

# Seleccionar solo las variables numéricas
municipios_num <- municipios[, sapply(municipios, is.numeric)]

# Calcular media, mediana y desviación estándar para las variables numéricas
municipios_stats <- data.frame(
  variable = c("nacimientos","población","tasa2013"),
  media = sapply(municipios_num, mean, na.rm = TRUE),
  mediana = sapply(municipios_num, median, na.rm = TRUE),
  desviacion = sapply(municipios_num, sd, na.rm = TRUE)
)

# crear tabla gt con titulo "Estadísticas de variables numéricas" con la media y desviación estándar con nacimientos y población sin decimales y tasa2013 con un decimal
gt(municipios_stats) %>%
  tab_header(title = "Estadísticas de variables numéricas") %>%
  fmt_number(
    columns = c(media, mediana, desviacion),
    decimals = 1
  )
Estadísticas de variables numéricas
variable media mediana desviacion
nacimientos 467.7 351.0 517.5
población 46,347.3 34,278.0 51,456.6
tasa2013 10.3 10.1 1.2

Histograma de la variable población

Histograma de la variable población de los datos de población por municipio de Puerto Rico.

# Crear histograma de la variable población
ggplot(municipios, aes(x = poblacion)) +
  geom_histogram(binwidth = 10000, fill = "lightgreen", color = "black") +
  labs(x = "Población", y = "Frecuencia")

Transformar datos de poblacion

Para mejorar la visualización del histograma, vamos a transformar la variable poblacion a escala logarítmica.

# Crear histograma de la variable población en escala logarítmica
ggplot(municipios, aes(x = log10(poblacion))) +
  geom_histogram(binwidth = 0.1, fill = "lightgreen", color = "black") +
  labs(x = "Log10(Población)", y = "Frecuencia")

Boxplot de la variable nacimientos

Boxplot de la variable nacimientos de los datos de población por municipio de Puerto Rico.

# Crear boxplot con orientación horizontal de la variable nacimientos
ggplot(municipios, aes(x = "", y = nacimientos)) +
  geom_boxplot(fill = "lightblue", color = "blue") +
  coord_flip() +
  geom_hline(yintercept = median(municipios$nacimientos, na.rm = TRUE), color = "red") +
  labs(x = "", y = "Número de nacimientos")

Gráfica de violín de la variable nacimientos

# Crear gráfica de violín de la variable nacimientos
ggplot(municipios, aes(x = "", y = nacimientos)) +
  geom_violin(fill = "lightblue", color = "blue") +
  geom_hline(yintercept = median(municipios$nacimientos, na.rm = TRUE), color = "red") +
  labs(x = "", y = "Número de nacimientos")

Gráficas de puntos (“scatter plots”) de las variables nacimientos y población

Gráficas de puntos de las variables nacimientos y población de los datos de población por municipio de Puerto Rico.

# Crear gráfica de puntos de las variables nacimientos y población
ggplot(municipios, aes(x = poblacion, y = nacimientos)) +
  geom_point(color = "blue") +
  labs(x = "Población", y = "Número de nacimientos")

Mapa de tasa de natalidad (2013) de municipios de Puerto Rico

Los municipios tienen un gradiente de color según la tasa de natalidad (nacimientos por 1000 habitantes) de cada uno.

# Load necessary libraries
library(leaflet)
library(sf)
library(dplyr)
library(readr)
library(RColorBrewer)
library(stringr)

# Read the CSV file
data <- read_csv("Tasa_de_natalidad_por_municipio_2013.csv")

# Load Puerto Rico municipalities shapefile
pr_shapes <- st_read("mapa-oficial-de-los-municipios/municipios.shp")
## Reading layer `municipios' from data source 
##   `/Users/dsfernandez/Documents/R/BIOMETRIA2024/mapa-oficial-de-los-municipios/municipios.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 78 features and 11 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -67.95137 ymin: 17.88124 xmax: -65.22098 ymax: 18.51597
## Geodetic CRS:  WGS84(DD)
## **Clean up municipality names in both datasets** ##
data <- data %>%
  mutate(municipio_clean = str_to_title(str_replace_all(municipio, "_", " ")))

pr_shapes <- pr_shapes %>%
  mutate(municipio_clean = str_to_title(municipio))

# Merge population data with shapefile
pr_data <- pr_shapes %>%
  left_join(data, by = c("municipio_clean" = "municipio_clean"))

# Create a color palette based on population
pal <- colorNumeric(
  palette = "YlOrRd",
  domain = pr_data$tasa2013,
  na.color = "#808080"  # Gray color for NA values
)

# Create the Leaflet map
m <- leaflet(pr_data) %>%
  addTiles() %>%
  addPolygons(
    fillColor = ~pal(tasa2013),
    weight = 2,
    opacity = 1,
    color = "white",
    dashArray = "3",
    fillOpacity = 0.7,
    highlight = highlightOptions(
      weight = 5,
      color = "#666",
      dashArray = "",
      fillOpacity = 0.7,
      bringToFront = TRUE
    ),
    label = ~paste0(municipio_clean, ": ", format(tasa2013, big.mark = ",", na.encode = FALSE), " inhabitants"),
    labelOptions = labelOptions(
      style = list("font-weight" = "normal", padding = "3px 8px"),
      textsize = "15px",
      direction = "auto"
    )
  ) %>%
  addLegend(
    pal = pal,
    values = ~tasa2013,
    opacity = 0.7,
    title = "Tasa Natalidad 2013",
    position = "bottomright"
  )

# Display the map
m