Proceso para conocer y entender nuestros datos
Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante
El AED es una fase inicial importante, con dos objetivos:
Conocer nuestros datos e identificar problemas → Preprocesamiento
Análisis descriptivo: identificar patrones y encontrar escenarios de análisis
NO hay una “receta”: el proceso es diferente con distintos datos o con los mismos datos para diferentes objetivos
Una consultora analiza 500 PYMES europeas fundadas entre 1980-2020 para:
Fuente de datos: pymes_europa.csv
Objetivo del AED:
Contexto: conocimiento previo de los datos (fuente, cómo están almacenados, etc.)
Cargar los datos
Reconocimiento inicial de las características: ¿todo como esperamos?
Consultar el “diccionario” de datos
Verificar que las variables la información y el tipo adecuado
Detectar inconsistencias en texto, fechas, unidades, etc.
Ej.: en sector, “Tecnología”, “tecnologia”, “TECNOLOGÍA” son la misma categoría
este tipo de problemas se puede descubrir más adelante.
NAs, pero se suele preferir decidir al modelizarVariables que contienen información redundante
activos_total y total_recursos son pasivos + patrimonio_neto (igualdad contable)Renombrar variables (para mayor claridad), generar nuevas
¿Mantenemos solo algunas variables u observaciones?
Otras…
Queremos entender cómo cambian los valores de una variable entre distintas observaciones (p. e., ventas de diferentes empresas), es decir, su distribución
Aspectos a observar en la distribución
Inconsistencias: categorías erróneas (“unknown”), valores fuera de rango
Concentración de valores: ceros, números redondos o repeticiones excesivas → ¿errores o patrones reales?
Categorías: ¿tienen sentido? ¿agrupar de manera diferente? ¿reagrupar si hay pocas observaciones?
Continuas: dispersión o asimetría (usar log?); ¿discretizar (ej. grupos de edad)?
Valores inusuales (“atípicos” o “outliers”): no encajan en el patrón general
summary(), table(), mode() o con summarize(), count()Este análisis puede detectar situaciones donde queremos agrupar categorías:
# frecuencias absolutas
ggplot(data = pymes) + geom_bar(aes(x = tipo_propiedad))
# frecuencias relativas (proporciones)
ggplot(data = pymes)+ geom_bar(aes(x = tipo_propiedad,
y = after_stat(prop), group = 1))
# Variantes
pymes |> count(tipo_propiedad) |> ggplot() +
geom_bar(aes(x = tipo_propiedad, y = n), stat = "identity")
ggplot(data = pymes) + geom_bar(aes(x = tipo_propiedad)) +
theme(axis.text.x = element_text(angle = 90))
ggplot(data = pymes) + geom_bar(aes(x = tipo_propiedad)) +
coord_flip()
# barra vertical
ggplot(data = pymes) + geom_bar(aes(x = "", fill = tipo_propiedad))summary()summary(pymes$ingresos)
pymes |>
summarise(
media = mean(ingresos, na.rm = TRUE),
mediana = median(ingresos, na.rm = TRUE),
sd = sd(ingresos, na.rm = TRUE),
min = min(ingresos, na.rm = TRUE),
max = max(ingresos, na.rm = TRUE),
q25 = quantile(ingresos, 0.25, na.rm = TRUE),
q75 = quantile(ingresos, 0.75, na.rm = TRUE),
NAs = sum(is.na(ingresos)))Probar varios anchos de intervalo (distintas formas de discretizar la variable continua de )
Si observamos una distribución muy asimétrica, considerar escala logarítmica
datasummary_skim(): vista rápida de todas las variables (o algunas seleccionada), distinguiendo automáticamente por tipo
DataExplorerdlookr ofrece heramientas para diagnóstico y exploración de datosLa covariación describe relaciones entre variables: tendencia a que los valores de una variable dependan de la otra
Estudiamos la distribución condicional de una variable \(\small{Y}\) dados los valores de otra \(\small{X}\)
Si \(\small{\Pr(Y|X=x_1) = \Pr(Y|X=x_0) = \Pr(Y) \Rightarrow}\) \(\small{Y}\) NO depende de \(\small{X}\)
Si la probabilidad condicional de que \(\small{Y}\) tome valores altos (o bajos) depende de lo que sabemos de \(\small{X}\), se puede predecir (su valor esperado) a partir del valor de \(\small{X}\)
Punto de partida para formular modelos que explican patrones complejos de los datos
PERO es más informativo la distribución condicional de frecuencias relativas
¿Hay la misma proporción de los rating alto y bajo en distintos sectores?
datos <- pymes |> count(sector, rating) |>
group_by(sector) |> mutate(prop= n/sum(n)) |> select(-n)
datos |> pivot_wider(names_from = sector, values_from = prop) # tabla
datos |> ggplot() + geom_bar(aes(x=sector, y=prop, fill = rating), # gráfico
stat = "identity")
ggplot(pymes, aes(x = sector, fill = rating)) + # + directo
geom_bar(position = "fill") +
scale_y_continuous(labels = scales::percent)smoothers ayuda a apreciar un patrón en los puntosCon GGally obtenemos una primera visión de conjunto
¿Es diferente la distribución de Y (continua) por categorías de X?
Cuidado: podemos necesitar escala logarítmica
También ajustes como reordenar las categorías de un factor (forcats), rotar los ejes, etc.
Podemos usar histogramas o densidades, en un mismo gráfico o con facetas
También con gráficos de caja (menos información pero más fácil de comparar)
sector?\[ \scriptsize E[Y|X]=\beta_0+\beta_1 X \Rightarrow \begin{cases} E[Y|X=0] &=\beta_0 \\ E[Y|X=1]&=\beta_0+\beta_1 \end{cases} \]
Discretizar (agrupar) variables continuas: la distribución de empleados tiene un rango muy amplio
\(\Rightarrow\) Agrupar/Discretizar cuando:
El análisis previo mostró que es necesario
Tiene sentido de negocio
Las categorías tienen comportamiento similar
Mejora la robustez sin perder información crítica
El AED manualmente consume tiempo. Se pueden automatizar partes del proceso, pero con precaución
Ventajas de herramientas automatizadas: Velocidad, Exahaustividad, Primera Exploración
Limitaciones críticas:
Ruido: muchos gráficos irrelevantes
No entienden contexto de negocio
Interpretación superficial → No sugieren acciones específicas
Herramientas de AED Automatizado
Analiza pymes_europa.csv. Variables clave: ingresos, roe, sector, país.
Contexto: PYMES europeas 2020-2024. ROE típico: 8-12%.
Dame: limpieza, descriptivos, visualizaciones, análisis por sector
Pregunta: ¿Qué características tienen empresas con ROE > 15%?