Cómo manejar los datos perdidos

library(imputeTS)na.random(mydata) # Random Imputation
na.locf(mydata, option = "locf") # Last Obs. Carried Forward
na.locf(mydata, option = "nocb") # Next Obs. Carried Backward
na.interpolation(mydata) # Linear Interpolation
na.seadec(mydata, algorithm = "interpolation") # Seasonal Adjustment then Linear Interpolation

Media, mediana y moda

Calcular la media general, la mediana o la moda es un método de imputación muy básico, es la única función probada que no aprovecha las características de la serie temporal o la relación entre las variables. Es muy rápido, pero tiene claras desventajas. Una de las desventajas es que la imputación de la media reduce la varianza en el conjunto de datos.

library(imputeTS)na.mean(mydata, option = "mean") # Mean Imputation
na.mean(mydata, option = "median") # Median Imputation
na.mean(mydata, option = "mode") # Mode ImputationIn Python
from sklearn.preprocessing import Imputer
values = mydata.values
imputer = Imputer(missing_values='NaN', strategy='mean')
transformed_values = imputer.fit_transform(values)# strategy can be changed to "median" and "most_frequent"

Regresión lineal

Para empezar, se identifican varios predictores de la variable con valores perdidos utilizando una matriz de correlación. Se seleccionan los mejores predictores y se utilizan como variables independientes en una ecuación de regresión. La variable con datos ausentes se utiliza como variable dependiente. Los casos con datos completos para las variables predictoras se utilizan para generar la ecuación de regresión; la ecuación se utiliza entonces para predecir los valores que faltan en los casos incompletos. En un proceso iterativo, se insertan los valores de la variable que falta y luego se utilizan todos los casos para predecir la variable dependiente. Estos pasos se repiten hasta que hay poca diferencia entre los valores predichos de un paso al siguiente, es decir, convergen.
Teóricamente proporciona buenas estimaciones para los valores perdidos. Sin embargo, hay varias desventajas de este modelo que tienden a superar las ventajas. En primer lugar, como los valores sustituidos se predijeron a partir de otras variables, tienden a encajar «demasiado bien» y, por tanto, el error estándar se desinfla. También hay que suponer que existe una relación lineal entre las variables utilizadas en la ecuación de regresión cuando puede no haberla.

Imputación múltiple

  1. Imputación: Imputa las entradas que faltan de los conjuntos de datos incompletos m veces (m=3 en la figura). Tenga en cuenta que los valores imputados se extraen de una distribución. La simulación de extracciones aleatorias no incluye la incertidumbre en los parámetros del modelo. Un enfoque mejor es utilizar la simulación Markov Chain Monte Carlo (MCMC). Este paso da como resultado m conjuntos de datos completos.
  2. Análisis: Analizar cada uno de los m conjuntos de datos completos.
  3. Pooling: Integrar los m resultados del análisis en un resultado final

Fuente: http://www.stefvanbuuren.nl/publications/mice%20in%20r%20-%20draft.pdf
# We will be using mice library in r
library(mice)
# Deterministic regression imputation via mice
imp <- mice(mydata, method = "norm.predict", m = 1)
# Store data
data_imp <- complete(imp)# Multiple Imputation
imp <- mice(mydata, m = 5)#build predictive model
fit <- with(data = imp, lm(y ~ x + z))#combine results of all 5 models
combine <- pool(fit)

Este es, con mucho, el método preferido para la imputación por las siguientes razones:
– Fácil de usar
– No hay sesgos (si el modelo de imputación es correcto)

Imputación de variables categóricas

  1. La imputación de modo es un método pero definitivamente introducirá sesgos
  2. Los valores perdidos pueden ser tratados como una categoría separada por sí misma. Podemos crear otra categoría para los valores perdidos y utilizarlos como un nivel diferente. Este es el método más sencillo.
  3. Modelos de predicción: Aquí, creamos un modelo de predicción para estimar los valores que sustituirán a los datos que faltan. En este caso, dividimos nuestro conjunto de datos en dos conjuntos: Un conjunto sin valores perdidos para la variable (entrenamiento) y otro con valores perdidos (prueba). Podemos utilizar métodos como la regresión logística y el ANOVA para la predicción
  4. Imputación múltiple

KNN (K Nearest Neighbors)

Hay otras técnicas de aprendizaje automático como XGBoost y Random Forest para la imputación de datos, pero hablaremos de KNN por ser ampliamente utilizado. En este método, se eligen k vecinos en función de alguna medida de distancia y su media se utiliza como estimación de la imputación. El método requiere la selección del número de vecinos más cercanos y una métrica de distancia. KNN puede predecir tanto atributos discretos (el valor más frecuente entre los k vecinos más cercanos) como continuos (la media entre los k vecinos más cercanos)
La métrica de distancia varía según el tipo de datos:
1. Datos continuos: Las métricas de distancia comúnmente utilizadas para los datos continuos son la euclidiana, la de Manhattan y la del coseno
2. Datos categóricos: En este caso se suele utilizar la distancia de Hamming. Toma todos los atributos categóricos y para cada uno, cuenta uno si el valor no es el mismo entre dos puntos. La distancia Hamming es entonces igual al número de atributos para los que el valor era diferente.
Una de las características más atractivas del algoritmo KNN es que es simple de entender y fácil de implementar. La naturaleza no paramétrica de KNN le da una ventaja en ciertos escenarios en los que los datos pueden ser muy «inusuales».
Una de las desventajas obvias del algoritmo KNN es que consume mucho tiempo cuando se analizan grandes conjuntos de datos porque busca instancias similares en todo el conjunto de datos. Además, la precisión de KNN puede verse gravemente degradada con datos de alta dimensión porque hay poca diferencia entre el vecino más cercano y el más lejano.

library(DMwR)
knnOutput <- knnImputation(mydata)In python
from fancyimpute import KNN
# Use 5 nearest rows which have a feature to fill in each row's missing features
knnOutput = KNN(k=5).complete(mydata)

Entre todos los métodos discutidos anteriormente, la imputación múltiple y KNN son ampliamente utilizados, y la imputación múltiple al ser más simple es generalmente preferida.

Si tiene alguna pregunta sobre este post, por favor pregunte en los comentarios y haré todo lo posible para responder.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.