Je recherche un package d'imputation KNN. J'ai regardé le paquet d'imputation ( http://cran.r-project.org/web/packages/imputation/imputation.pdf ) mais pour une raison quelconque, la fonction d'imputation KNN (même en suivant l'exemple de la description) semble seulement pour imputer des valeurs nulles (comme ci-dessous). J'ai regardé autour de moi, mais je ne trouve pas encore quelque chose, et je me demandais donc si quelqu'un avait d'autres suggestions pour de bons packages d'imputation KNN?
W
Dans le code ci-dessous - les valeurs NA sont remplacées par des zéros - pas par la valeur moyenne Knn
require(imputation)
x = matrix(rnorm(100),10,10)
x.missing = x > 1
x[x.missing] = NA
kNNImpute(x, 3)
x
kNNImpute
au travail (plutôt qu'à bien travailler), donc vous ne vous souciez probablement pas du parti pris.Réponses:
Vous pouvez également essayer le package suivant: DMwR .
Il a échoué dans le cas de 3 NN, donnant «Erreur dans knnImputation (x, k = 3): Cas complets insuffisants pour calculer les voisins».
Cependant, essayer 2 donne.
Vous pouvez tester des observations suffisantes en utilisant complete.cases (x), où cette valeur doit être d'au moins k.
Une façon de surmonter ce problème consiste à assouplir vos exigences (c.-à-d. Lignes moins incomplètes), en 1) augmentant le seuil NA, ou alternativement, 2) augmentant votre nombre d'observations.
Voici le premier:
voici un exemple du 2ème ...
Au moins k = 3 lignes complètes sont satisfaites, il peut donc imputer pour k = 3.
la source
> x (matrice d'origine)
> y $ x (matrice imputée)
Il a imputé les valeurs qu'il peut. Ceux qui ne peuvent pas être imputés sont mis à zéro.
la source
imputation
packages n'existent plus (pour la version R 3.1.2)Le package d'imputation n'est plus sur CRAN.
Un package autre que DMwR qui offre une fonction d'imputation kNN est VIM.
Aussi facile à utiliser:
la source
la source
La raison pour laquelle R ne peut pas imputer est parce que dans de nombreux cas, plus d'un attribut dans une ligne est manquant et qu'il ne peut donc pas calculer le plus proche voisin. Ce que vous pouvez faire alternativement est soit imputer des variables d'intervalle avec des probabilités projetées à partir d'une distribution normale (ou si son asymétrie utilise une distribution Gamma qui a une asymétrie similaire). et utiliser un arbre de décision pour prédire les valeurs manquantes dans le cas d'une variable de classe.
la source