Analítica de datos aplicada a estudios sobre desarrollo

Introducción a al paquete R

Sobre Mi

PhD en Estadística, MSc en Analytics & Big Data, MSc en Estadística. Con 20 años de experiencia, actual director de analítica en el CNC, miembro del comité de expertos en pobreza en el DANE y consultor de la División de Estadística de la CEPAL. Ex-decano de la Facultad de Estadística USTA, ex-director de operaciones en el ICFES, PM CEV …

Puedes encontrarme en:

Objetivos de este curso

  1. Familiarizar a los estudiantes en el uso de herramientas para el análisis cuantitativo de datos aplicada a los estudios de desarrollo.

  2. Presentar las cuestiones prácticas y críticas en el uso de métodos de análisis cuantitativo de datos.

Resultados de aprendizaje

Al finalizar el curso, los y las estudiantes estarán en capacidad de:

  • Aplicar los principales métodos de análisis cuantitativo (análisis de regresión, técnicas de análisis multivariado).

  • Combinar distintas herramientas para el análisis cuantitativo.

Metodología

  • Es un curso de nivel intermedio donde se abordan temas de métodos descriptivos, inferenciales, métodos supervisados y no supervisados.

  • El enfoque del curso es práctico, a través de ejercicios hechos con los estudiantes. Usaremos el software estadístico R Studio. No nos concentraremos en demostraciones y pruebas formales. El curso tiene un énfasis aplicado.

  • Sesiones de repaso y aclaración de inquietudes con el Monitor alternadas semanalmente con nuestras sesiones.

Temas que se cubren



  1. Visualización de datos
  2. Análisis exploratorio
  3. Análisis de correlación y de regresión (modelos lineales)
  4. Reducción de la dimensionalidad
  5. prácticas en el software R Studio

Reglas del juego


  • Talleres: 30%
  • Examen 1: 20%.
  • Examen 2: 20%.
  • Presentación final: 30%



Conversación



¿Por qué considera que la analítica de los datos es importante dentro del proceso de la toma de decisiones o de orientación de políticas?

INFORMACIÓN + CONVERSACIÓN + ACCIÓN = TRANSFORMACIÓN

05:00

VISUALIZACIÓN DE DATOS

Elementos clave

  • Tipografía: Seleccione fuentes apropiadas, limitándose a 2-3 y siendo consistente en su uso.
  • Contraste: Utilizar contraste (claro/oscuro, grande/pequeño, grueso/delgado) para resaltar y enfatizar.
  • Color: Usar el color para enfatizar o reforzar valores, evitando el uso excesivo de colores que pueda distraer.
  • Balance: Asegurar que el diseño sea visualmente equilibrado para que sea agradable y destaque la información importante.
  • Jerarquía: Proporcione pistas visuales sobre la parte más importante del mensaje.

Elementos clave

  • Despejar el gráfico: Elimine líneas, bordes y marcas de verificación innecesarias para evitar distracciones.
  • Títulos y etiquetas con propósito: Ser claro y conciso en los títulos y usar etiquetas de datos con moderación.
  • Usar el eje completo comenzando en cero para evitar malinterpretaciones de los datos.
  • Evite gráficos de pastel especialmente para comparaciones, ya que son difíciles de interpretar visualmente.

Lectura recomendada: Data Visualization Principles

Tipos de gráficos

Galerias de gráficos en R: https://r-graph-gallery.com/

Inspiración


Tipos de variables

Tipos de variables

Gramática de la gráficas

La gramática de las gráficas

Requiere de al menos 3 elementos: datos, variables (aes), geometría.

ggplot(data = datos, aes(x = ___, y = ___)) +
  geom_point()

Exploración visual de datos

Arte de Allison Horst

Transformación de datos

Arte de Allison Horst

Ejemplo: Visualización de datos

Cree el proyecto: PIB

library(pacman)
p_load(tidyverse, gganimate, gapminder, gifski)

datos <- gapminder |> 
         filter(year >= 1952) |> 
         mutate(poblacion = pop / 1e6)

paises_interes <- c("Colombia", "United States", "China", "India", "Nigeria")


Explore el conjunto de datos

Ejemplo: Visualización de datos

g1 <- ggplot(datos, aes(x = gdpPercap, y = lifeExp, size = poblacion, color = continent)) +
      geom_point(alpha = 0.7, show.legend = TRUE) +
      geom_text(data = datos |> filter(country %in% paises_interes), 
                aes(label = country), size = 4, vjust = -1, hjust = 0.5, color = "black", alpha = 0.8) +
      scale_x_log10(labels = scales::dollar_format(prefix = "$")) +
      scale_y_continuous(labels = scales::comma) +
      labs(title = "Relación entre PIB per cápita y la esperanza de vida",
           subtitle = "Año: {frame_time}",
           x = "PIB per cápita (log10)",
           y = "Esperanza de vida",
           size = "Población (millones)",
           color = "Continente") +
       theme_minimal(base_size = 14) +
       theme(legend.position = "bottom") +
       transition_time(year) +
       ease_aes('linear')

#anim <- animate(plot, fps = 20, duration = 10, width = 800, height = 600, renderer = gifski_renderer())
#anim_save("gapminder_animation.gif", anim)

Nuestros conjuntos de datos

Durante el curso se usarán conjuntos de datos reales, descargados de portales de datos abiertos del DANE, DNP, FGN y otros.

Ejercicio

Considere los datos de violencia intrafamiliar, descargados de los datos abiertos de la FGN. Realice:

  1. Cargue el conjunto de datos que se encuentra en formato .parquet
  2. Explore las variables y cantidad de registros
  3. Use los comandos table() y del paquete dplyr() para indentificar cuantos casos están con estado de activo
  4. ¿Cuál es el departamento con el mayor número de víctimas?
  5. ¿Es correcto comparar los departamentos según el número de víctimas?
  6. ¿Cuántas víctimas se han registrado por año?, compare por sexo y por edad.
  7. Haga un análisis con enfoques diferenciales según las variables de LGBTI, NNA, indígena y Afrodescendiente

Ejercicio


Tu turno: Cree un proyecto y cargue el conjunto de datos “ENSIN.sav”, explore los datos y visualice su estructura. Use as_factor() para visualizar las etiquetas.

library(pacman)

p_load(tidyverse, haven, skimr)

url <- "https://github.com/jgbabativam/AnaDatos/raw/main/datos/ENSIN.sav"
ensin <- read_sav(url)
15:00

La etapa de la frustración

Arte de Allison Horst

La IA como herramienta

Estamos en un mundo de constante evolución, ¿la IA nos va a reemplazar?

  • Enviar una carta en papel por correo
  • Pedir un domicilio por teléfono
  • Solicitar un taxi por teléfono
  • Orientarse en una ruta con un mapa de papel



@tiangolo

Imagen de Caracol Radio

GPT y Modelos LLMs

El GPT (Generative Pre-trained Transformer) es un modelo de LLM (Large Language Model). Mientras que GPT-3 usaba 175 MM de parámetros usando modelos soportados en texto, GPT-4 usa 100 BN de parámetros usando modelos soportados en texto e imágenes.

Instrucciones

No pretenda que todo ocurra en un solo paso, a veces se obtienen mejores resultados precisando un prompt en cada paso.

@mdancho84

Herramientas

Ejemplo

Escriba el siguiente prompt en ChatGPT y transcriba el código a R:



“use el paquete osm de R para crear un mapa y la base de datos de droguerias en bogotá, luego use mapview para visualizar las droguerias”

Ejercicio


Tu turno: Sobre el conjunto de datos “ENSIN.sav”, apoyese en la IA para obtener un gráfico de barras, usando ggplot2, con la cantidad de registros que se tienen de cada región. Ajustelo a su gusto.

g2 <- ensin |> 
      count(region) |> 
      mutate(region = as_factor(region)) |>
      ggplot(aes(x = fct_reorder(region, n), y = n, fill = region)) +
      geom_col() +
      labs(x = "Región", y = "Frecuencia") +
      coord_flip() +
      theme_minimal() +
      theme(legend.position = "none")

Ejercicio


Tu turno: Sobre el conjunto de datos “ENSIN.sav”, apoyese en la IA para obtener un gráfico elegante entre las variables Peso y Estatura, use ggplot2. Ajustelo a su gusto.

Ejercicio


Tu turno: Sobre el conjunto de datos “ENSIN.sav”, apoyese en la IA para obtener un diagrama de cajas elegante que permita comparar la variable IMC entre las diferentes regiones, use ggplot2. Ajustelo a su gusto.

ANÁLISIS EXPLORATORIO

Análisis exploratorio



  1. Tipos de variables.
  2. Visualizar los datos
  3. Identificar relaciones
  4. Datos atípicos
  5. Datos faltantes

Análisis exploratorio

Usemos un conjunto de datos de la ENSIN

library(pacman)
p_load(tidyverse, broom, modelr, 
       patchwork, performance, haven,
       DataExplorer, skimr, corrplot, psych, gt, gtsummary)

url <- "https://github.com/jgbabativam/AnaDatos/raw/main/datos/ENSIN.sav"
ensin <- read_sav(url)

Analice los descriptivos del peso y de la estatura: media, mediana, percentiles, sd y correlación. Use tapply(var, class, fun) para identificar la región con menor IMC. Explore los comandos create_report(), glimpse() y skim().

create_report(ensin)
glimpse(ensin)
skim(ensin)

ESTUDIO DE CASO

Violencia contra las mujeres

El estudio de Oxfam y La Casa de la Mujer publicado aquí. La investigación se realizó en el marco de la Campaña “Violaciones y otras Violencias: Saquen mi cuerpo de la guerra”. El estudio se enfocó en zonas donde se tenían alertas tempranas de la Defensoría del Pueblo y tuvo como periodo de referencia los años 2010 a 2014.

library(pacman)

p_load(tidyverse, haven, skimr, DataExplorer, janitor)

url <- "https://github.com/jgbabativam/AnaDatos/raw/main/datos/VolenciaMujer.sav"
mujeres <- read_sav(url) |> as_factor()

  • Use lapply(mujeres, function(x) attributes(x)$label) para ver las etiquetas de las preguntas.
  • Use create_report para hacer un análisis exploratorio de los datos.

Reportes reproducibles usando Quarto-R


A schematic representing the multi-language input (e.g. Python, R, Observable, Julia) and multi-format output (e.g. PDF, html, Word documents, and more) versatility of Quarto.

Arte de “Hello, Quarto” por Julia Lowndes y Mine Çetinkaya-Rundel, presentado en RStudio::Conf(2022). Ilustración por Allison Horst.

A schematic representing rendering of Quarto documents from .qmd, to knitr or jupyter, to plain text markdown, then converted by pandoc into any number of output types including html, PDF, or Word document.

Tipos de salidas

Sitios para obtener inspiración Quarto.org gallery y el Qmd Club website & blog showcase

Estructura de un documento .qmd

  1. YAML header (metadatos y opciones del documento)

  2. Narrativa (markdown)

  3. Códigos chunks (importar, depurar, transformar, visualizar)

1. YAML

---
title: Título del documento
author: Giovany Babativa-Márquez
date: "r toupper(format(Sys.time(), '%B %Y'))"
bibliography: docreferences.bib
link-citations: true
toc-title: Tabla de Contenido
lang: es
output:
  bookdown::word_document2:
   reference_docx: docPlantilla.docx
   number_sections: true
   fig_caption: yes
fontsize: 12pt
---

Consulte las opciones disponibles en las guías de referencia: HTML, PDF, MS Word, Revealjs, MS Powerpoint.

2. Narrativa

Sintaxis de Markdown para:

  • Texto con formato: **negrita**negrita

  • Título de secciones: # Header 1, # Header 2

  • Hipervínculos: [google.com](https://google.com)google.com

  • Imágenes: ![](image.png)

  • Código en línea: `{r} Sys.Date()`2025-08-09

  • Ecuaciones: `$E = mc^{2}$`\(E = mc^{2}\)


3. Códigos chunks

Tres manera para insertar chunks:

  1. Atajos Cmd/Ctrl + Option/Alt + I.

  2. Insert Chunk button in RStudio Insert Chunk botón en las herramientas del editor.

  3. Escribir los delimitadores de fragmento ```{r} y ```.

Dos formas de ejecutar los códigos de los chunks:

  1. Use los botones Run Current Chunk o Run All Chunks Above.

    Code chunk in RStudio with the Run All Chunks Above and Run Current Chunk buttons highlighted and labelled.

  2. Ejecutar el código actual del chunk con Cmd/Ctrl + Shift + Enter.

Ejemplo

Use el conjunto de datos de violencia contra las mujeres para construir un informe de muestra, incluya:

  • Secciones y subsecciones
  • Texto con formato (Negrita)
  • Hipervínculo
  • Referencias
  • Gráficos
  • Tablas
  • Ecuaciones

ESTUDIO DE CASO

Informe de violencia contra las mujeres

Pasos previos

  1. Descargue la plantilla aquí

  2. Cree un proyecto en una ruta de su computadora: data, src

  3. Descomprima el archivo template.zip en src.

  4. Abra el archivo .Rprj y el archivo .qmd o Rmd.

Informe de violencia contra las mujeres

Introducción

  1. Ajuste el título, autores y guarde con otro nombre.

  2. Cargue el conjunto de datos. Use Ctrl + Alt + I

url <- "https://github.com/jgbabativam/AnaDatos/raw/main/datos/VolenciaMujer.sav"
mujeres <- read_sav(url) |> as_factor()
  1. Escriba el siguiente texto en la introducción y agregue una referencia.

La violencia sexual es una grave violación de los derechos humanos que afecta a personas de todas las edades, géneros y contextos socioeconómicos. Este fenómeno abarca una amplia gama de conductas que van desde el abuso verbal hasta agresiones físicas, y tiene profundas consecuencias físicas, emocionales y psicológicas para las víctimas.

Abordar la violencia sexual requiere un enfoque integral que considere tanto la prevención como la atención a las víctimas (REFERENCIA). Las políticas públicas, la educación sobre el consentimiento y el acceso a servicios de salud mental y justicia son pilares fundamentales para mitigar sus efectos y reducir su prevalencia.

Esta investigación se basa en `{r nrow(mujeres)}` encuestas y permite cuantificar la prevalencia de la violencia sexual en zonas de conflicto armado, medida a partir de 8 formas de violencia.

quitar las llaves

Informe de violencia contra las mujeres

Análisis descriptivo y exploratorio

  1. Haga una sección corta con un análisis exploratorio, incluya:

3.1 Una tabla con el número de encuestas por departamento, agregue un título y cite en el documento usando \@ref(tab:tab1).

tab1 <- mujeres |> 
  count(DPTO, name = "Encuestas") |> 
  arrange(-Encuestas) |> 
  adorn_totals() |> 
  rename(Departamento = DPTO)

custom_tab(tab1)

3.2 Agregue una gráfica y use \@ref(fig:f1) para citarla. Apóyese en la IA.

  1. Complemente el análisis descriptivo y exploratorio en casa.

GRACIAS!

Referencias

  • R for data science. Section 3. Data visualization. Disponible aquí

  • Dougherty, J. and Ilyankou, I. (2022) Hands-On Data Visualization. Interactive Storytelling from Spreadsheets to Code. Section 6. Chart Design Principles. Disponible aquí

  • Williams, G. (2022) Data Science Desktop Survival Guide. Togaware. Disponible aquí Chapter 2 introducing R

  • Jadey Ryan. Reproducible reports and presentations with Quarto. Disponible aquí

Citación y derechos de autor

Este material ha sido creado por Giovany Babativa-Márquez y es de libre distribución bajo la licencia Creative Commons Attribution-ShareAlike 4.0.

Si se copia parcial o totalmente, debe citar la fuente como:

Babativa-Márquez, J.G. Materiales del curso de Analítica de Datos. URL: https://github.com/jgbabativam/AnaDatos.