Pregunta de análisis

¿Cómo se distribuyen la actividad económica por habitante y la cobertura educativa entre los municipios del Valle del Cauca, y qué cambios territoriales se observan en el tiempo?

Preparación

Paquetes

Se instalan los paquetes necesarios para la ejecución del proyecto: tidyverse, readxl, scales, rmarkdown, knitr

Códigos de los indicadores

Se guardan los cuatro códigos de los incadores en objetos.

codigo_indicador nombre_corto
010010009 Población total
120210001 Valor agregado
040010012 Cobertura neta
040020001 Deserción intraanual

1. Reconocimiento de la base de datos

1.1 Importación y estructura

El Excel original está en la carpeta /datos del proyecto.

Tamaño de la base de datos

filas columnas
153473 14
## Rows: 153,473
## Columns: 14
## $ `Código Departamento` <chr> "76", "76", "76", "76", "76", "76", "76", "76", …
## $ Departamento          <chr> "Valle del Cauca", "Valle del Cauca", "Valle del…
## $ `Código Entidad`      <chr> "76000", "76001", "76020", "76036", "76041", "76…
## $ Entidad               <chr> "Valle del Cauca", "Cali", "Alcalá", "Andalucía"…
## $ Dimensión             <chr> "Descripción general", "Descripción general", "D…
## $ Subcategoría          <chr> "Descripción general", "Descripción general", "D…
## $ Indicador             <chr> "Código DANE", "Código DANE", "Código DANE", "Có…
## $ `Código Indicador`    <chr> "010010001", "010010001", "010010001", "01001000…
## $ `Dato Numérico`       <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ `Dato Cualitativo`    <chr> "76", "76001", "76020", "76036", "76041", "76054…
## $ Año                   <dbl> 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, …
## $ Mes                   <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ Fuente                <chr> "DANE", "DANE", "DANE", "DANE", "DANE", "DANE", …
## $ `Unidad de Medida`    <chr> "Texto", "Texto", "Texto", "Texto", "Texto", "Te…

Datos de ejemplo

Código Departamento Departamento Código Entidad Entidad Dimensión Subcategoría Indicador Código Indicador Dato Numérico Dato Cualitativo Año Mes Fuente Unidad de Medida
76 Valle del Cauca 76000 Valle del Cauca Descripción general Descripción general Código DANE 010010001 NA 76 2000 0 DANE Texto
76 Valle del Cauca 76001 Cali Descripción general Descripción general Código DANE 010010001 NA 76001 2000 0 DANE Texto
76 Valle del Cauca 76020 Alcalá Descripción general Descripción general Código DANE 010010001 NA 76020 2000 0 DANE Texto
76 Valle del Cauca 76036 Andalucía Descripción general Descripción general Código DANE 010010001 NA 76036 2000 0 DANE Texto
76 Valle del Cauca 76041 Ansermanuevo Descripción general Descripción general Código DANE 010010001 NA 76041 2000 0 DANE Texto

Análisis de la base de datos

La base de datos tiene 153.473 filas y 14 columnas, Año y Mes se importan como tipo de dato númerico (<dbl>), pero todas las demás columnas llegan como tipo de dato de texto (<chr>), incluidos los códigos y la variable Dato Numérico. Que los códigos sean texto es bueno, ya que así se pueden ver los ceros a la izquierda, ej. (010010001). En cambio, la variable Dato Numérico viene escrito con punto para miles y coma para decimales, por ejemplo 4.059.339,00), así que debemos convertirlo a número válido para R antes de calcular.

Cada fila es un indicador, para una entidad territorial, en un periodo (año y mes). Por eso la misma entidad aparece muchas veces, una vez por cada indicador y cada año. La base está en formato largo.

Columna Descripción
Código Entidad Código del DANE de la entidad. 76000 es el agregado departamental del Valle; los demás (76001 Cali, 76109 Buenaventura, …) son los 42 municipios. Es la clave territorial.
Código Indicador Identificador del indicador. Es más seguro filtrar por código que por el nombre, que es un texto largo.
Año Año del dato.
Mes Mes de referencia. (dato anual con corte a diciembre).
Dato Numérico El valor del indicador cuando es una cantidad. Si está vacío, el dato no está disponible.
Dato Cualitativo El valor cuando el indicador es un texto o una categoría (por ejemplo, el propio código DANE).
Fuente Entidad que produce el dato (DANE, Ministerio de Educación, SINEB, …).
Unidad de Medida Unidad en que se expresa el dato: personas, porcentaje, miles de millones de pesos, etc.

Nombres cortos y conversión de tipos

Siguiendo lo visto en clase, renombramos las columnas a nombres sin tildes ni espacios y convertimos los tipos. Para Dato Numérico usamos parse_number() indicando que la coma es el separador decimal y el punto el de miles.

Comprobamos que la conversión no creó faltantes nuevos: un texto vacío debe seguir vacío, y un texto con número debe quedar como número.

vacios_en_texto faltantes_tras_convertir
27849 27849
entidad dato_texto dato_numerico
Zarzal 43.578,00 43578
Yumbo 113.917,00 113917
Yotoco 16.679,00 16679
Vijes 13.729,00 13729

1.2 Los cuatro indicadores

codigo_indicador nombre_corto registros entidades anio_inicial anio_final anios faltantes unidad fuente
010010009 Población total 1118 43 2000 2025 26 0 Personas DANE
040010012 Cobertura neta 860 43 2005 2024 20 0 Porcentaje (el valor está multiplicado por 100) Ministerio de Educación Nacional
040020001 Deserción intraanual 946 43 2003 2024 22 336 Porcentaje (el valor está multiplicado por 100) SINEB - Sistema de Información Nacional de Educación Básica y Media
120210001 Valor agregado 546 42 2011 2023 13 0 Miles de millones de pesos corrientes DANE

Población, cobertura y deserción tienen 43 entidades (42 municipios más el departamento); el valor agregado solo trae los 42 municipios. El único indicador con datos numéricos faltantes es la deserción. Los porcentajes ya vienen en escala 0–100 (“el valor está multiplicado por 100”).

2. Revisión de calidad y disponibilidad

2.1 Espacios sobrantes en etiquetas de texto

Comparamos cada texto con su versión “apretada” por str_squish(). Si son distintos, el texto tenía espacios al inicio, al final o dobles en el medio.

columna texto_visible filas
fuente DNP··a·partir·de·información·del·DANE 1890
fuente DNP·a·partir·de·información·del·DANE··y·del·Ministerio·del·Interior 1032
indicador Población·de·adolescentes·y·jóvenes·de 12 a 28 años 344

En la tabla los espacios se muestran como · para poder verlos.

## [1] 0

Encontramos 3 etiquetas con espacios sobrantes, en 3.266 filas: el nombre del indicador “Población de adolescentes y jóvenes de 12 a 28 años” usaba espacios no separables (un carácter invisible, que se ve igual a un espacio pero R lo trata como otro símbolo), y dos textos de Fuente tenían espacios dobles (“DNP␣␣a partir…”, “DANE␣␣y del…”). str_squish() quita los espacios de los extremos y deja uno solo entre palabras. Con eso, la misma fuente ya no aparece como dos categorías distintas al usar count() o group_by(). El Excel original no se tocó; la corrección vive solo en el objeto nuevo creado.

2.2 Duplicados

Para estos indicadores esperamos una fila por entidad, indicador, año y mes. Contamos cuántas veces aparece cada combinación.

## # A tibble: 0 × 6
## # ℹ 6 variables: tipo_entidad <chr>, codigo_entidad <chr>,
## #   codigo_indicador <chr>, anio <int>, mes <int>, apariciones <int>
codigo_indicador nombre_corto tipo_entidad combinaciones combinaciones_repetidas
010010009 Población total Departamento 26 0
010010009 Población total Municipio 1092 0
040010012 Cobertura neta Departamento 20 0
040010012 Cobertura neta Municipio 840 0
040020001 Deserción intraanual Departamento 22 0
040020001 Deserción intraanual Municipio 924 0
120210001 Valor agregado Municipio 546 0
filas_base_taller filas_tras_distinct
3470 3470

Encontramos que no hay combinaciones repetidas en ninguno de los cuatro indicadores, ni para municipios ni para el departamento, y distinct() no retira ninguna fila. Por lo tanto no borramos nada. Si hubieran duplicados, primero los mostraríamos y revisaríamos si son copias exactas o registros con valores diferentes, porque distinct() solo resuelve el primer caso.

Departamento y municipios separados. La fila con código 76000 es el agregado del Valle, no un municipio más. Si la mezcláramos con los municipios, Cali quedaría contada dos veces y las medianas o promedios municipales quedarían distorsionados. Por eso usamos la columna tipo_entidad en todo el taller.

2.3 Faltantes en deserción por año

Año Departamento (%) Municipios (%)
2003 0 100
2004 0 100
2005 0 100
2006 0 100
2007 0 100
2008 0 100
2009 0 100
2010 0 100
2011 0 0
2012 0 0
2013 0 0
2014 0 0
2015 0 0
2016 0 0
2017 0 0
2018 0 0
2019 0 0
2020 0 0
2021 0 0
2022 0 0
2023 0 0
2024 0 0

##  [1] 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024

El dato departamental está completo en todos los años (2003–2024). Para los municipios, todos los registros de 2003 a 2010 están vacíos (100 % faltante) y desde 2011 hasta 2024 están completos (0 %). Por eso solo es posible comparar la deserción entre municipios entre 2.011 y 2.024. Antes de 2011 únicamente tenemos el promedio del departamento, que no permite ver diferencias territoriales.

3. Base municipal para el análisis

3.1 Base 2023

Filtramos 2023, mes 12, solo municipios y los tres indicadores. Luego pasamos de formato largo a ancho con pivot_wider() para tener una fila por municipio.

3.2 Valor agregado por habitante

Calculamos el valor agregado por habitante en millones de pesos.

\[ VA_{pc,2023} = \frac{VA_{2023}\ (\text{miles de millones de pesos}) \times 1000}{\text{población}_{2023}\ (\text{personas})} \]

filas municipios_distintos incluye_departamento faltantes_poblacion faltantes_valor_agregado faltantes_cobertura
42 42 FALSE 0 0 0
codigo_entidad entidad poblacion cobertura_neta valor_agregado va_pc
76001 Cali 2.280.485 80,63 61.090,57 26,79
76520 Palmira 375.394 80,22 10.448,04 27,83
76109 Buenaventura 325.233 67,89 6.043,18 18,58
76834 Tuluá 223.026 68,90 5.227,79 23,44
76364 Jamundí 185.865 78,33 4.095,42 22,03
76147 Cartago 141.786 72,46 3.983,69 28,10

¿Por qué aparece el factor 1000?

Calculamos cuánto valor agregado le corresponde, en promedio, a cada habitante, expresado en millones de pesos. Como el valor agregado está reportado en miles de millones de pesos y queremos el resultado en millones de pesos por persona, lo multiplicamos por 1.000 para convertirlo a millones de pesos. Después, dividimos ese valor entre la población para obtener el resultado por persona.

Si no hiciéramos esta conversión, el indicador quedaría expresado en miles de millones de pesos por habitante, generando números muy pequeños y menos intuitivos de interpretar.

3.3 Cambios 2011–2023 en tres municipios

Elegimos tres municipios con perfiles distintos: Cali (la capital), Buenaventura (el puerto del Pacífico) y Yumbo (municipio industrial).

entidad poblacion_2011 poblacion_2023 variacion_poblacion_pct cobertura_2011 cobertura_2023 cambio_cobertura_pp
Yumbo 99.964 113.917 14,0 95,9 104,6 8,7
Buenaventura 297.593 325.233 9,3 66,5 67,9 1,4
Cali 2.156.926 2.280.485 5,7 87,8 80,6 -7,2

La variación de la población muestra qué tanto aumentó o disminuyó el número de habitantes entre 2011 y 2023, por lo que se expresa como un porcentaje (%). Por su parte, el cambio en la cobertura neta se calcula como la diferencia entre dos porcentajes, razón por la cual se mide en puntos porcentuales (p. p.).

Entre 2011 y 2023 la población de Cali cambió 5,7 %, la de Buenaventura 9,3 % y la de Yumbo 14 %. La cobertura neta cambió -7,2 p. p. en Cali, 1,4 p. p. en Buenaventura y 8,7 p. p. en Yumbo.

3.4 Tamaño poblacional y exportación

tamano n
Bajo 21
Alto 21

La mediana de la población en 2023 es 24.168 personas. Los municipios por encima de ella se clasifican como de tamaño alto y el resto como bajo. Como hay 42 municipios, la mediana cae entre dos municipios y los grupos quedan de 21 y 21.

filas_guardadas filas_leidas coinciden
42 42 TRUE

Al leer la base de datos, tamano vuelve como texto y codigo_entidad como número. Si volvemos a usar ese archivo, hay que convertir de nuevo la clasificación con factor().

4. Gráficos e interpretación

Histograma

minimo q1 mediana media q3 maximo
18.5 26.2 31.3 33.7 37.4 109.8

¿La mayor parte está en un mismo rango? ¿Hay una cola amplia? Sí, la mayoría de los municipios se concentra entre unos 20 y 40 millones de pesos por habitante (el 50 % central va de 26,2 a 37,4 millones, con mediana de 31,3). La distribución tiene una cola larga a la derecha: unos pocos municipios, sobre todo Yumbo (109,8 millones) y Bugalagrande, quedan muy lejos del grupo. Por esa cola, la media (33,7) es mayor que la mediana.

Caja y bigotes

tamano municipios mediana q1 q3 ric atipicos
Bajo 21 32.2 30.9 37.3 6.4 2
Alto 21 27.8 23.1 37.4 14.3 2

¿Cómo se comparan las medianas, los RIC y los atípicos? La mediana del grupo de tamaño bajo (32,2 millones) es algo mayor que la del grupo alto (27,8 millones), así que ser un municipio más poblado no implica producir más por habitante. El grupo alto es mucho más disperso, su RIC (14,3 millones) es más del doble que el del grupo bajo (6,4). En el grupo alto aparecen como atípicos Yumbo y Bugalagrande por arriba; en el bajo, Restrepo por arriba y Toro por debajo.

Dispersión

correlacion municipios_en_el_calculo
0.44 42

¿Hay asociación? La correlación de Pearson con casos completos es 0,44 y entran en el cálculo los 42 municipios. A primera vista es una asociación positiva moderada, pero el gráfico muestra que la nube de puntos no tiene una tendencia clara y que Yumbo, con el VA por habitante y la cobertura más altos, arrastra la recta. Al quitarlo, solo como prueba de sensibilidad, la correlación cae casi a cero.

municipios correlacion_sin_yumbo
41 0.08

Por lo tanto, no podemos decir que los municipios con más actividad económica por habitante tengan, en general, más cobertura, Aunque la correlación fuera alta, sería una asociación descriptiva, no una relación causal.

Líneas

Construimos una tabla anual de cobertura para todos los municipios.

¿Qué cambia a lo largo del periodo? Yumbo mantiene la cobertura más alta del grupo y sube hasta superar el 100 % en 2023 (104,6 %), lo que puede pasar cuando el municipio recibe estudiantes de otros municipios o cuando la proyección de población en edad escolar queda corta. Cali baja de 87,8 % a 80,6 %, una caída de 7,2 puntos porcentuales. Buenaventura es la serie más inestable: salta de 66,5 % en 2011 a 95,6 % en 2015 y luego desciende hasta 67,9 % en 2023, casi el mismo nivel de partida; ese pico tan brusco merece revisarse en la fuente antes de interpretarlo como un cambio real.

Barras

¿Qué muestra el ordenamiento y qué no permite concluir? El ordenamiento muestra que Yumbo está muy por encima del resto y que el top 10 incluye municipios pequeños como Restrepo, Yotoco, Obando y Bolívar, mientras que Cali, la ciudad más grande, no aparece. No permite concluir que sus habitantes tengan mayores ingresos ni mejor calidad de vida. El valor agregado se registra donde está la producción (plantas industriales, ingenios, zonas francas) y no donde viven o reciben ingresos los dueños y trabajadores. Tampoco muestra cuánto pesa cada municipio en la economía del departamento, Cali tiene un VA por habitante medio, pero concentra la mayor parte del VA total.

Promedio simple, promedio ponderado y dato departamental

medida va_pc
Promedio simple de los 42 municipios 33.7
Promedio ponderado por población (VA total / población total) 29.4

El promedio simple trata igual a Argelia (unos 5.500 habitantes) que a Cali (2,3 millones), y por eso queda arrastrado por municipios pequeños o con valores extremos como Yumbo. El promedio ponderado por población es el VA total dividido por la población total de los 42 municipios y es el que se acercaría a un dato del departamento; resulta más bajo porque Cali, Buenaventura y Tuluá, muy poblados, tienen un VA por habitante medio o bajo. La base no trae el valor agregado del agregado 76000, así que el promedio ponderado es nuestra mejor aproximación.

5. Estandarización y valores atípicos

5.1 Puntuación z y mínimo–máximo

entidad va_pc va_pc_z va_pc_minmax cobertura_neta cobertura_z cobertura_minmax
Yumbo 109.81 5.15 1.00 104.58 3.15 1.00
Tuluá 23.44 -0.69 0.05 68.90 -0.49 0.32
Palmira 27.83 -0.40 0.10 80.22 0.66 0.54
El Cairo 30.26 -0.23 0.13 65.16 -0.87 0.25
Buenaventura 18.58 -1.02 0.00 67.89 -0.59 0.30
Cali 26.79 -0.47 0.09 80.63 0.71 0.54

Comprobamos la transformación, las puntuaciones z deben tener media 0 y desviación 1, y las mínimo–máximo deben ir de 0 a 1.

media_va_pc_z sd_va_pc_z min_va_pc_minmax max_va_pc_minmax
0 1 0 1

Un valor z positivo indica que el municipio está por encima del promedio de los 42 municipios, medido en desviaciones estándar: el z de 5,1 de Yumbo en VA por habitante significa que está más de cinco desviaciones estándar por encima de la media. Un z negativo, como el de Buenaventura, indica que está por debajo. Un valor mínimo–máximo cercano a 1 indica que el municipio está cerca del máximo observado dentro del rango (Yumbo es el máximo, por eso vale 1). No es un percentil: Palmira tiene 0,1 en VA por habitante, lo que no significa que esté en el 10 % más bajo; como Yumbo estira el rango, casi todos los municipios quedan comprimidos cerca de 0.

5.2 Regla de 1,5 × RIC

q1 mediana q3 ric limite_inferior limite_superior
26.2 31.34 37.4 11.2 9.4 54.2
entidad poblacion valor_agregado va_pc
Yumbo 113.917 12.508,9 109,8
Bugalagrande 25.273 1.602,1 63,4

Calculamos media y mediana con y sin los atípicos, sin borrar las filas de municipios_2023 para ver la sensibilidad.

escenario municipios media mediana
Todos los municipios 42 33.69 31.34
Sin alertas RIC 40 31.04 31.19
## [1] 42

La regla marca 2 municipios por encima del límite superior de 54,2 millones: Yumbo y Bugalagrande; ninguno queda por debajo del límite inferior. Al dejarlos por fuera, la media baja bastante más que la mediana, lo que confirma que la media es más sensible a los extremos. La base de trabajo sigue teniendo las 42 filas.

¿Por qué un atípico no es necesariamente un error?

Yumbo concentra una gran zona industrial y Bugalagrande alberga actividad agroindustrial importante con poca población; en ambos casos es esperable que el valor agregado por habitante sea muy alto. Son observaciones legítimas y, para una pregunta sobre desigualdad territorial, son parte central del fenómeno. Borrarlas cambiaría la respuesta, no la “corregiría”.

6. Una función y un ciclo

La función graficar_cobertura() recibe:

  • datos: la tabla anual de cobertura (cobertura_anual), con columnas codigo_entidad, entidad, anio y cobertura_neta;
  • municipio: el nombre (por ejemplo "Cali") o el código DANE (por ejemplo "76001") del municipio;
  • anio_inicial y anio_final: el periodo a graficar (por defecto 2011–2023).

Y devuelve un objeto ggplot: un gráfico de líneas con el nombre del municipio en el título. Antes de graficar valida que las columnas existan y que el municipio esté en la tabla.

Probamos que acepte un código:

Ahora usamos un ciclo for para los tres municipios elegidos. Dentro de un ciclo, R no muestra los gráficos automáticamente, por eso usamos print():

7. Cierre del informe

Hallazgos

  1. La actividad económica por habitante está muy concentrada en pocos municipios. En 2023, Yumbo registró 109,8 millones de pesos corrientes de valor agregado por habitante, unas 3,5 veces la mediana de los 42 municipios (31,3 millones). En el otro extremo, Buenaventura, el segundo municipio más poblado, apenas tuvo 18,6 millones por habitante.
  2. Más población no implica más valor agregado por habitante. En 2023, la mediana del VA por habitante de los 21 municipios de tamaño poblacional bajo fue 32,2 millones de pesos, frente a 27,8 millones en los 21 de tamaño alto.
  3. La cobertura educativa retrocedió en Cali y en Buenaventura no se sostuvo la mejora. Entre 2011 y 2023, la cobertura neta de Cali pasó de 87,8 % a 80,6 % (-7,2 puntos porcentuales), mientras su población creció 5,7 %. Buenaventura terminó apenas 1,4 p. p. por encima de 2011, tras alcanzar 95,6 % en 2015. Además, en 2023 la asociación entre VA por habitante y cobertura entre municipios (r = 0,44, 42 municipios) depende casi por completo de Yumbo.

Limitaciones

  1. Valor agregado en pesos corrientes y por lugar de producción. El VA por habitante mide la producción que ocurre en el municipio, no el ingreso de quienes viven allí. En municipios con grandes plantas industriales o un puerto (Yumbo, Buenaventura) el valor generado puede pertenecer a empresas o trabajadores de otros lugares. Además, al estar en pesos corrientes, no sirve para comparar entre años sin deflactar.
  2. Análisis descriptivo con una sola fotografía y pocos datos. Trabajamos con 42 municipios en un año (2023). La correlación entre VA por habitante y cobertura es una asociación sin controles: no permite concluir que más actividad económica cause más cobertura. La cobertura neta también puede verse afectada por estudiantes que estudian en un municipio distinto al que residen y por las proyecciones de población que se usan en el denominador.