Ir al contenido
σestadistica.ar

Script

EPH

Abrir un archivo de la Encuesta Permanente de Hogares, calcular las cuatro tasas con sus cuatro denominadores y el ingreso con el ponderador que corresponde. Con las trampas del archivo contempladas, no descubiertas después.

Descargar

Proyecto en R y Python · ZIP · 607 KB

En R alcanza con lo que ya trae; en Python hace falta SciPy.

El error que hace falta cometer dos veces

El ingreso medio de la EPH se calcula mal casi siempre, y de una manera muy particular: hacen falta dos descuidos juntos, y cada uno por separado es invisible.

En P21 —el ingreso de la ocupación principal— el -9 no es un ingreso negativo: quiere decir «no responde». Y el ponderador que corresponde no es PONDERA sino PONDIIO, que reparte la población de los que declararon.

Corriendo el descargable sobre su archivo de ejemplo, el mismo promedio da:

PonderadorCon el −9MediaDiferencia
PONDIIOlo saca$ 715.067—
PONDIIOlo deja$ 715.067exactamente la misma
PONDERAlo saca$ 700.544−2,0 %
PONDERAlo deja$ 565.082−21,0 %

Las dos primeras filas dan lo mismo hasta el último decimal, y ahí está todo el asunto: el INDEC le pone PONDIIO = 0 al que no contestó, así que el −9 ya viene sacado. El filtro que uno nunca escribió no hace falta.

Hasta que hace falta. Antes de 2016T2 las bases de la EPH no traen PONDIIO —ni PONDII, ni PONDIH—. El día que el mismo script se corre sobre un trimestre viejo, el ponderador no está, el filtro nunca se escribió, y el promedio se cae un quinto sin que nada aparezca en pantalla.

Por eso el primer paso revisa que el ponderador de ingreso exista y lo escribe en avisos.csv cuando no está, en vez de seguir de largo.

Cuatro tasas, cuatro denominadores

El otro error caro es más simple y se ve más seguido: la desocupación no se divide por la población. Un 7 % no quiere decir que siete de cada cien personas no tengan trabajo: quiere decir que siete de cada cien que lo buscan no lo consiguen.

TasaValorCómo se calculaDeffn efectivo
Actividad48,65 %PEA / población total3,031.816
Empleo45,02 %Ocupados / población total2,991.842
Desocupación7,46 %Desocupados / PEA3,09851
Subocupación10,42 %Subocupados / PEA2,521.044

Las tres primeras tienen que cerrar entre sí: empleo = actividad × (1 − desocupación). El descargable calcula las tres por separado y después escribe el residuo de esa resta. Es la única comprobación que no depende de tener razón sobre ninguna otra cosa, y por eso está.

El error estándar, y por qué el que sale de acá es optimista

La EPH es una muestra por conglomerados, y eso cambia el error estándar, no la estimación. Todo lo que el proyecto estima —las tasas, el ingreso medio, la informalidad— es una razón entre dos totales ponderados, y las tres salen de la misma función, linealizando y sumando por unidad primaria dentro de cada estrato.

El estrato es el aglomerado y la unidad primaria es el hogar. No es lo ideal: el conglomerado de verdad es el radio censal, y el archivo público no lo trae. Con el hogar se captura que los miembros de un hogar se parecen y se pierde que los vecinos se parecen, así que el error estándar que sale de acá es una cota inferior. Decirlo es parte de hacerlo bien.

Aun así el efecto de diseño pasa de 2,5 en las cuatro tasas: los 5.507 casos del ejemplo valen como 1.816. Los grados de libertad son unidades primarias menos estratos —1.839 con 1.871 hogares y 32 aglomerados—, no n − 1.

Las trampas del archivo

Ninguna de estas es hipotética. Son las cosas que efectivamente pasan con las bases de la EPH, y cada una está contemplada en el paso que corresponde:

QuéPor qué importa
P21 = -9No es un ingreso negativo: es «no responde». Promediarlo como número hunde el promedio
PONDIIO antes de 2016T2No existe. Un script hecho para un trimestre reciente se queda sin él en silencio
NA con letrasEn 2021T1, 2024T3 y 2024T4 el INDEC escribe así los faltantes, y eso vuelve texto a media base
CH06 = -1Quiere decir «menos de un año», no «falta el dato»
El ponderador es del hogarTodos los miembros comparten PONDERA; por eso el hogar sirve de unidad primaria
Varios trimestres juntosConcatenar bases da un promedio de trimestres que no es la tasa de ninguno

Y hay tres que están antes de todo lo demás, en cómo se abre el archivo: el separador es el punto y coma —con la coma sale una sola columna y algunos programas no avisan—, la codificación es latin-1, y los textos vienen entre comillas. El proyecto lee todo como texto y decide después, columna por columna, qué es un número: es lo que hace que el trimestre con NA escrito con letras no rompa nada.

El archivo de ejemplo no es la EPH

El usu_individual_T425_simulado.txt que viene adentro está simulado. Tiene el formato exacto del archivo del INDEC y copia el diseño de la encuesta —los 32 aglomerados, con su región y su peso relativo—, pero no copia ningún dato de ninguna persona, y está a la octava parte del tamaño real.

Eso último es a propósito: así ningún número que salga del proyecto se puede confundir con una cifra publicada. Las 5.507 personas del ejemplo representan a 3.754.094 habitantes que no son los de Argentina. Para correrlo sobre datos de verdad alcanza con bajar el trimestre del INDEC, descomprimirlo en datos/ y cambiar una línea en parametros.csv: el archivo real de 2025T4 tiene 235 columnas y el de ejemplo 22, y el código elige por nombre.

Qué deja

ArchivoQué trae
poblacion.csvLas cinco condiciones de actividad, ponderadas y en casos
tasas.csvLas cuatro tasas con su denominador, su intervalo, su deff y su versión sin ponderar
tasas-por-grupo.csvLas mismas cuatro, abiertas por sexo, tramo de edad y región
ingresos.csvMedia con intervalo, mediana, deciles extremos y razón entre el décimo y el primero
deciles.csvLos diez grupos: corte, población, ingreso medio y participación
ponderador-e-ingreso.csvEl mismo promedio calculado de cinco maneras, y cuánto cambia cada una
ingresos-por-grupo.csvMedia y mediana por sexo, edad, región, nivel educativo y categoría
informalidad.csvAsalariados sin descuento jubilatorio, con intervalo, por grupo
avisos.csvCada cosa del archivo que hay que mirar antes de publicar un número
resumen.csvLas veinte cifras del informe, en dos columnas, para engancharle otra cosa
eph.mdEl informe redactado

En el ejemplo, la informalidad —asalariados sin descuento jubilatorio— da 36,87 %, y el décimo decil gana 20,8 veces lo que el primero.

Lo que no hace

No lee el archivo de hogar ni lo cruza con el de individual. Todo lo que calcula es de personas.

No arma series de varios trimestres, y avisa cuando encuentra más de uno adentro del mismo archivo.

No calcula pobreza: eso necesita la canasta y el archivo de hogar. Y no ajusta por inflación: los ingresos son del trimestre y en pesos de ese trimestre.

No calcula el Gini ni la curva de Lorenz. Deja los deciles, que es la materia prima: la curva de Lorenz se arma con ellos.

No corrige nada en silencio. Lo que está raro va a avisos.csv, con el nombre de la columna y el número de casos.

Cómo está verificado

El verificador vuelve a leer el archivo crudo por su cuenta —con su propio lector y su propio estimador de razón escrito en numpy— y recalcula todo: si el lector del proyecto se equivoca, este lo nota. Además comprueba las identidades que no pueden fallar: que empleo sea igual a actividad × (1 − desocupación), que los grupos de un corte sumen exactamente la población del total, que las participaciones de los deciles sumen uno, que los grados de libertad sean hogares menos aglomerados y no n − 1, y —la que sostiene el proyecto entero— que con PONDIIO dejar o sacar el −9 dé exactamente el mismo número. Corre también cinco variantes del archivo: sin la columna PONDIIO, fechado en 2015T1, con NA escrito con letras, con algún ponderador en cero y filtrado a una sola región. Son 3.123 comprobaciones, los veintidós sabotajes se detectan —siete de ellos rotos en R y en Python al mismo tiempo, para que lo único que pueda verlos sea el recálculo— y los dos idiomas escriben los once archivos idénticos byte a byte en las seis configuraciones.