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")
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
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 |
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")
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 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 |
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")
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")
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")
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")
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")
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