Algo que no realizamos mas en las visualizaciones de nuestros scatter plot, fue visualizar el 'show_marginal', para ver como nuestros valores imputados afectaban la curtosis de nuestra columna imputada, y tal cual vimos con la curtosis en la unica ocasión que evaluamos esto que fue con la imputacion por la media, en las imputaciones por modelos, al revisar que forma tomaron los valores faltantes, aparecen distribuciones bimodales con curtosis leptocurticas, si la unicamente curtosis leptocurticas ya representaba un problema en la imputacion por media, muy posiblemente ahora aun mas sumado a la bimodal.
No es que diga que este malo lo visto, pero quizas no usamos los mejores estimadores y estrategias dentro de nuestros modelos para el caso analizado, esto debido a lo corto del curso, F por los que queremos cursos que duren mas.
La imputacion por KNN si tuvo una distribucion bastante parecida entre los valores imputados y los que ya teniamos, asi que por facilidad de uso y resultados obtenidos quizas por esto sea la mas utilizada como indico el profesor.
Muy buena observación pero creo q este es un curso teorico para mostrar herramientas y el profe siempre aclara que hay q comprobar que el metodo elegido sea el correcto para el caso especifico.
Yo pido un curso con casos practicos especifico completo!
~ Por cierto, ya conectamos en LinkedIn? ~
Conectemos en LinkedIn 👈👈 o tambien en GitHub 👈👈
Como realmente imputa los valores este modelo?
suponga que el dataset contiene multiples variables, unas con valores faltantes y otras completas.
El algoritmo asume que todas las variables tienen valores completos excepto una, entonces predice la variable con valores faltantes (target) en funcion del resto de variables (predictoras).
Continua a la siguiente variable con valores faltantes, asume que las demas estan completas, utiliza los valores de la variable anteriormente imputada y predice la variable con valores faltantes en funcion del resto de variables
Continua con el proceso hasta conseguir imputar todas las variables del dataset
Este algoritmo tambien se conoce como Imputador Iterable
Gracias..!!!
Proceso de Imputacion con MICE
Creamos el imputador con MICE
# crea las copias, las analiza y regresa un solo conjunto de datos. # Tambien puedes pedir que retorne todos las copias mice_imputer = sklearn.impute.IterativeImputer( estimator=BayesianRidge(),# metodo seleccionado para estimar los missing initial_strategy='mean',# estimador seleccionado imputation_order='ascending'# ordena las variables segun la cantidad de valores faltantes)
Copia de los datos transformados
# creamos una copia de los datos ya transformadonhanes_mice_df = nhanes_transformed_df.copy(deep=True)
Ajuste, transformacion y sustitucion de los datos imputados
# ajustar y transformar los datos# puedes pasar como parametro nhanes_df o nhanes_mice_df# por defecto pasamos nhanes_df porque sobreescribe los valores del dataframe que copiamos# redondeamos los numeros en este caso# agrega los valores imputados al datasetnhanes_mice_df.iloc[:,:]= mice_imputer.fit_transform(nhanes_transformed_df).round()
nhanes_mice_df
Matriz de sombra para la Visualizacion
# Matriz de sombra sobre los datos para la visualizacion# guradamos toda la operacion en el mismo dataframenhanes_mice_df = pd.concat(# concatenar los datos imputados y los datos originales[ nhanes_mice_df, nhanes_df.missing.create_shadow_matrix2(True,False, only_missing=False, suffix='_imp',)], axis=1# aplica sobre la matriz de sombra)
Visualizacion de los valores imputados
# Visualizacion de la variable height y weight nhanes_mice_df.missing.scatter_imputation_plot( x ='height', y ='weight')
Vemos que la imputacion es similar a la Imputacion KNN con la diferencia que este ultimo agrupa cierto valores en una zona. Depende de un analisis exploratorio tanto de los datos completos como de los faltantes elegir cual de los dos metodos es el que mejor se ajusta a los datos.
Que agradable sujeto. Mi Dios le pague!
Gracias..!!
Imputacion Multiple por Ecuaciones Encadenadas (MICE)
Permite preserva las relaciones entre las variables y por tanto es preferido sobre las imputaciones simples. Consiste en tratar inicialmente con un conjunto de datos con valores faltantes, luego crea copias de dicho conjunto de datos a los que vas a imputar valores para obtener copias con valores completos, analizas los resultados y finalmente agrupas los resultados de cada conjunto de datos para dar un informe con intervalos de confianza que contribuyan a la variabilidad de los datos.
Ventajas
Mantiene la distribucion relativa similar antes y despues de la imputacion.
Puede ser utilizado en cualquier tipo de analisis. Generalmente es mas utilizado para datos de tipo MCAR y MAR pero tambien para los de tipo MNAR aunque con mucha cautela.
Multiples variables son imputadas.
Desventajas
Para funcionar bien, necesitas pensar en el modelo de imputacion y el modelo de analisis para que asi todo el estudio tenga sentido de acuerdo a los datos. No todos los algoritmos funcionan para todos los conjuntos de datos.
Solo funciona como los metodos de imputacion seleccionados. Al iniciar el tratamiento de valores faltantes debemos definir un estimador que nos indica como vamos ajustando las variables o predecirlas en funcion del resto de variables. Por tanto necesitas pensar que estimador es el adecuado considerando sus ventajas y desventajas
Imputaciones Múltiples por Ecuaciones Encadenadas (MICE)
Concepto
La Imputación Múltiple por Ecuaciones Encadenadas (MICE, por sus siglas en inglés) es una técnica de imputación de datos que se utiliza para manejar el problema de los valores faltantes en conjuntos de datos. A diferencia de las imputaciones simples, que reemplazan cada valor faltante con un único valor, MICE genera múltiples imputaciones (conjuntos completos de datos) reflejando la incertidumbre sobre cuál es el valor correcto para imputar. Este método se basa en un enfoque iterativo en el que cada variable con valores faltantes se modela condicionalmente al resto de las variables en el conjunto de datos, utilizando sus propias ecuaciones de regresión, lo que resulta en un proceso encadenado.
Sintaxis o Etimología
El término "Imputaciones Múltiples" refiere a la creación de varias versiones completas del conjunto de datos, cada una con diferentes imputaciones de los valores faltantes. "Ecuaciones Encadenadas" describe el proceso iterativo de imputación, donde se utiliza una serie de ecuaciones de regresión, cada una condicionada a las demás variables del conjunto de datos.
Ejemplos
Supongamos que tenemos un conjunto de datos sobre salud que incluye variables como edad, peso, altura y nivel de glucosa en sangre, y algunas de estas observaciones faltan. MICE puede ser utilizado de la siguiente manera:
Inicio: Se crea un punto de partida imputando los valores faltantes con imputaciones iniciales simples, como la media o mediana.
Paso 1: La variable con valores faltantes (por ejemplo, peso) se elimina de las imputaciones iniciales, manteniendo las demás variables fijas.
Paso 2: Se ajusta un modelo de regresión para predecir la variable eliminada (peso) usando el resto de variables (edad, altura, nivel de glucosa) como predictores.
Paso 3: Se imputan los valores faltantes en la variable objetivo (peso) usando las predicciones del modelo.
Iteración: Este proceso se repite para cada variable con valores faltantes, en un enfoque iterativo y encadenado, hasta completar un ciclo para todas las variables.
Ciclos adicionales: Se realizan múltiples ciclos del proceso, actualizando las imputaciones en cada paso, hasta que el proceso converge y las imputaciones se estabilizan.
Puntos de Buena Práctica
Análisis de Sensibilidad: Es crucial realizar un análisis de sensibilidad para evaluar cómo las imputaciones afectan los resultados del análisis.
Diagnóstico de Convergencia: Debe verificarse que el algoritmo ha convergido, lo que significa que las imputaciones en los ciclos posteriores no cambian sustancialmente de las imputaciones en ciclos anteriores.
Distribución de los Datos: Es importante considerar la naturaleza de los datos (por ejemplo, normalidad, linealidad) al elegir el modelo de regresión para cada variable.
Número de Imputaciones: La cantidad de conjuntos de datos imputados a generar debe ser suficiente para reflejar la incertidumbre sobre los valores faltantes. Un número comúnmente sugerido es entre 5 y 10 imputaciones.
Uso Cuidadoso: Aunque MICE es una herramienta poderosa, debe usarse con precaución, comprendiendo las asunciones subyacentes y los posibles sesgos introducidos por las imputaciones.
La **Imputación Múltiple por Ecuaciones Encadenadas (MICE)** es una técnica avanzada para manejar valores faltantes en conjuntos de datos. En lugar de imputar un único valor para cada valor faltante, MICE genera múltiples imputaciones, proporcionando un rango de posibles valores. Esto es especialmente útil para reflejar la incertidumbre que surge al imputar datos.
### ¿Cómo funciona MICE?
MICE funciona creando varios conjuntos de datos imputados basados en modelos iterativos. El proceso general de MICE sigue estos pasos:
1. **Inicialización**: Se imputan los valores faltantes de forma preliminar con un método sencillo (por ejemplo, la media o la mediana).
2. **Iteración**: Para cada variable con valores faltantes, MICE ajusta un modelo predictivo basado en las demás variables del conjunto de datos. Luego, se imputan los valores faltantes de esa variable con el modelo ajustado.
3. **Repetición**: Este proceso se repite secuencialmente para todas las variables con valores faltantes hasta que las imputaciones convergen (no cambian significativamente entre iteraciones).
4. **Múltiples imputaciones**: Este ciclo se repite varias veces, generando diferentes conjuntos de datos con valores imputados. Al final, se puede analizar cada conjunto imputado por separado y luego combinar los resultados para obtener una estimación robusta.
### Ventajas de MICE
- **Captura la incertidumbre**: Al realizar múltiples imputaciones, MICE incorpora la variabilidad y el posible error en las imputaciones, reflejando una visión más realista de los datos.
- **Usa todas las variables disponibles**: Aprovecha todas las variables presentes en el conjunto de datos para predecir los valores faltantes.
- **Flexibilidad**: MICE puede manejar tanto variables numéricas como categóricas y ajustarse a diferentes tipos de datos.
### Implementación de MICE en Python
La librería fancyimpute o el módulo IterativeImputer de scikit-learn pueden usarse para aplicar MICE. Aquí te muestro cómo hacerlo con IterativeImputer de scikit-learn.
#### Paso a paso:
1. **Instalación de dependencias**:
```bash
pip install scikit-learn pandas numpy
```
2. **Ejemplo de imputación con MICE**:
```python
import pandas as pd
import numpy as np
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
# Crear un DataFrame con valores faltantes
data = {'A': [1, 2, np.nan, 4, 5],
'B': [5, np.nan, 6, 8, 10],
'C': [7, 8, 9, 10, np.nan]}
df = pd.DataFrame(data)
# Mostrar el DataFrame original
print("DataFrame original con valores faltantes:")
print("\nDataFrame con los valores imputados usando MICE:")
print(df_imputed)
```
### Explicación del código:
- **DataFrame original**: El DataFrame contiene valores faltantes en varias columnas.
- **IterativeImputer**: Este imputador sigue el principio de MICE, ajustando un modelo para cada variable con valores faltantes de forma iterativa.
- **Transformación**: El método fit\_transform() genera un nuevo conjunto de datos donde los valores faltantes han sido imputados iterativamente utilizando todas las demás variables.
### Salida esperada:
DataFrame original con valores faltantes: ABC01.05.07.012.0NaN8.02NaN6.09.034.08.010.045.010.0NaNDataFrame con los valores imputados usando MICE: ABC01.05.07.012.05.78.023.06.09.034.08.010.045.010.09.2
### Consideraciones:
- **Número de iteraciones**: El parámetro max\_iter controla cuántas veces se repite el proceso de imputación. Si el número de iteraciones es bajo, las imputaciones pueden ser menos precisas.
- **Repetibilidad**: Se puede establecer un random\_state para hacer las imputaciones reproducibles.
- **Manejo de incertidumbre**: En algunas implementaciones avanzadas, como fancyimpute, puedes generar múltiples conjuntos de datos imputados, reflejando la variabilidad.
### Conclusión:
MICE es una técnica poderosa que ofrece imputaciones precisas al aprovechar toda la información disponible y realizar múltiples imputaciones para reflejar la incertidumbre en los valores faltantes. Es útil en aplicaciones donde es crítico manejar de forma robusta los valores faltantes, como en análisis estadísticos o aprendizaje automático.
Les recomiendo mucho leerse el articulo del enlace, la explicacion es un "abc" del metodo MICE.
Le pedí a ChatGPT que me de una explicación del MICE con una metáfora de "Caperucita Roja":
Imaginemos que Caperucita Roja está entregando canastas de alimentos a varias casas en el bosque. Algunas casas tienen notas indicando que ciertos alimentos están faltando. Caperucita decide usar un método avanzado para adivinar qué alimentos deberían estar en las canastas faltantes, basado en lo que usualmente llevan las canastas.
Imputaciones Múltiples: Caperucita hace varias suposiciones diferentes sobre qué alimentos faltan en cada casa. Por ejemplo, podría suponer que una casa necesita pan, leche, o ambos.
Ecuaciones Encadenadas: En lugar de adivinar al azar, Caperucita observa las otras casas y usa patrones para adivinar qué falta. Si una casa tiene leche, pan y frutas, y otra casa tiene solo leche y frutas, Caperucita puede suponer que esa casa probablemente necesita pan.
Caperucita realiza varias iteraciones de este proceso, ajustando sus suposiciones basadas en las observaciones de todas las casas, y finalmente entrega canastas completas a todas las casas con una alta probabilidad de estar correctas.
Yo quedé más que conforme.
Esta interesante la analogía!! sirve para recordarlo de manera sencilla
A juzgar por la curtosis, no sé, pero este último al parecer no ha dado buen resultado para 'weight':
Imputaciones Múltiples por Ecuaciones Encadenadas (MICE)
Concepto
MICE es uno de los métodos de imputación más robustos y ampliamente recomendados, especialmente cuando hay patrones de valores faltantes complejos y múltiples variables con datos ausentes. Se basa en la idea de que imputar una sola vez subestima la incertidumbre asociada con los valores imputados.
En lugar de imputar un solo valor, MICE genera m (generalmente entre 5 y 20) conjuntos de datos completos. Cada conjunto de datos completo se crea imputando los valores faltantes de manera iterativa, utilizando modelos predictivos basados en las otras variables. Los valores imputados en cada iteración se basan en las imputaciones de la iteración anterior, creando una "cadena" de ecuaciones. Una vez que se tienen los m conjuntos de datos, el análisis se realiza por separado en cada uno, y los resultados se combinan utilizando las reglas de Rubin.
El "encadenado" se refiere a que la predicción de cada variable se basa en las imputaciones actuales de las otras variables en la misma iteración, creando un ciclo de refinamiento. Lo "múltiple" se refiere a que este proceso se ejecuta varias veces (típicamente 5 a 20 veces), cada vez con un elemento de aleatoriedad, para generar varios conjuntos de datos completos.
¿Cómo funciona?
Inicialización: Para cada variable con valores faltantes, se rellenan los valores faltantes con una imputación inicial (e.g., media, mediana, o un muestreo aleatorio).
Iteración (Ecuaciones Encadenadas): Se repite el siguiente proceso para un número predefinido de iteraciones (e.g., 10-20):
Para cada variable Yj que tiene valores faltantes:
Considera los valores imputados de Yj en la iteración anterior como "faltantes" nuevamente.
Ajusta un modelo predictivo (por ejemplo, regresión lineal para variables numéricas, regresión logística para binarias, regresión politómica para categóricas) donde Yj es la variable dependiente y todas las demás variables (incluyendo las ya imputadas en esta iteración) son las predictoras.
Predice y "rellena" los valores faltantes de Yj usando el modelo ajustado. Crucialmente, se agrega una componente de ruido aleatorio a las predicciones para simular la incertidumbre, o se muestrean los valores de la distribución predictiva.
Generación de M Conjuntos: Después de un número suficiente de iteraciones para que la convergencia sea razonable, se guardan m copias del conjunto de datos. En cada copia, los valores faltantes se habrán imputado de manera ligeramente diferente debido a la naturaleza estocástica del proceso.
Análisis y Combinación:
Cada uno de los m conjuntos de datos se analiza por separado utilizando el modelo estadístico o de Machine Learning deseado (e.g., entrenar un clasificador, realizar una regresión).
Los resultados (e.g., coeficientes de regresión, errores estándar, R-cuadrado, etc.) de los m análisis se combinan utilizando las reglas de Rubin. Estas reglas proporcionan una estimación combinada y ajustan los errores estándar para reflejar tanto la incertidumbre dentro de cada conjunto imputado como la incertidumbre entre los diferentes conjuntos imputados.
Modelos Predictivos Utilizados en MICE (ejemplos)
Variables Numéricas: Regresión lineal, regresión bayesiana, árboles de decisión, etc.
Variables Binarias: Regresión logística.
Variables Categóricas (más de 2 niveles): Regresión logística multinomial, regresión logística ordinal.
Variables de Conteo: Regresión de Poisson.
Ejemplo Paso a Paso
Vamos a usar un ejemplo. Supongamos que tienes un DataFrame con tres variables, Edad, Ingresos y Horas_Estudio_Semana, y hay valores faltantes en Ingresos y Horas_Estudio_Semana.
Objetivo: Imputar Ingresos y Horas_Estudio_Semana.
Paso 1: Inicialización (Imputación Primitiva)
Antes de empezar las iteraciones sofisticadas, MICE necesita un punto de partida. Todos los valores faltantes se rellenan con una imputación simple, como la media de su respectiva columna.
Ingresos (promedio de los no-NaNs): (45000 + 38000 + 50000 + 42000) / 4 = 43750
Horas_Estudio_Semana (promedio de los no-NaNs): (10 + 12 + 8 + 15) / 4 = 11.25
Paso 2: Iteraciones de Ecuaciones Encadenadas (El Corazón de MICE)
Este es un ciclo que se repite varias veces (ej. 10 a 20 veces). En cada iteración, se procesa cada variable con valores faltantes en un orden específico.
Iteración 1:
ImputarIngresos:*Supongamos que el modelo predice:*Dataset después de ImputarIngresosen Iteración 1:IDEdadIngresosHoras_Estudio_Semana125450001023048050123223800011.254285000085355512011.256274200015
Temporalmente, considera los valores de Ingresos que se imputaron en la inicialización como "faltantes" de nuevo (ID 2, 5).
Entrena un modelo predictivo (ej. Regresión Lineal) para predecir Ingresos usando Edad y Horas_Estudio_Semana como predictores. Para Horas_Estudio_Semana, usa sus valores actuales (incluyendo los imputados en la inicialización).
Usa este modelo para predecir los valores de Ingresos para los IDs 2 y 5. Crucialmente, a esta predicción se le añade un residuo aleatorio (muestreado de los residuos del modelo entrenado). Esto es lo que introduce la incertidumbre y variabilidad necesaria para la imputación múltiple.
Actualiza los valores de Ingresos con estas nuevas imputaciones.
Para ID 2 (Edad=30, Horas=12): Predicción de Ingresos = 48000 + (ruido aleatorio)
Para ID 5 (Edad=35, Horas=11.25): Predicción de Ingresos = 55000 + (ruido aleatorio)
ImputarHoras_Estudio_Semana:*Supongamos que el modelo predice:*Dataset después de ImputarHoras_Estudio_Semanaen Iteración 1 (y fin de Iteración 1):IDEdadIngresosHoras_Estudio_Semana12545000102304805012322380009.24285000085355512013.56274200015
Temporalmente, considera los valores de Horas_Estudio_Semana que se imputaron en la inicialización como "faltantes" de nuevo (ID 3, 5).
Entrena un modelo predictivo (ej. Regresión Lineal) para predecir Horas_Estudio_Semana usando Edad e Ingresos como predictores. Para Ingresos, usa sus valores actuales (¡que ahora incluyen los recién imputados en el paso anterior de esta misma iteración!).
Usa este modelo para predecir los valores de Horas_Estudio_Semana para los IDs 3 y 5, añadiendo también ruido aleatorio.
Actualiza los valores de Horas_Estudio_Semana con estas nuevas imputaciones.
Para ID 3 (Edad=22, Ingresos=38000): Predicción de Horas = 9 + (ruido aleatorio)
Para ID 5 (Edad=35, Ingresos=55120): Predicción de Horas = 13 + (ruido aleatorio)
Este proceso de "encadenamiento" continúa para un número predefinido de iteraciones (ej. 10-20). Las imputaciones se refinan en cada ciclo, ya que los modelos usan datos más precisos de las otras variables. Se monitorea la convergencia (que las distribuciones de los valores imputados se estabilicen) para asegurar que se hagan suficientes iteraciones.
Paso 3: Generación deMConjuntos de Datos Completos
El proceso del Paso 2 (Inicialización + N Iteraciones Encadenadas) se repite M veces (ej. M=5, M=10, M=20).
Debido al componente de ruido aleatorio en el paso de predicción, cada una de estas M ejecuciones dará como resultado un conjunto de datos ligeramente diferente en sus valores imputados.
Al final, tendrás M conjuntos de datos completos, cada uno representando una posible versión de los datos si no hubieran tenido valores faltantes, manteniendo la variabilidad.
Paso 4: Análisis de Cada Conjunto y Combinación de Resultados (Reglas de Rubin)
Una vez que tienes tus M conjuntos de datos completos, realizas el análisis estadístico o de Machine Learning por separado en cada uno de ellos.
Si estás haciendo una regresión lineal, obtendrás M conjuntos de coeficientes, M errores estándar, etc.
Si estás entrenando un modelo de clasificación, obtendrás M precisiones, M F1-scores, etc.
Finalmente, los resultados de estos M análisis se combinan utilizando las Reglas de Rubin. Estas reglas son fórmulas matemáticas que proporcionan una estimación combinada (por ejemplo, el promedio de los coeficientes) y, crucialmente, ajustan los errores estándar para tener en cuenta dos fuentes de variabilidad:
Varianza intra-imputación: La incertidumbre del modelo dentro de cada conjunto de datos imputado.
Varianza inter-imputación: La incertidumbre debido a las diferencias entre los M conjuntos imputados (que provienen del ruido aleatorio añadido).
Al combinar estas dos fuentes de varianza, las Reglas de Rubin aseguran que los errores estándar finales y los intervalos de confianza sean más precisos y reflejen la verdadera incertidumbre introducida por la imputación. Esto permite realizar inferencias estadísticas válidas.