Estoy buscando un paquete de imputación KNN. He estado mirando el paquete de imputación ( http://cran.r-project.org/web/packages/imputation/imputation.pdf ) pero, por alguna razón, la función de imputación KNN (incluso cuando se sigue el ejemplo de la descripción) solo parece para imputar valores cero (como se indica a continuación). He estado buscando pero aún no puedo encontrar algo y, por lo tanto, me preguntaba si alguien tiene otras sugerencias para buenos paquetes de imputación de KNN.
W
En el código de abajo, los valores de NA se reemplazan por ceros, no por el valor medio Knn
require(imputation)
x = matrix(rnorm(100),10,10)
x.missing = x > 1
x[x.missing] = NA
kNNImpute(x, 3)
x
kNNImpute
a trabajar (en lugar de trabajar bien), por lo que probablemente no le importe el sesgo.Respuestas:
También puede probar el siguiente paquete: DMwR .
Falló en el caso de 3 NN, dando 'Error en knnImputation (x, k = 3): No hay suficientes casos completos para calcular vecinos'.
Sin embargo, probar 2 da.
Puede probar suficientes observaciones utilizando complete.cases (x), donde ese valor debe ser al menos k.
Una forma de superar este problema es relajar sus requisitos (es decir, filas menos incompletas), al 1) aumentar el umbral de NA o, como alternativa, 2) aumentar su número de observaciones.
Aquí está el primero:
Aquí hay un ejemplo de la segunda ...
Al menos k = 3 filas completas están satisfechas, por lo tanto, es capaz de imputar k = 3.
fuente
> x (matriz original)
> y $ x (matriz imputada)
Se imputan los valores que puede. Los que no pueden imputarse se establecen en cero.
fuente
imputation
paquetes ya no existen (para R versión 3.1.2)El paquete de imputación ya no está en CRAN.
Un paquete distinto de DMwR que ofrece una función de imputación kNN es VIM.
También fácil de usar:
fuente
fuente
La razón por la que R no puede imputar es porque, en muchos casos, falta más de un atributo en una fila y, por lo tanto, no puede calcular el vecino más cercano. Lo que puede hacer alternativamente es imputar variables de intervalo con probabilidades proyectadas de una distribución normal (o si está sesgada, use una distribución Gamma que tenga una inclinación similar). y use un árbol de decisión para predecir los valores faltantes en el caso de una variable de clase.
fuente