















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Ejercicio para datos faltantes
Tipo: Apuntes
1 / 23
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
















Qué son, cómo se simulan en código, cómo se tratan y cómo leer los resultados — con los números reales de tu Proyecto 02.
¿Por qué importan los valores faltantes? Imagina que haces una encuesta de salarios en tu planta. Los datos que NO llegan casi nunca faltan por azar : quienes ganan poco a veces prefieren no contestar. Si calculas el salario promedio solo con las respuestas que sí tienes, tu promedio sale inflado — y ninguna fórmula te avisa. El problema real
Lo que hace el proyecto
clients.csv: 15,000 filas, 3 variables
Plan Cualitativa nominal El paquete contratado: Basico (35.1%), Estandar (33.8%), Premium (21.7%), Empresarial (9.4%). Se analiza con proporciones y diagrama de barras. Se imputa con la MODA. Months Cuantitativa discreta Meses de antigüedad del cliente. Distribución casi simétrica: media 30.33, mediana 30, desv. 17.20, skewness 0.009 (≈ 0). Se imputa con la MEDIA. Income Cuantitativa continua Ingreso mensual (miles de pesos). Distribución sesgada a la derecha: media 37.36 > mediana 34.42, skewness 0.956. Hay pocos clientes con ingresos muy altos que jalan la media. Dato para el examen: si skewness ≈ 0 la media y la mediana coinciden; si skewness > 0 (cola derecha) la media > mediana.
¿De qué depende que el dato falte? MCAR Missing Completely At Random La probabilidad de que un dato falte NO depende de nada. Puro azar. Analogía: a la base de datos le cayó café encima y borró celdas al azar. MAR Missing At Random La probabilidad depende de algo OBSERVADO (aquí: de qué columna es), pero no del valor en sí. Analogía: la pregunta de ingreso estaba al final de la encuesta y mucha gente ya no llegó a esa página. MNAR Missing Not At Random La probabilidad depende del PROPIO VALOR que se pierde. El dato falta por lo que vale. Analogía: quienes ganan menos prefieren no decir su sueldo. El hueco ES información.
MAR — depende de algo observable Cómo funciona
En el proyecto (tu corrida)
Consecuencia estadística
Para el examen
MNAR — el dato falta por lo que vale Cómo funciona
En el proyecto (tu corrida)
Consecuencia estadística
Para el examen
Las 4 métricas y qué dice cada una
El promedio. Sensible a valores extremos y al sesgo: si se borran los valores bajos (MNAR), la media SUBE. Es tu primer detector de daño. df[col].mean()
El valor de en medio (50% arriba, 50% abajo). Resistente a extremos, pero NO a la pérdida sistemática: en MNAR también se desplazó (30 → 35). df[col].median()
Qué tan dispersos están los datos. Detector de imputación: si imputaste con la media, la desviación BAJA aunque la media no cambie. df[col].std()
La asimetría. ≈0 simétrica; >0 cola a la derecha; <0 cola a la izquierda. En MNAR Months pasó de 0.009 a −0.206: se comió la cola izquierda. df[col].skew() Para Plan (cualitativa) no hay media ni skewness: se usan proporciones por categoría con value_counts(normalize=True).
Vamos pieza por pieza. Si entiendes 3 ideas — la semilla, la máscara booleana y el for anidado — entiendes el 90% del notebook.
La máscara booleana: el truco clave
Visualízalo así rand: [0.03, 0.91, 0.12, 0.55, 0.08...] mask: [True, False, True, False, True...] → filas 1, 3 y 5 pierden su valor. Conexión con el examen Si ves "rand() < p" con p IGUAL para todo → MCAR. Si p cambia según la columna → MAR. Si p se calcula con el valor de la celda → MNAR.
mcar(): la misma moneda para toda celda
La firma de MCAR Misma p para toda celda, sin mirar valores ni columnas. Resultado esperado: ~15% de NA en cada columna, repartido como ruido uniforme en el mapa de calor. Tu corrida: Plan 14.9%, Months 15.0%, Income 14.9%. ✓Coincide con la teoría.
mnar(): la probabilidad usa el valor
max_value = valores.max() for row in range(len(df_missing)): if random.random() < (1 - valor/max_value)*0.5: df_missing.iat[row, column] = np.nan
label = random.choice(valores.unique())
Desarma la fórmula (1 − valor/máx) × 0.5:
Los tratamientos: dropna() y fillna()
df_cc = df_mcar.dropna() # elimina toda FILA que tenga al menos un NaN (en cualquier columna)
df_imp = df_mcar.copy() df_imp['Plan'] = df_imp['Plan'].fillna(df_imp['Plan'].mode()[0]) # moda: la categoría más frecuente df_imp['Months'] = df_imp['Months'].fillna(df_imp['Months'].mean()) df_imp['Income'] = df_imp['Income'].fillna(df_imp['Income'].mean())
MCAR y MAR: el daño es mínimo Months (real: media 30.327, σ 17.198) Media Desv. est. MCAR sin tratamiento (15.0% NA) 30.343* 17. MCAR casos completos (9,254 filas) 30.245 17. MCAR imputación con media 30.343 15.851 ↓↓ MAR sin tratamiento (7.1% NA) 30.308 17. *Nota: en tu corrida MCAR la media quedó casi idéntica a la real (diferencia de 0.016). Cómo contarlo en el examen "Bajo MCAR y MAR los estimadores se mantienen prácticamente insesgados con cualquier tratamiento; el único efecto sistemático es la caída de la desviación estándar al imputar con la media (17.20 → 15.85), porque se repite el mismo valor en miles de celdas." Y en Plan: imputar con la moda infló Basico de 0.351 a 0.449 — hasta en MCAR la moda deforma proporciones.
MNAR: aquí se rompe todo Months Media Mediana Skewness Real (completo) 30.327 30 0. MNAR sin tratamiento (24.6% NA) 33.593 ↑ 35 ↑ −0. Casos completos (7,085 filas) 33.899 ↑ 35 −0. Imputación con media 33.593 33.593* −0. *La mediana imputada se vuelve igual a la media: tantas celdas valen 33.593 que el valor de en medio ES ese. La cadena lógica