Saltar al contenido

Capítulo 7

Ingresos laborales: medias, medianas y distribuciones ponderadas

Qué variables de ingreso trae la GEIH, cómo calcular medias, medianas y percentiles con el factor de expansión y por qué esos cálculos no son la medición de pobreza monetaria.

Daniel Molina BarriosActualizado el 21 de octubre de 2026

En los ingresos de la GEIH los errores más comunes no hacen fallar ningún programa. Un promedio calculado sobre filas en lugar de personas devuelve un número verosímil; una variable de ingreso tomada sin mirar su periodo de referencia también. Este capítulo recorre primero qué ingresos pregunta la encuesta y con qué alcance, se detiene después en INGLABO, la variable de ingreso laboral que trae la base pública, y dedica el resto a calcular medias, medianas y percentiles con el factor de expansión. El caso empírico central es el Magdalena en 2025, donde la mediana sin ponderar y la ponderada difieren en $300.000. Al final se explica por qué ninguno de estos cálculos es una medición de pobreza monetaria, aunque la GEIH sea la encuesta con que el DANE la produce.

El capítulo supone conocido lo que es un factor de expansión y por qué la muestra no reproduce en miniatura la población (capítulo 2, Cómo funciona la encuesta), y cómo se leen las bases anuales sin perder ceros a la izquierda ni meses (capítulo 3, Los microdatos por dentro). Todas las cifras están en pesos corrientes de cada año: el libro no deflacta, porque los materiales con que se construyó no incluyen un deflactor, y por eso los niveles de años distintos no se comparan aquí en términos reales.

Qué ingresos pregunta la GEIH#

El objetivo general de la encuesta, en su metodología vigente, nombra los ingresos junto al mercado laboral: «Proveer información estadística relacionada con mercado laboral, ingresos y pobreza monetaria, así como de las características sociodemográficas de la población residente en Colombia» (Metodología GEIH V11, p. 5). Entre los objetivos específicos figura «generar información estadística relacionada con el ingreso de los hogares, y con los indicadores de pobreza monetaria y pobreza monetaria extrema» (misma página). La consecuencia práctica es que el cuestionario pregunta por muchas fuentes de ingreso, de las personas ocupadas y de las que no lo están, y que esas preguntas alimentan después un proceso de agregación que el DANE hace por su cuenta.

La presentación del rediseño enumera las fuentes de ingreso que el DANE agrega a partir de la GEIH. Se reproducen en la tabla 7.1 con las observaciones que trae la propia lámina. La segunda columna es una clasificación del autor que sigue la lógica de los capítulos del cuestionario: laboral, no laboral y, aparte, el autoconsumo, que no es un pago sino un consumo valorado a precio de compra.

Tabla 7.1Fuentes de ingreso que el DANE agrega a partir de la GEIH marco 2018
Fuente de ingresoTipoObservación en la fuente
Ingreso monetario primera actividadLaboralIncluye innovaciones para trabajadores independientes
Ingreso monetario segunda actividadLaboral
Ingreso en especieLaboralIncluye innovaciones para trabajadores independientes
Ingreso monetario de desocupados y fuera de la fuerza laboralLaboral
Intereses y dividendos por inversiones (IOF1)No laboral
Pensiones y jubilaciones (IOF2)No laboralIncluye enriquecimiento con registros administrativos
Pensión alimenticia y ayudas de hogares (IOF3H)No laboralSe evaluará enriquecimiento con registros administrativos
Ayudas institucionales (IOF3I)No laboralIncluye enriquecimiento con registros administrativos
Cesantías (IOF4)No laboral
Arriendos (IOF6)No laboral
AutoconsumoEn especieInnovación en la GEIH marco 2018

Fuente: Enfoque conceptual GEIH 2022, p. 53

Nota: Los códigos IOF aparecen en la lámina sin definición. La columna «Tipo» es una clasificación del autor, no del DANE.

Tres hechos de la tabla importan para el resto del capítulo. El primero es que varias fuentes no salen únicamente de la encuesta: las pensiones y las ayudas institucionales se completan con registros administrativos, de modo que el ingreso que el DANE usa en sus publicaciones de ingreso y pobreza no puede reconstruirse por completo con los microdatos públicos. El segundo, que los desocupados y la población fuera de la fuerza de trabajo también tienen una fuente de ingreso monetario propia, coherente con que el capítulo de no ocupados indague por «trayectoria laboral, ingresos y seguridad social» (Metodología GEIH V11, p. 9). Se clasifica como laboral porque ya en el formulario del marco 2005 la pregunta a desocupados e inactivos era si habían recibido o ganado el mes pasado ingresos por concepto de trabajo (Metodología GEIH V9, pp. 79-80). El tercero es que el autoconsumo figura como fuente aparte, separada del ingreso en especie.

Empleo principal y empleo secundario#

Para los asalariados, el ingreso monetario de la primera actividad se arma con el salario y una lista larga de componentes: horas extras, subsidios educativo, de alimentación, de transporte y familiar, primas técnicas, de navidad, de vacaciones y de servicios, bonificaciones, viáticos permanentes y pagos por accidentes de trabajo. Para los independientes la lámina dice solo «honorarios o ganancia neta» (Enfoque conceptual GEIH 2022, p. 54). El rediseño agregó una pregunta que separa a los independientes en tres grupos (trabajo por honorarios o prestación de servicios; trabajo por obra, piezas, destajo, comisiones o en su oficio; y negocio de industria, comercio, servicios o finca), y para los que tienen negocio pide ingresos y gastos con el fin de obtener ingresos netos. La misma lámina aclara que «en la GEIH Marco 2005 no existía esta desagregación» (Enfoque conceptual GEIH 2022, p. 55).

El empleo secundario se indaga aparte, con horas, posición ocupacional, remuneración mensual, tamaño de la empresa y sitio de trabajo (Metodología GEIH V11, p. 9). Para quien analiza ingresos esto tiene una implicación inmediata: el salario declarado en la pregunta del empleo principal no es el ingreso laboral total de la persona, y cualquier variable que sume componentes tiene que decir cuáles suma.

Pagos en especie y autoconsumo#

Los pagos en especie de los asalariados se preguntaban ya en el formulario del marco 2005, con un monto estimado para alimentos, vivienda, transporte de la empresa y otros bienes recibidos como parte de pago (Metodología GEIH V9, p. 69). El rediseño los extendió a los independientes, con dos preguntas sobre alimentos y vivienda que no se aplican a quienes tienen negocio o finca. La misma lámina precisa que en el marco 2005 esas preguntas no se hacían a los independientes y advierte que «el proceso de construcción del Ingreso en Especie debe tener en cuenta la diferenciación asalariados e independientes» (Enfoque conceptual GEIH 2022, p. 56). De ahí se sigue que, para los independientes, el ingreso en especie de 2022 en adelante no tiene contraparte en las bases del marco anterior.

Concepto DANE

Por qué se agregó el autoconsumo

«En la GEIH Marco 2005, el tratamiento de los ingresos de las personas que se encuentran en zonas rurales es el mismo que el de las personas que se encuentran en las cabeceras. Por lo tanto, no se tenían en cuenta los ciclos que pueden existir en los ingresos de las personas que se dedican a actividades agropecuarias ni el autoconsumo que puede traducirse en mayores niveles de ingresos.»

Fuente: Enfoque conceptual GEIH 2022, p. 57

La pregunta de autoconsumo, la 44 del capítulo de ocupados, se hace a los independientes que tienen negocio propio en el sector agropecuario: si en el mes anterior ellos o algún miembro del hogar tomaron algo de lo que cultivaron, produjeron o extrajeron para consumo del hogar (Metodología GEIH V11, p. 11), y cuánto tendrían que pagar si tuvieran que comprarlo (Enfoque conceptual GEIH 2022, p. 57). Las fuentes revisadas no dicen si ese valor entra en alguna variable de ingreso individual de la base pública. Quien compare ingresos de cabeceras con los de centros poblados y rural disperso debe tenerlo presente, porque en estos últimos se concentran las actividades agropecuarias a las que apunta la pregunta.

Ingresos no laborales#

El capítulo del cuestionario que antes se llamaba «Otros ingresos» pasó a llamarse «Otros ingresos e impuestos» porque incorporó seis preguntas de impuestos «asociadas a la medición del ingreso disponible» (Metodología GEIH V11, p. 12). En ese capítulo «se determina cuáles personas recibieron otros ingresos distintos a los laborales» (Metodología GEIH V11, p. 11), que corresponden a las fuentes no laborales de la tabla 7.1: intereses y dividendos, pensiones, pensión alimenticia y ayudas de otros hogares, ayudas institucionales, cesantías y arriendos. Ninguna entra en el ingreso laboral que se estudia en el resto de este capítulo. La composición del bloque de ayudas en dinero, además, cambió en la base de 2025 frente a las anteriores, como se documenta en la sección del capítulo 3 sobre las columnas que cambian entre años, así que una serie de transferencias exige revisar las variables año por año.

Periodos de referencia que no se suman sin cuidado#

La metodología fija periodos distintos según el tipo de ingreso. El «mes pasado» es «el mes inmediatamente anterior al que se está realizando la encuesta y aplica para la información relacionada con los ingresos laborales»; el «último mes y los últimos doce meses» aplica, entre otras cosas, a «la identificación de los ingresos no laborales» (Metodología GEIH V11, p. 14). Dentro de los laborales también hay excepciones: los gastos de los negocios no agropecuarios se preguntan para el mes anterior y los de actividades agropecuarias y mineras para los últimos doce meses (Metodología GEIH V11, p. 11). El problema no es nuevo: en el formulario del marco 2005 las primas de servicios, de navidad y de vacaciones se preguntaban como montos recibidos en los últimos 12 meses, aparte del salario del mes pasado (Metodología GEIH V9, p. 71).

Sumar un ingreso mensual con uno anual sin convertirlo produce un total que no corresponde a ningún periodo. Para llegar a un ingreso mensual comparable hay que mensualizar los componentes anuales, decidir qué hacer con los meses sin pago y evitar el doble conteo de componentes que el encuestado ya incluyó en su salario (el formulario pregunta expresamente si ciertos montos se incluyeron en lo ya declarado (Metodología GEIH V9, p. 69)). Esas decisiones son parte de la construcción del ingreso total del hogar, y su regla oficial no está en los documentos metodológicos revisados para este libro. Por eso el capítulo trabaja con una sola variable, ya construida por el DANE, y no intenta armar un ingreso total.

Lo que se sabe de INGLABO y lo que no#

La base pública trae una columna, INGLABO, que el diccionario etiqueta como «Ingresos laborales» sin describir cómo se construye. Ninguno de los documentos metodológicos del DANE revisados para este libro la menciona. Lo que se sabe de ella viene de examinar los microdatos, y hay que separarlo con cuidado de lo que se supone.

Lo verificado en las cuatro bases es lo siguiente. INGLABO solo tiene valor para ocupados: no hay ninguna fila fuera de la población ocupada con la variable informada. Sus valores son enteros, sin decimales, y no aparecen en ella los códigos 98 o 99. Entre los ocupados hay ceros y hay faltantes, y los faltantes tienen dos orígenes distintos que la tabla 7.2 separa: los trabajadores familiares sin remuneración (P6430 = 6) tienen la variable vacía en todos los casos, de modo que su faltante es estructural; el resto de faltantes corresponde a ocupados que debían declarar un ingreso y no lo hicieron.

Tabla 7.2Ocupados según la información de INGLABO, total nacional, 2022 a 2025
AñoOcupados (filas)Faltantesde ellos, familiares sin remuneraciónCerosIngreso positivo (filas)Ocupados expandidos con ingreso positivo (%)
2022382.46118.4406.5874.861359.16093,69
2023365.81913.9296.4513.524348.36694,59
2024353.67215.1205.9673.017335.53593,96
2025358.0298.1995.8302.640347.19096,34

Fuente: Cálculo propio con microdatos GEIH 2022 a 2025 (DANE), geih-lab/scripts/04_ingresos.py, bloque calidad de ingresos_cuantiles.json.

Nota: Filas persona-mes de los 12 meses apilados. La última columna usa FEX_C18; las demás cuentan filas.

La relación de INGLABO con las preguntas de origen también se puede observar. El script siguiente, ejecutado sobre la base de 2025 con el módulo de lectura del laboratorio, compara la variable con el salario del mes pasado de los asalariados (P6500) y con la ganancia neta de los independientes (P6750).

Pythoncomprobación propia sobre geih_2025.csv con geih-lab/geihlab/lectura.py
import polars as pl
from geihlab.lectura import leer_geih

oc = leer_geih(2025, ["OCI", "INGLABO", "P6430", "P6500", "P6750"]).filter(pl.col("OCI") == 1)

asal = oc.filter(pl.col("P6430").is_in([1, 2, 3]) & pl.col("P6500").is_not_null() & pl.col("INGLABO").is_not_null())
indep = oc.filter(pl.col("P6430").is_in([4, 5]) & pl.col("P6750").is_not_null() & pl.col("INGLABO").is_not_null())

print("asalariados:", asal.height,
      "| INGLABO >= P6500:", round(100 * (asal["INGLABO"] >= asal["P6500"]).mean(), 1), "%",
      "| INGLABO == P6500:", round(100 * (asal["INGLABO"] == asal["P6500"]).mean(), 1), "%")
print("independientes:", indep.height,
      "| INGLABO == P6750:", round(100 * (indep["INGLABO"] == indep["P6750"]).mean(), 1), "%")

# Salida:
# asalariados: 180081 | INGLABO >= P6500: 100.0 % | INGLABO == P6500: 88.5 %
# independientes: 161140 | INGLABO == P6750: 96.5 %
Ejecutado para este capítulo; la salida es la real.

Entre los asalariados con salario informado, INGLABO nunca es menor que P6500 y coincide con él en casi nueve de cada diez casos; entre los independientes coincide con P6750 en más del 96 %. La lectura razonable es que la variable parte del salario o la ganancia del empleo principal y le suma otros componentes en una parte de los casos. Qué componentes son (horas extras, pagos en especie, segunda actividad, primas prorrateadas) no se puede saber desde aquí, y tampoco si hay algún tratamiento de valores extremos. Esa es la limitación principal del capítulo: todas las medidas de distribución que siguen describen una variable cuya regla de construcción se desconoce.

Explicación del autor

El universo que usa este capítulo

Las medidas se calculan sobre ocupados (OCI = 1) con INGLABO mayor que cero. Ese universo de análisis, distinto del universo de estudio de la encuesta, lo elige el autor y tiene consecuencias: en 2025 deja por fuera, en el total nacional, 2.640 filas con ingreso cero y 8.199 faltantes, de los cuales 5.830 son trabajadores familiares sin remuneración. Incluir los ceros respondería a otra pregunta, la del ingreso laboral de todos los ocupados, y podría bajar los percentiles inferiores. Cualquiera de las dos opciones es defendible si el universo se declara junto a la cifra.

Códigos que no son pesos#

En las preguntas de valor del formulario, el 98 y el 99 no son montos. En el formulario del marco 2005, la instrucción de la pregunta del salario era registrar 00 si no recibió salario en dinero, 98 si recibió pero no sabe el monto y 99 si no informa el monto (Metodología GEIH V9, p. 69). En las cuatro bases anuales que usa este libro esos códigos aparecen solo en enero de 2022: en el total nacional hay 594 filas con 98 y 1.051 con 99 en P6500, y 854 y 1.050 en P6750. Desde febrero de 2022 no vuelven a aparecer. En el Magdalena, el mismo mes trae 107 filas con esos códigos en P6500 y 204 en P6750.

INGLABO casi no hereda el problema: en el total nacional está vacía en 3.527 de los 3.549 casos con esos códigos en una de las dos preguntas, y en ningún año toma el valor 98 o 99. Quien trabaje directamente con P6500 o P6750 sí tiene que limpiarlos antes de calcular cualquier cosa, porque una media que incluya enero de 2022 sin esa limpieza trata «no sabe» como si fueran 98 pesos. La regla general es que una variable de monto se revisa contra los códigos especiales de su pregunta antes de entrar a un cálculo, y que el diccionario de cada año, no uno compilado, es el que dice cuáles son.

Dos afirmaciones sobre la imputación#

Concepto DANE

«En esta operación estadística no se realiza el proceso de imputación. Cuando los miembros de los hogares se niegan a responder la encuesta, esta falta de respuesta es ajustada con los factores de expansión.»

Fuente: Metodología GEIH V11, p. 27

La presentación del rediseño, en cambio, cuenta entre los motivos de la revisión que «se presenta un incremento en la imputación de ingresos» (Enfoque conceptual GEIH 2022, p. 4), y al hablar del ingreso en especie menciona las «implicaciones para la imputación de ingresos» (Enfoque conceptual GEIH 2022, p. 56). Las dos afirmaciones no se contradicen necesariamente. La lectura del autor es que la metodología habla del tratamiento de la no respuesta en la base de la encuesta, donde el ajuste se hace con los factores, y la presentación habla del procesamiento que el DANE hace después para medir ingresos y pobreza. El método de esa imputación no está documentado en las fuentes revisadas.

Para el análisis, la consecuencia es concreta. El factor de expansión corrige la no respuesta de hogares completos, no la de una pregunta. Si un ocupado respondió la encuesta pero no su ingreso, su fila queda con el faltante y su factor sigue contando para los totales de ocupados. Al calcular una mediana sobre quienes sí declararon ingreso, se supone implícitamente que los que no declararon se distribuyen como los que sí. En 2025 los faltantes distintos de los familiares sin remuneración son 2.369 filas en el total nacional, un número pequeño frente a 347.190 con ingreso positivo; en 2022 eran 11.853. Que sean pocos reduce el riesgo, pero no lo elimina si la no respuesta se concentra en los ingresos altos o en los independientes.

Media, mediana y cuantiles con factor de expansión#

Cada fila de la GEIH representa, en el mes en que se encuestó, a un número de personas igual a su factor FEX_C18. En 2025 la mediana del factor entre todas las filas persona-mes es 317,95 y sus valores van de 6,70 a 17.668,83 (la distribución completa está en el capítulo 2). La dispersión tiene causas conocidas. El tamaño de la muestra se fija por dominio para cumplir metas de precisión, y la estratificación de municipios buscó un diseño autoponderado, aunque la metodología reconoce que «esta característica no se puede asegurar» (Metodología GEIH V11, p. 15). El factor básico incorpora, además, un ajuste por la pérdida de viviendas, hogares y personas dentro de cada segmento (Metodología GEIH V11, pp. 18-19), y sobre él actúa la calibración con proyecciones de población (Metodología GEIH V11, pp. 19-20). El resultado es que las filas pesan distinto, y que una estadística que las trate como iguales describe la muestra y no la población.

La media ponderada es la conocida suma de valores multiplicados por sus pesos, dividida por la suma de los pesos. Con yi el ingreso de la fila i y wi su factor:

y‾w=∑wiyi∑wi(7.1)

El cuantil ponderado sigue la misma idea que el cuantil de siempre, con la diferencia de que «la mitad» o «el 90 %» se miden en personas representadas y no en filas. Se ordenan los valores de menor a mayor, se acumulan los pesos en ese orden y el cuantil q es el primer valor ordenado cuyo peso acumulado alcanza q veces el peso total. Con y(k) el valor que ocupa el lugar k tras ordenar y Wk la suma de los pesos hasta ese lugar:

Qw(q)=y(k*),k*=min{k:Wk≥q·Wn}(7.2)

Esta regla no interpola: devuelve siempre un valor que existe en los datos. Con pesos enteros equivale a repetir cada fila tantas veces como indica su peso y tomar el cuantil de la lista resultante con la definición de la inversa de la función de distribución empírica; el laboratorio comprueba esa equivalencia con un caso aleatorio contra numpy.quantile(..., method="inverted_cdf"). La media no necesita nada especial (numpy.average acepta pesos). Con los cuantiles hay que fijarse en la herramienta: numpy.quantile acepta pesos desde la versión 2.0, pero solo con ese mismo método, mientras que median y quantile de R base no los reciben. Por eso el laboratorio escribe el algoritmo aparte y lo prueba.

Una precisión que evita una confusión frecuente: la base anual apila los doce meses y cada factor expande al mes, así que para un total anual promedio la suma de factores se divide entre 12. Para una media, una mediana o un porcentaje no hace falta, porque dividir todos los pesos por la misma constante no cambia ninguno de esos estadísticos.

Cinco encuestados simulados#

El mecanismo se entiende mejor en un caso que se puede seguir con lápiz. La figura 7.1 tiene cinco encuestados inventados: tres de cabecera con ingresos de 1,5, 1,8 y 2,2 millones y un factor de 250 cada uno, y dos de centros poblados y rural disperso con 600.000 y 800.000 pesos y un factor de 1.100. Los números son del autor; la proporción entre los factores se eligió parecida a la que se observa en el Magdalena, donde el factor mediano de un ocupado con ingreso en centros poblados y rural disperso es 1.136 frente a 264 en cabeceras.

Figura 7.1Simulado: no son datos de la GEIHCinco encuestados con factores de expansión editablesSin pesos la mediana es 1,5 millones; con pesos, 800.000 pesos.

Ejemplo simulado: cinco encuestados inventados

Ingreso y factor de expansión de cada encuestado; ambos se pueden editar
EncuestadoIngreso mensual (pesos)Factor de expansión
A Cabecera
B Cabecera
C Cabecera
D Centro poblado y rural disperso
E Centro poblado y rural disperso
Mediana sin pesos
$1.500.000
Mediana ponderada
$800.000
Media sin pesos
$1.380.000
Media ponderada
$988.136
Sin pesos, mediana $1.500.000 y media $1.380.000. Con pesos, mediana $800.000 y media $988.136.Sin pesos: cada fila cuenta igualABCDECon pesos: cada fila cuenta según su factorABCDE0,0 M0,6 M1,2 M1,8 M2,4 M

Triángulo: mediana. Línea punteada: media. Eje en millones de pesos.

Dónde cae la mitad de las personas representadas

Barra de pesos acumulados ordenados por ingreso; la mitad del total cae en el encuestado cuyo ingreso es la mediana ponderada.DEABC50 % del peso total
Ingresos ordenados con pesos acumulados
OrdenIngresoFactorAcumulado% acumulado
1. D$600.0001.1001.10037,3 %
2. E$800.0001.1002.20074,6 %
3. A$1.500.0002502.45083,1 %
4. B$1.800.0002502.70091,5 %
5. C$2.200.0002502.950100,0 %

Ejemplo simulado del autor. La mediana ponderada devuelve un valor que existe en los datos, sin interpolar; con pesos iguales y un número par de encuestados puede diferir de la mediana sin pesos, que promedia los dos valores centrales.

Propósito: Mostrar, con números que se pueden seguir a mano, por qué la mediana de las filas y la de las personas representadas pueden ser muy distintas.

Unidad
Pesos por mes (ingreso) y personas representadas por fila (factor)
Periodo
No aplica
Cobertura
Cinco encuestados inventados
Fuente
Ejemplo simulado del autor. Cálculo con la regla de geih-lab/geihlab/ponderacion.py.
Notas: Los ingresos y los factores se pueden editar; el botón de pesos iguales muestra el cálculo sin ponderar.
Ver los datos de la figura

Ejemplo simulado con cinco encuestados inventados: tres de cabecera con los ingresos más altos y factor de expansión pequeño, y dos de centro poblado y rural disperso con ingresos más bajos y factor grande. La figura calcula en vivo la media y la mediana con y sin factor. Sin pesos, cada fila cuenta igual; con pesos, cada encuestado cuenta por las personas que representa, y la mediana ponderada es el primer ingreso ordenado cuyo peso acumulado alcanza la mitad del peso total. La tabla de pesos acumulados de la figura muestra ese recorrido paso a paso.

TablaSimuladoValores iniciales del ejemplo
EncuestadoClaseIngreso (pesos)Factor
ACabecera1.500.000250
BCabecera1.800.000250
CCabecera2.200.000250
DCentro poblado y rural disperso600.0001.100
ECentro poblado y rural disperso800.0001.100

Ejemplo simulado

Cifras inventadas con fines didácticos. No provienen de la GEIH.

El cálculo paso a paso

En la muestra, los dos encuestados de centros poblados y rural disperso son 2 de 5 filas. En la población que representan son 2.200 de 2.950 personas, alrededor de tres de cada cuatro. La mediana sin pesos ordena los cinco ingresos y toma el tercero: 1.500.000. La ponderada acumula los factores en el mismo orden: 1.100 en 600.000, 2.200 en 800.000. La mitad del total es 1.475 y el acumulado la alcanza en el segundo valor, así que la mediana ponderada es 800.000. La media sin pesos es 1.380.000; la ponderada, 988.136 pesos.

Ninguno de los dos resultados tiene un error de cálculo. Responden preguntas distintas: la mediana sin pesos describe a las cinco personas entrevistadas y la ponderada describe a las 2.950 que ellas representan. Solo la segunda es una estimación sobre la población.

Ordenar y acumular pesos#

El laboratorio implementa la regla en geih-lab/geihlab/ponderacion.py. La función principal calcula varios cuantiles con un solo ordenamiento, y antes de calcular descarta las observaciones con valor o peso no finito y las de peso menor o igual a cero.

Pythongeih-lab/geihlab/ponderacion.py
def cuantiles_ponderados(
    values: ArrayLike, weights: ArrayLike, qs: Sequence[float]
) -> list[float]:
    """Varios cuantiles ponderados con un solo ordenamiento.

    Para cada ``q`` en ``qs`` (entre 0 y 1) devuelve el primer valor ordenado
    cuyo peso acumulado es mayor o igual que ``q * peso_total``.
    """
    for q in qs:
        if not 0.0 <= q <= 1.0:
            raise ValueError(f"q debe estar entre 0 y 1: {q}")
    v, w = _limpiar(values, weights)
    if v.size == 0:
        return [float("nan")] * len(qs)
    orden = np.argsort(v, kind="mergesort")
    v = v[orden]
    acum = np.cumsum(w[orden])
    total = acum[-1]
    salida = []
    for q in qs:
        idx = int(np.searchsorted(acum, q * total, side="left"))
        idx = min(idx, v.size - 1)
        salida.append(float(v[idx]))
    return salida
Fragmento del módulo; _limpiar descarta valores y pesos no finitos y pesos no positivos.

La búsqueda con side="left" es la que fija la regla de desempate: si el acumulado iguala exactamente q veces el total, el cuantil es ese valor y no el siguiente. Los valores repetidos, que abundan porque los ingresos se declaran en cifras redondas, no crean ambigüedad: el orden entre empates no cambia el valor devuelto, y el ordenamiento estable (mergesort) solo deja determinado el orden de las filas. Lo que sí distingue a esta regla de otras es que no interpola, de modo que con pesos iguales y un número par de datos puede diferir de numpy.median, que promedia los dos centrales. El bloque siguiente aplica el módulo al ejemplo simulado; la penúltima línea muestra esa diferencia y la última comprueba que numpy.quantile con pesos da el mismo P25 y la misma mediana que el módulo.

Pythonejemplo con geih-lab/geihlab/ponderacion.py
import numpy as np
from geihlab.ponderacion import cuantil_ponderado, mediana_ponderada, media_ponderada

# Ejemplo simulado: ingresos y factores inventados
ingreso = np.array([1_500_000, 1_800_000, 2_200_000, 600_000, 800_000])
fex = np.array([250, 250, 250, 1_100, 1_100])

print(np.median(ingreso))                            # 1500000.0
print(mediana_ponderada(ingreso, fex))               # 800000.0
print(ingreso.mean())                                # 1380000.0
print(round(media_ponderada(ingreso, fex), 2))       # 988135.59
print(cuantil_ponderado(ingreso, fex, 0.25))         # 600000.0
print(cuantil_ponderado(ingreso, np.ones(5), 0.25))  # 800000.0
print(mediana_ponderada([1, 2, 3, 4], [1, 1, 1, 1]), np.median([1, 2, 3, 4]))  # 2.0 2.5
print(np.quantile(ingreso, [0.25, 0.5], weights=fex, method="inverted_cdf"))    # [600000 800000]
Ejecutado con el módulo del laboratorio; los comentarios muestran la salida real.

Con cientos de miles de filas y montos declarados en cifras redondas, interpolar o no casi nunca cambia el resultado, pero hay que conocer la regla antes de comparar contra otra herramienta. Para controlar la implementación, el script de ingresos calcula todos los cuantiles una segunda vez con una acumulación escrita en polars: en las 240 celdas comparadas la diferencia máxima es 0. Ese es el único control disponible para estas cifras, porque ninguna de las publicaciones del DANE consultadas trae cuantiles de INGLABO.

En R la media ponderada viene en la instalación base (weighted.mean), pero los cuantiles ponderados no. La traducción de la misma regla es corta. Se incluye como alternativa para quien trabaje en R; no se ejecutó en esta versión del libro, porque el entorno del autor no tiene R instalado.

R
cuantil_ponderado <- function(values, weights, q) {
  ok <- is.finite(values) & is.finite(weights) & weights > 0
  v <- values[ok]
  w <- weights[ok]
  if (length(v) == 0) return(NA_real_)
  ord <- order(v)
  w_cum <- cumsum(w[ord])
  v[ord][w_cum >= w_cum[length(w_cum)] * q][1]
}

ingreso <- c(1500000, 1800000, 2200000, 600000, 800000)  # simulado
fex     <- c(250, 250, 250, 1100, 1100)                    # simulado

median(ingreso)                       # mediana de las filas
cuantil_ponderado(ingreso, fex, 0.5)  # mediana de las personas representadas
weighted.mean(ingreso, fex)           # la media ponderada ya viene en R base
No ejecutado en esta versión del libro. Misma regla de acumulación que el módulo de Python.

El factor de expansión da la estimación puntual correcta, pero no su margen de error. Para un error estándar de la mediana con el diseño de la GEIH harían falta el estrato de diseño y el segmento de cada vivienda, y la metodología los lista entre las variables de identificación que «no se manejan en las bases de datos de acceso público» (Metodología GEIH V11, p. 27). Con los microdatos públicos no se puede declarar el diseño muestral del DANE en ningún paquete; el capítulo 8 explica por qué y qué aproximación se puede construir en su lugar.

El Magdalena en 2025, sin ponderar y con factor#

El Magdalena es el caso donde el error de no ponderar se ve con más claridad. En 2025 hay 13.950 filas de ocupados con ingreso laboral positivo en el departamento (DPTO = 47), que representan en promedio mensual a 594.008 personas. El script siguiente, que usa el lector y el módulo de ponderación del laboratorio, reproduce los cuantiles principales con su salida real.

Pythoncomprobación propia con geih-lab/geihlab
import numpy as np
import polars as pl
from geihlab.lectura import leer_geih
from geihlab.ponderacion import cuantiles_ponderados, media_ponderada

geih = leer_geih(2025, ["OCI", "INGLABO", "FEX_C18", "DPTO", "CLASE"])

# Universo declarado: ocupados con ingreso laboral positivo
ocupados = geih.filter((pl.col("OCI") == 1) & (pl.col("INGLABO") > 0))
mag = ocupados.filter(pl.col("DPTO") == "47")  # DPTO ya viene rellenado a 2 caracteres

v = mag["INGLABO"].to_numpy()
w = mag["FEX_C18"].to_numpy()
qs = [0.25, 0.50, 0.75, 0.90]

print("filas:", mag.height, "| personas (promedio mensual):", round(w.sum() / 12))
print("sin ponderar:", cuantiles_ponderados(v, np.ones_like(v), qs), round(v.mean()))
print("ponderado:   ", cuantiles_ponderados(v, w, qs), round(media_ponderada(v, w)))

# Salida:
# filas: 13950 | personas (promedio mensual): 594008
# sin ponderar: [750000.0, 1300000.0, 1680000.0, 3000000.0] 1514578
# ponderado:    [500000.0, 1000000.0, 1450000.0, 2300000.0] 1227293
Ejecutado sobre geih_2025.csv; reproduce las cifras de ingresos_cuantiles.json.

Resultado reproducido

Calculado con los microdatos de la GEIH por el laboratorio del libro.

La mediana sin ponderar del ingreso laboral de los ocupados del Magdalena en 2025 es $1.300.000; la ponderada, $1.000.000. La cifra sin factor sobreestima la mediana en un 30 %. La media pasa de $1.514.578 a $1.227.293, y el porcentaje de ocupados con un ingreso de hasta un millón de pesos, de 40,6 % a 53,4 %.

Ficha del resultado · Mediana ponderada de INGLABO, Magdalena, 2025Sin referente oficial
Periodo
2025
Ámbito
Magdalena
Microdatos
GEIH marco 2018, bases anuales 2022 a 2025
Variables
OCI, INGLABO, FEX_C18, DPTO, CLASE, P6430, P6500, P6750, MES
Filtros
OCI == 1 e INGLABO > 0. Magdalena: DPTO == '47' tras rellenar a 2 caracteres.
Universo
Ocupados con ingreso laboral positivo
Factor
FEX_C18 sobre las filas de los 12 meses; población = suma de FEX_C18 / 12 (promedio mensual)
Método
Cuantil q: primer valor ordenado cuyo peso acumulado es mayor o igual que q por el peso total, sin interpolar (geihlab.ponderacion). Sin ponderar: misma regla con peso 1. Media ponderada: suma(v w) / suma(w). pct_hasta_1000000: porcentaje (ponderado, o de filas sin ponderar) con INGLABO menor o igual que 1.000.000 pesos; ese valor está en %, no en pesos.
Muestra
13.950 filas-mes en el universo del indicador
Código
geih-lab/scripts/04_ingresos.py · commit 0864525

Contraste con la cifra oficial

Propio1.000.000 pesos
Oficialsin cifra publicada

El DANE no publica una cifra comparable; es una estimación propia.

Por qué no hay referente: El DANE no publica cuantiles ni medias de INGLABO en los documentos revisados.

La última cifra es la que cambia una conclusión. Contando filas, menos de la mitad tiene un ingreso laboral de un millón o menos; contando personas, más de la mitad. El umbral del millón es una cifra redonda elegida para el ejemplo, no una línea de pobreza ni el salario mínimo de 2025. La tabla 7.3 muestra que el sesgo recorre toda la distribución y no solo la mediana.

Tabla 7.3Ingreso laboral de los ocupados del Magdalena, sin ponderar y con factor de expansión, 2025
EstadísticoSin ponderarCon factor de expansión
P10$350.000$200.000
P25$750.000$500.000
Mediana$1.300.000$1.000.000
P75$1.680.000$1.450.000
P90$3.000.000$2.300.000
Media$1.514.578$1.227.293
Ocupados con ingreso de hasta $1.000.000 (%)40,5753,36

Fuente: Cálculo propio con microdatos GEIH 2025 (DANE), geih-lab/scripts/04_ingresos.py.

Nota: Universo: ocupados con INGLABO > 0, 13.950 filas. Pesos corrientes. Sin referente oficial.

La figura 7.2 permite recorrer las mismas medidas para los cuatro años, para el total nacional y para cada clase. Si se deja el Magdalena y se cambia de año, el patrón se repite: en 2022, 2023 y 2024 la mediana sin ponderar también queda por encima de la ponderada ($800.000 frente a $650.000 en 2022; $1.000.000 frente a $800.000 en 2023; $1.160.000 frente a $900.000 en 2024). El sentido del sesgo es estable en el departamento, y eso apunta a una causa estructural más que a una fluctuación de la muestra.

Figura 7.2Media y percentiles del ingreso laboral, con y sin factor de expansiónEn el Magdalena, 2025, la mediana ponderada es $1.000.000 y la sin ponderar $1.300.000.

Propósito: Comparar, para cada año, ámbito y clase, cuánto cambian la media y los percentiles cuando se cuentan personas en lugar de filas.

Unidad
pesos corrientes por mes (pct_hasta_1000000 en %); población en miles de personas
Periodo
2022 a 2025 (enero a diciembre de cada año, 12 meses apilados)
Cobertura
Total nacional; Magdalena (DPTO 47); por CLASE (1 cabeceras, 2 centros poblados y rural disperso)
Fuente
Cálculo propio con microdatos GEIH 2022 a 2025 (ANDA, DANE), geih-lab/scripts/04_ingresos.py.
Notas: Sin referente oficial. Pesos corrientes de cada año, sin deflactar. Los selectores cambian año, ámbito y clase.
  • Sin referente oficial: el DANE no publica cuantiles de INGLABO entre los materiales revisados. Son estimaciones propias. El control es interno: dos implementaciones del cuantil ponderado (numpy y polars) dan exactamente lo mismo.
  • INGLABO es una variable construida por el DANE cuya regla no está documentada en las fuentes revisadas. No incluye ingresos no laborales.
  • Pesos corrientes de cada año; no se deflacta. Los niveles de años distintos no son comparables en términos reales.
  • Ninguna de estas medidas es pobreza monetaria: esa metodología usa el ingreso per cápita de la unidad de gasto, imputaciones y líneas de pobreza que no se aplican aquí.
  • Sin estrato ni segmento en la base pública no hay error estándar de los cuantiles.
  • Excluye ceros y faltantes de INGLABO (ver bloque calidad). Los faltantes de los trabajadores familiares sin remuneración son estructurales; los del resto son no respuesta de ítem.
  • En enero de 2022 P6500 y P6750 traen los códigos 98 y 99 (no son pesos); INGLABO es nulo en casi todos esos casos y no trae 98 ni 99 (ver bloque calidad).
  • verificacion_articulo contrasta las cifras del artículo publicado antes del libro; las que no coinciden deben corregirse en el capítulo.
Ver los datos de la figura
TablaIngreso laboral (INGLABO) con y sin factor de expansión, pesos corrientes
EstadísticoAñoÁmbitoClaseCon factor de expansiónSin ponderarFilas de la muestra
P102022Total nacionalTotal$250.000$300.000359.160
P252022Total nacionalTotal$500.000$600.000359.160
Mediana2022Total nacionalTotal$1.000.000$1.000.000359.160
Media2022Total nacionalTotal$1.437.114$1.346.375359.160
P752022Total nacionalTotal$1.450.000$1.400.000359.160
P902022Total nacionalTotal$2.800.000$2.600.000359.160
P102022Total nacionalCabeceras$300.000$300.000317.169
P252022Total nacionalCabeceras$680.000$600.000317.169
Mediana2022Total nacionalCabeceras$1.000.000$1.000.000317.169
Media2022Total nacionalCabeceras$1.608.779$1.414.950317.169
P752022Total nacionalCabeceras$1.600.000$1.500.000317.169
P902022Total nacionalCabeceras$3.000.000$2.800.000317.169
P102022Total nacionalCentros poblados y rural disperso$150.000$160.00041.991
P252022Total nacionalCentros poblados y rural disperso$300.000$320.00041.991
Mediana2022Total nacionalCentros poblados y rural disperso$600.000$680.00041.991
Media2022Total nacionalCentros poblados y rural disperso$773.042$828.41041.991
P752022Total nacionalCentros poblados y rural disperso$1.000.000$1.000.00041.991
P902022Total nacionalCentros poblados y rural disperso$1.300.000$1.400.00041.991
P102022MagdalenaTotal$180.000$202.93014.450
P252022MagdalenaTotal$360.000$450.00014.450
Mediana2022MagdalenaTotal$650.000$800.00014.450
Media2022MagdalenaTotal$904.854$1.065.07214.450
P752022MagdalenaTotal$1.000.000$1.100.00014.450
P902022MagdalenaTotal$1.600.000$2.000.00014.450
P102022MagdalenaCabeceras$200.000$250.00012.618
P252022MagdalenaCabeceras$400.000$500.00012.618
Mediana2022MagdalenaCabeceras$700.000$900.00012.618
Media2022MagdalenaCabeceras$1.000.967$1.122.82612.618
P752022MagdalenaCabeceras$1.000.000$1.200.00012.618
P902022MagdalenaCabeceras$2.000.000$2.000.00012.618
P102022MagdalenaCentros poblados y rural disperso$120.000$120.0001.832
P252022MagdalenaCentros poblados y rural disperso$300.000$300.0001.832
Mediana2022MagdalenaCentros poblados y rural disperso$520.000$500.0001.832
Media2022MagdalenaCentros poblados y rural disperso$668.438$667.2861.832
P752022MagdalenaCentros poblados y rural disperso$900.000$908.5261.832
P902022MagdalenaCentros poblados y rural disperso$1.200.000$1.200.0001.832
P102023Total nacionalTotal$300.000$300.000348.366
P252023Total nacionalTotal$600.000$600.000348.366
Mediana2023Total nacionalTotal$1.160.000$1.160.000348.366
Media2023Total nacionalTotal$1.610.108$1.495.850348.366
P752023Total nacionalTotal$1.600.000$1.500.000348.366
P902023Total nacionalTotal$3.000.000$3.000.000348.366
P102023Total nacionalCabeceras$360.000$336.000306.737
P252023Total nacionalCabeceras$800.000$700.000306.737
Mediana2023Total nacionalCabeceras$1.160.000$1.160.000306.737
Media2023Total nacionalCabeceras$1.799.127$1.572.446306.737
P752023Total nacionalCabeceras$1.800.000$1.600.000306.737
P902023Total nacionalCabeceras$3.500.000$3.000.000306.737
P102023Total nacionalCentros poblados y rural disperso$200.000$200.00041.629
P252023Total nacionalCentros poblados y rural disperso$360.000$400.00041.629
Mediana2023Total nacionalCentros poblados y rural disperso$700.000$800.00041.629
Media2023Total nacionalCentros poblados y rural disperso$870.198$931.46741.629
P752023Total nacionalCentros poblados y rural disperso$1.160.000$1.160.00041.629
P902023Total nacionalCentros poblados y rural disperso$1.500.000$1.550.00041.629
P102023MagdalenaTotal$200.000$300.00014.390
P252023MagdalenaTotal$450.000$600.00014.390
Mediana2023MagdalenaTotal$800.000$1.000.00014.390
Media2023MagdalenaTotal$1.024.586$1.218.56514.390
P752023MagdalenaTotal$1.160.000$1.200.00014.390
P902023MagdalenaTotal$1.800.000$2.200.00014.390
P102023MagdalenaCabeceras$240.000$300.00012.494
P252023MagdalenaCabeceras$500.000$600.00012.494
Mediana2023MagdalenaCabeceras$900.000$1.000.00012.494
Media2023MagdalenaCabeceras$1.117.737$1.277.58812.494
P752023MagdalenaCabeceras$1.200.000$1.300.00012.494
P902023MagdalenaCabeceras$2.000.000$2.320.00012.494
P102023MagdalenaCentros poblados y rural disperso$200.000$200.0001.896
P252023MagdalenaCentros poblados y rural disperso$360.000$350.0001.896
Mediana2023MagdalenaCentros poblados y rural disperso$600.000$600.0001.896
Media2023MagdalenaCentros poblados y rural disperso$806.870$829.6281.896
P752023MagdalenaCentros poblados y rural disperso$1.000.000$1.000.0001.896
P902023MagdalenaCentros poblados y rural disperso$1.300.000$1.300.0001.896
P102024Total nacionalTotal$300.000$350.000335.535
P252024Total nacionalTotal$700.000$700.000335.535
Mediana2024Total nacionalTotal$1.300.000$1.300.000335.535
Media2024Total nacionalTotal$1.765.032$1.657.977335.535
P752024Total nacionalTotal$1.800.000$1.800.000335.535
P902024Total nacionalTotal$3.300.000$3.000.000335.535
P102024Total nacionalCabeceras$400.000$400.000295.188
P252024Total nacionalCabeceras$900.000$800.000295.188
Mediana2024Total nacionalCabeceras$1.300.000$1.300.000295.188
Media2024Total nacionalCabeceras$1.971.718$1.746.056295.188
P752024Total nacionalCabeceras$2.000.000$1.800.000295.188
P902024Total nacionalCabeceras$3.900.000$3.400.000295.188
P102024Total nacionalCentros poblados y rural disperso$200.000$200.00040.347
P252024Total nacionalCentros poblados y rural disperso$400.000$450.00040.347
Mediana2024Total nacionalCentros poblados y rural disperso$750.000$800.00040.347
Media2024Total nacionalCentros poblados y rural disperso$938.931$1.013.57240.347
P752024Total nacionalCentros poblados y rural disperso$1.300.000$1.300.00040.347
P902024Total nacionalCentros poblados y rural disperso$1.600.000$1.700.00040.347
P102024MagdalenaTotal$200.000$300.00013.230
P252024MagdalenaTotal$500.000$600.00013.230
Mediana2024MagdalenaTotal$900.000$1.160.00013.230
Media2024MagdalenaTotal$1.097.879$1.328.77713.230
P752024MagdalenaTotal$1.300.000$1.500.00013.230
P902024MagdalenaTotal$2.000.000$2.500.00013.230
P102024MagdalenaCabeceras$250.000$350.00011.469
P252024MagdalenaCabeceras$560.000$700.00011.469
Mediana2024MagdalenaCabeceras$1.000.000$1.200.00011.469
Media2024MagdalenaCabeceras$1.231.082$1.411.17711.469
P752024MagdalenaCabeceras$1.400.000$1.500.00011.469
P902024MagdalenaCabeceras$2.300.000$2.600.00011.469
P102024MagdalenaCentros poblados y rural disperso$150.000$150.0001.761
P252024MagdalenaCentros poblados y rural disperso$350.000$350.0001.761
Mediana2024MagdalenaCentros poblados y rural disperso$700.000$700.0001.761
Media2024MagdalenaCentros poblados y rural disperso$779.238$792.1251.761
P752024MagdalenaCentros poblados y rural disperso$1.100.000$1.160.0001.761
P902024MagdalenaCentros poblados y rural disperso$1.300.000$1.400.0001.761
P102025Total nacionalTotal$400.000$400.000347.190
P252025Total nacionalTotal$800.000$800.000347.190
Mediana2025Total nacionalTotal$1.423.500$1.423.500347.190
Media2025Total nacionalTotal$1.906.078$1.777.684347.190
P752025Total nacionalTotal$2.000.000$1.930.000347.190
P902025Total nacionalTotal$3.500.000$3.340.000347.190
P102025Total nacionalCabeceras$500.000$400.000306.474
P252025Total nacionalCabeceras$1.000.000$900.000306.474
Mediana2025Total nacionalCabeceras$1.423.500$1.423.500306.474
Media2025Total nacionalCabeceras$2.112.315$1.860.911306.474
P752025Total nacionalCabeceras$2.100.000$2.000.000306.474
P902025Total nacionalCabeceras$4.000.000$3.500.000306.474
P102025Total nacionalCentros poblados y rural disperso$240.000$260.00040.716
P252025Total nacionalCentros poblados y rural disperso$480.000$500.00040.716
Mediana2025Total nacionalCentros poblados y rural disperso$900.000$1.000.00040.716
Media2025Total nacionalCentros poblados y rural disperso$1.067.149$1.151.22740.716
P752025Total nacionalCentros poblados y rural disperso$1.423.500$1.423.50040.716
P902025Total nacionalCentros poblados y rural disperso$1.823.500$1.923.50040.716
P102025MagdalenaTotal$200.000$350.00013.950
P252025MagdalenaTotal$500.000$750.00013.950
Mediana2025MagdalenaTotal$1.000.000$1.300.00013.950
Media2025MagdalenaTotal$1.227.293$1.514.57813.950
P752025MagdalenaTotal$1.450.000$1.680.00013.950
P902025MagdalenaTotal$2.300.000$3.000.00013.950
P102025MagdalenaCabeceras$250.000$420.00012.178
P252025MagdalenaCabeceras$600.000$800.00012.178
Mediana2025MagdalenaCabeceras$1.200.000$1.400.00012.178
Media2025MagdalenaCabeceras$1.363.731$1.602.23812.178
P752025MagdalenaCabeceras$1.500.000$1.800.00012.178
P902025MagdalenaCabeceras$2.700.000$3.000.00012.178
P102025MagdalenaCentros poblados y rural disperso$150.000$150.0001.772
P252025MagdalenaCentros poblados y rural disperso$380.000$350.0001.772
Mediana2025MagdalenaCentros poblados y rural disperso$729.000$730.0001.772
Media2025MagdalenaCentros poblados y rural disperso$905.502$912.1391.772
P752025MagdalenaCentros poblados y rural disperso$1.300.000$1.300.0001.772
P902025MagdalenaCentros poblados y rural disperso$1.700.000$1.700.0001.772

Nota: Valores nominales (pesos corrientes de cada año, sin deflactar). No hay cifra oficial de cuantiles de INGLABO para contrastar.

La composición por clase explica la diferencia#

La explicación está en cómo se reparte la muestra entre las dos clases geográficas. La GEIH distingue la cabecera, delimitada por el perímetro censal, del resto, que «corresponde al área geográfica cubierta por el centro poblado y rural disperso» (Metodología GEIH V11, p. 13). En la base, CLASE vale 1 en cabecera y 2 en centros poblados y rural disperso; el diccionario rotula esos valores «urbano» y «rural», una etiqueta aproximada que este libro no usa.

Tabla 7.4Ocupados con ingreso laboral positivo en el Magdalena por clase, 2025
ClaseFilas% de las filasPersonas (miles)% de las personasFactor mediano de una filaMediana ponderada del ingreso
Cabeceras12.17887,3417,170,2264$1.200.000
Centros poblados y rural disperso1.77212,7176,929,81.136$729.000

Fuente: Cálculo propio con microdatos GEIH 2025 (DANE), geih-lab/scripts/04_ingresos.py (bloque verificacion_articulo para el factor mediano).

Nota: El factor mediano es la mediana simple de FEX_C18 entre las filas de cada clase. Personas: promedio mensual.

Los ocupados de centros poblados y rural disperso son el 12,7 % de las filas y el 29,8 % de las personas representadas: una fila típica de esa clase pesa más de cuatro veces lo que pesa una de cabecera. Su mediana ponderada, $729.000, es mucho más baja que la de las cabeceras, $1.200.000. Cuando se calcula sin factor, la clase de ingresos bajos entra con el peso de sus filas y no con el de su población, y la mediana se desplaza hacia arriba.

Interpretación

Dentro de cada clase el sesgo es menor. En centros poblados y rural disperso del Magdalena la mediana sin ponderar ($730.000) casi coincide con la ponderada; en las cabeceras la diferencia persiste ($1.400.000 frente a $1.200.000), lo que indica que también dentro de las cabeceras del departamento las filas de ingresos más bajos llevan factores mayores. Con la base pública esa lectura no se puede llevar a municipios concretos, porque el municipio está entre las variables que se eliminan antes de publicar (Metodología GEIH V11, p. 27); dentro del departamento solo Santa Marta se distingue, y el capítulo 9 la trata aparte. Lo que sí queda claro es que la composición geográfica de la muestra explica buena parte del error, y que ese error no se puede adivinar sin calcular las dos versiones.

La distribución completa#

Los percentiles resumen la distribución en cinco puntos. La figura 7.3 la muestra completa en tramos de 250.000 pesos, con la proporción de personas de cada tramo calculada con el factor y, superpuesta, la proporción de filas sin ponderar. El tramo con más personas representadas es el de $1.250.000 a menos de $1.500.000, que contiene el salario mínimo de 2025 ($1.423.500), con el 16,1 % de los ocupados con ingreso; el primer tramo, de menos de $250.000, reúne el 11,6 % de las personas pero solo el 6,3 % de las filas.

Figura 7.3Distribución del ingreso laboral de los ocupados del Magdalena por tramos, 2025Con factor, los tramos bajos ganan peso frente a la cuenta de filas.

Propósito: Ver en qué tramos de ingreso se concentra la población ocupada y cuánto se deforma la distribución si se cuentan filas.

Unidad
miles de personas y % del universo; tramos en pesos corrientes por mes
Periodo
2025 (enero a diciembre, 12 meses apilados)
Cobertura
Magdalena (DPTO 47), total de las dos clases
Fuente
Cálculo propio con microdatos GEIH 2025 (ANDA, DANE), geih-lab/scripts/04_ingresos.py.
Notas: Tramos cerrados a la izquierda. El último, desde $5.000.000, es abierto. Los ingresos declarados se concentran en cifras redondas, de modo que un tramo puede contener un pico que su ancho no deja ver.
  • INGLABO es una variable construida por el DANE cuya regla no está documentada en las fuentes revisadas. No incluye ingresos no laborales.
  • Pesos corrientes de cada año; no se deflacta. Los niveles de años distintos no son comparables en términos reales.
  • Ninguna de estas medidas es pobreza monetaria: esa metodología usa el ingreso per cápita de la unidad de gasto, imputaciones y líneas de pobreza que no se aplican aquí.
  • Los ingresos se concentran en valores redondos y en un valor exacto por año; un tramo puede contener un pico que el ancho del tramo no muestra (ver masa_en_mediana en ingresos_cuantiles).
Ver los datos de la figura
TablaDistribución del ingreso laboral por tramos, Magdalena, Total, 2025
Tramo de ingresoPersonas (miles)% con factor de expansión% sin ponderarDiferencia (p.p.)Filas de la muestra
$0 a menos de $250.00068,811,596,33−5,26 p.p.883
$250.000 a menos de $500.00070,211,827,45−4,37 p.p.1.039
$500.000 a menos de $750.00087,114,6710,99−3,68 p.p.1.533
$750.000 a menos de $1.000.00060,710,229,90−0,32 p.p.1.381
$1.000.000 a menos de $1.250.00066,311,1612,65+1,48 p.p.1.764
$1.250.000 a menos de $1.500.00095,916,1519,63+3,49 p.p.2.739
$1.500.000 a menos de $1.750.00044,57,499,13+1,63 p.p.1.273
$1.750.000 a menos de $2.000.00018,63,133,90+0,77 p.p.544
$2.000.000 a menos de $2.250.00021,83,675,07+1,40 p.p.707
$2.250.000 a menos de $2.500.0003,30,560,75+0,19 p.p.104
$2.500.000 a menos de $2.750.00010,31,732,57+0,84 p.p.359
$2.750.000 a menos de $3.000.0005,70,961,56+0,60 p.p.218
$3.000.000 a menos de $3.250.00011,92,002,87+0,88 p.p.401
$3.250.000 a menos de $3.500.0001,10,190,22+0,03 p.p.30
$3.500.000 a menos de $3.750.0004,90,821,07+0,24 p.p.149
$3.750.000 a menos de $4.000.0001,30,210,28+0,07 p.p.39
$4.000.000 a menos de $4.250.0005,70,961,59+0,63 p.p.222
$4.250.000 a menos de $4.500.0001,90,320,55+0,23 p.p.77
$4.500.000 a menos de $4.750.0001,60,260,50+0,24 p.p.70
$4.750.000 a menos de $5.000.0000,60,090,10+0,01 p.p.14
$5.000.000 o más11,81,982,90+0,91 p.p.404

Nota: Ocupados con ingreso laboral positivo. Pesos corrientes, sin deflactar. El último tramo, desde $5.000.000, es abierto. Diferencia = sin ponderar menos con factor de expansión.

La forma de la distribución tiene otra consecuencia que vale para cualquier dominio. Los ingresos declarados no son continuos: se agrupan en cifras redondas y, en el total nacional, en un valor exacto por año. Eso hace que la mediana pueda quedar fija en un punto aunque la distribución alrededor cambie, que es lo que ocurre a escala nacional.

En el total nacional, medianas que coinciden y medias que no#

Con el mismo cálculo para todo el país, la mediana sin ponderar y la ponderada de 2025 son idénticas: $1.423.500. Ese valor es el salario mínimo legal mensual de 2025, que fijó el Decreto 1572 del 24 de diciembre de 2024 (Decreto 1572 de 2024, art. 1); es un dato legal, no una estimación de la encuesta. Con factor, el 9,8 % de los ocupados con ingreso tiene un INGLABO de exactamente ese monto y el 46,7 % queda por debajo; contando filas, las proporciones son 10,1 % y 47,8 %. En los dos casos lo que queda por debajo es menos de la mitad y lo que llega hasta el valor es más, de modo que el punto donde el acumulado cruza la mitad cae dentro de esa masa con o sin factor, y la mediana queda anclada.

Resultado reproducido

Calculado con los microdatos de la GEIH por el laboratorio del libro.

En el total nacional de 2025, con 347.190 filas que representan a 22.956 mil ocupados con ingreso positivo, la mediana es $1.423.500 con y sin factor. La media sin ponderar es $1.777.684 y la ponderada $1.906.078, un 7,2 % más alta.

Ficha del resultado · Mediana ponderada de INGLABO, total nacional, 2025Sin referente oficial
Periodo
2025
Ámbito
Total nacional
Microdatos
GEIH marco 2018, bases anuales 2022 a 2025
Variables
OCI, INGLABO, FEX_C18, DPTO, CLASE, P6430, P6500, P6750, MES
Filtros
OCI == 1 e INGLABO > 0. Magdalena: DPTO == '47' tras rellenar a 2 caracteres.
Universo
Ocupados con ingreso laboral positivo
Factor
FEX_C18 sobre las filas de los 12 meses; población = suma de FEX_C18 / 12 (promedio mensual)
Método
Cuantil q: primer valor ordenado cuyo peso acumulado es mayor o igual que q por el peso total, sin interpolar (geihlab.ponderacion). Sin ponderar: misma regla con peso 1. Media ponderada: suma(v w) / suma(w). pct_hasta_1000000: porcentaje (ponderado, o de filas sin ponderar) con INGLABO menor o igual que 1.000.000 pesos; ese valor está en %, no en pesos.
Muestra
347.190 filas-mes en el universo del indicador
Código
geih-lab/scripts/04_ingresos.py · commit 0864525

Contraste con la cifra oficial

Propio1.423.500 pesos
Oficialsin cifra publicada

El DANE no publica una cifra comparable; es una estimación propia.

Por qué no hay referente: El DANE no publica cuantiles ni medias de INGLABO en los documentos revisados.

Sería un error concluir de la coincidencia que ponderar no importa en el total nacional. La media sube $128.394 al ponderar, el P75 pasa de $1.930.000 a $2.000.000 y el P90 de $3.340.000 a $3.500.000, mientras que el P10 ($400.000) y el P25 ($800.000) no cambian. La dirección es la contraria a la del Magdalena: en el país, ponderar sube la media y la parte alta de la distribución. Que la media ponderada supere a la simple quiere decir que en la muestra el factor y el ingreso van juntos: las filas con ingresos más altos tienden a llevar factores mayores. Dentro de las cabeceras pasa lo mismo (media de $1.860.911 sin ponderar frente a $2.112.315 ponderada), mientras que en centros poblados y rural disperso la mediana ponderada, $900.000, queda por debajo de la simple, $1.000.000.

Puestos uno al lado del otro, los dos casos impiden anticipar hacia dónde se equivoca la versión sin ponderar y en cuánto. En el Magdalena ponderar baja la mediana; en el país la deja igual y sube la media; dentro de una clase puede ir en cualquier sentido. Que una cifra coincida en un corte no protege en el siguiente.

Cuatro años en pesos corrientes#

El anclaje de la mediana se repite todos los años. La tabla 7.5 muestra que en el total nacional las dos medianas coinciden de 2022 a 2025, siempre en una cifra exacta que concentra entre el 9,8 % y el 17,4 % de la población con ingreso, y que la media ponderada queda todos los años por encima de la simple. El P90 ponderado también supera al simple, salvo en 2023, cuando las dos versiones coinciden.

Tabla 7.5Mediana, media y P90 del ingreso laboral de los ocupados, total nacional, 2022 a 2025
AñoMediana sin ponderarMediana ponderadaPoblación en la mediana (%)Media sin ponderarMedia ponderadaP90 sin ponderarP90 ponderado
2022$1.000.000$1.000.00017,37$1.346.375$1.437.114$2.600.000$2.800.000
2023$1.160.000$1.160.00010,90$1.495.850$1.610.108$3.000.000$3.000.000
2024$1.300.000$1.300.00016,26$1.657.977$1.765.032$3.000.000$3.300.000
2025$1.423.500$1.423.5009,78$1.777.684$1.906.078$3.340.000$3.500.000

Fuente: Cálculo propio con microdatos GEIH 2022 a 2025 (DANE), geih-lab/scripts/04_ingresos.py (bloque masa_en_mediana para la cuarta columna).

Nota: Pesos corrientes de cada año, sin deflactar. «Población en la mediana»: porcentaje de los ocupados con ingreso, con factor, que declara exactamente el valor de la mediana ponderada. Sin referente oficial.

Las medianas de 2022 a 2024 son también cifras redondas. Este libro solo verificó con su decreto la de 2025; si coinciden con el salario mínimo de cada año es algo que el lector puede comprobar en la norma correspondiente, pero aquí no se afirma. Lo que la tabla no autoriza es leer el crecimiento de la mediana como un aumento del poder de compra: son pesos corrientes y, sin deflactar, la comparación entre años mezcla el cambio de los ingresos con el de los precios.

Por qué estos cálculos no miden pobreza monetaria#

La GEIH es la encuesta con que el DANE mide la pobreza monetaria, y de ahí viene una confusión frecuente: tomar la proporción de ocupados con ingreso bajo un umbral como si fuera una tasa de pobreza. Las definiciones oficiales muestran por qué no lo es.

Concepto DANE

Pobreza monetaria y línea de pobreza

«Pobreza monetaria: ocurre cuando el ingreso mensual per cápita de un hogar se sitúa por debajo de la línea de pobreza monetaria.» La línea de pobreza «corresponde al costo per cápita mínimo de una canasta básica de bienes (alimentarios y no alimentarios) en un área geográfica determinada» y «resulta de multiplicar el valor de la línea de pobreza extrema por el coeficiente de Orshansky».

Fuente: Metodología GEIH V11, p. 7

La incidencia de la pobreza monetaria es el «porcentaje de personas cuyos ingresos corrientes totales son inferiores a la línea de pobreza monetaria (LP)», y el coeficiente de Orshansky es el «cociente entre el gasto total y el gasto en alimentos» (Metodología GEIH V11, p. 10). Basta poner esas definiciones al lado de lo que se calculó en este capítulo para ver las diferencias. La pobreza se mide con el ingreso del hogar dividido entre sus miembros, no con el ingreso de una persona ocupada. Usa ingresos corrientes totales, que en la lista de fuentes de la tabla 7.1 abarcan los no laborales, el ingreso en especie y el autoconsumo, mientras que INGLABO se limita al trabajo. Compara contra una línea que depende del área geográfica y de una canasta, no contra una cifra redonda. Su universo es toda la población, incluidos los niños, los desocupados y quienes están fuera de la fuerza de trabajo. Y el ingreso que entra en ella pasa por la imputación (Enfoque conceptual GEIH 2022, p. 4) y el enriquecimiento con registros administrativos (Enfoque conceptual GEIH 2022, p. 53) que menciona la presentación del rediseño, sin describir cómo se hacen.

La relación entre la encuesta y la pobreza se nota también en el diseño muestral. La metodología dice que para el indicador de pobreza monetaria «se requiere una estimación total departamento anual» (Metodología GEIH V11, p. 15), y para dimensionar la muestra anual de cada departamento fija un error relativo de 4,7 % (Metodología GEIH V11, p. 16), el mismo que reporta como meta de precisión anual de la pobreza monetaria departamental, con una confiabilidad del 95 % (Metodología GEIH V11, p. 10). De ahí que la muestra del Magdalena se dimensione con horizonte anual, un tema que retoma el capítulo 9, El Magdalena. Pero que la muestra se haya dimensionado para la pobreza no convierte en pobreza cualquier porcentaje calculado con ella, ni garantiza por sí solo la precisión de una mediana de ingresos laborales del departamento.

Explicación del autor

La frase correcta para la cifra del Magdalena es «en 2025, el 53,4 % de los ocupados del Magdalena con ingreso laboral positivo tenía un ingreso laboral mensual (INGLABO) de hasta un millón de pesos corrientes». No es «el 53,4 % de los magdalenenses es pobre», ni «el 53,4 % de los trabajadores gana menos del mínimo». Cada palabra de la primera versión restringe el periodo, el universo, la variable o el umbral, y ninguna sobra.

Lista de comprobación#

Antes de publicar una media, una mediana o un percentil de ingresos calculado con la GEIH hay seis puntos por comprobar. Recogen, en el orden del capítulo, lo que se acaba de ver.

  1. El cálculo usa el factor de expansión. En las bases de 2022 a 2025 es FEX_C18, el único factor que traen los archivos y que, por cómo cambian sus sumas de un mes a otro, corresponde a la calibración mensual.
  2. El universo está declarado junto a la cifra. Ocupados con ingreso positivo, todos los ocupados con sus ceros o toda la población con ingresos de cualquier fuente responden preguntas distintas.
  3. La variable está limpia: sin faltantes convertidos en cero, sin pesos no válidos y, si se usan P6500 o P6750, sin los códigos 98 y 99 de enero de 2022.
  4. El texto dice qué mide la variable. INGLABO no tiene una regla de construcción publicada en la metodología y no incluye ingresos no laborales; sumar variables con periodos distintos exige mensualizar.
  5. La cifra se presenta según su estado de validación. Para los cuantiles de INGLABO no hay referente oficial con que compararlos, así que se presentan como estimaciones propias con su control interno.
  6. La lectura no va más allá del dato. Una mediana ponderada es una estimación puntual en pesos corrientes, sin error estándar del diseño, y no es una medida de pobreza.

Cómo leer la precisión publicada por el DANE y qué aproximación se puede construir sin las variables de diseño se trata en el capítulo 8; el capítulo 10, Laboratorio de reproducción explica cómo reproducir todas las cifras de este capítulo desde los microdatos, y el capítulo 9 retoma los ingresos del Magdalena por clase.

Ejercicios#

Ejercicio 7.1

El P25 de los cinco encuestados, a mano

Con los valores iniciales de la figura 7.1 (ejemplo simulado), calcule el percentil 25 con y sin factor de expansión usando la regla de acumulación de pesos. Compruebe después el resultado en la tabla de pesos acumulados de la figura, primero con los factores iniciales y luego con el botón de pesos iguales.

Ver una pista

Ordene los ingresos y acumule los factores. El P25 es el primer valor cuyo acumulado alcanza la cuarta parte del total.

Ver la respuesta

El peso total es 2.950 y la cuarta parte, 737,5. Ordenados, el primer ingreso (600.000) ya acumula 1.100, así que el P25 ponderado es 600.000 pesos. Sin pesos, con la misma regla y peso 1 para cada fila, el total es 5 y la cuarta parte 1,25: el acumulado la alcanza en el segundo valor, 800.000 pesos. La salida del bloque de código de la sección sobre el algoritmo confirma los dos resultados.

La diferencia vuelve a ser de composición: los dos encuestados de centros poblados y rural disperso ocupan los dos primeros lugares del orden y, con factor, representan casi tres cuartas partes de las personas.

Ejercicio 7.2

Predecir el sentido del sesgo

Antes de usar la figura 7.2, escriba si espera que ponderar suba o baje la mediana del ingreso laboral en un dominio donde la población de centros poblados y rural disperso pesa mucho más que sus filas. Después compruébelo en el comparador para el Magdalena y para el total nacional de centros poblados y rural disperso.

Ver una pista

Piense en qué filas pesan más y en qué parte de la distribución están.

Ver la respuesta

Si las filas de la parte rural llevan factores grandes e ingresos bajos, como en el Magdalena, ponderar baja la mediana. En el comparador, el total nacional de centros poblados y rural disperso de 2025 da una mediana ponderada de $900.000 frente a $1.000.000 sin ponderar, y el Magdalena total de 2025, $1.000.000 frente a $1.300.000. La predicción solo es una hipótesis: el total nacional muestra que el sesgo puede ir en la dirección contraria en la media y desaparecer en la mediana, por eso siempre se calculan las dos versiones.

Ejercicio 7.3

Encontrar el error de universo

Este código pretende calcular la mediana ponderada del ingreso laboral de los ocupados del Magdalena en 2025. Identifique la decisión no declarada que contiene y corríjala.

Python
import polars as pl
from geihlab.lectura import leer_geih
from geihlab.ponderacion import mediana_ponderada

geih = leer_geih(2025, ["OCI", "INGLABO", "FEX_C18", "DPTO"])
oc = geih.filter((pl.col("OCI") == 1) & (pl.col("DPTO") == "47"))
v = oc["INGLABO"].fill_null(0).to_numpy()
w = oc["FEX_C18"].to_numpy()
print(mediana_ponderada(v, w))
Código con un error deliberado. Corre sin fallar; su salida se comenta en la solución.
Ver una pista

Fíjese en qué hace fill_null(0) con los faltantes de INGLABO.

Ver la respuesta

El código convierte en cero todos los faltantes, incluidos los de los trabajadores familiares sin remuneración, que son estructurales, y los de quienes no declararon su ingreso, que son no respuesta. Mezcla así tres grupos distintos (ingreso cero declarado, sin remuneración por definición y sin dato), y como todos los ceros nuevos quedan al comienzo del orden, la mediana solo puede bajar o quedarse igual. Ejecutado sobre la base de 2025, el fragmento devuelve $960.000, frente a los $1.000.000 del universo declarado en este capítulo, y nada en el resultado advierte la diferencia. La versión correcta filtra INGLABO > 0 y lo declara como universo, o, si se quiere incluir los ceros declarados, filtra pl.col("INGLABO").is_not_null() y lo dice. En ningún caso un faltante se convierte en cero.