Estou procurando um pacote de imputação KNN. Eu estive analisando o pacote de imputação ( http://cran.r-project.org/web/packages/imputation/imputation.pdf ), mas por algum motivo a função de imputação do KNN (mesmo quando segue o exemplo da descrição) parece apenas imputar valores zero (conforme abaixo). Eu tenho procurado, mas não consigo encontrar algo ainda, e, portanto, estava me perguntando se alguém tem outras sugestões para bons pacotes de imputação do KNN?
W
No código abaixo - os valores de NA são substituídos por zeros - não pelo valor médio de Knn
require(imputation)
x = matrix(rnorm(100),10,10)
x.missing = x > 1
x[x.missing] = NA
kNNImpute(x, 3)
x
r
k-nearest-neighbour
data-imputation
Wouter
fonte
fonte
kNNImpute
trabalhar (em vez de trabalhar bem), então provavelmente não se importa com o viés.Respostas:
Você também pode tentar o seguinte pacote: DMwR .
Ele falhou no caso de 3 NN, fornecendo 'Erro na computação de knnImputation (x, k = 3): casos completos insuficientes para computar vizinhos'.
No entanto, tentar 2 dá.
Você pode testar observações suficientes usando complete.cases (x), em que esse valor deve ser pelo menos k.
Uma maneira de superar esse problema é relaxar seus requisitos (ou seja, linhas menos incompletas), aumentando 1) o limiar de NA ou, alternativamente, 2) aumentando seu número de observações.
Aqui está o primeiro:
aqui está um exemplo do segundo ...
Pelo menos k = 3 linhas completas são satisfeitas, portanto, é possível atribuir k = 3.
fonte
> x (matriz original)
> y $ x (matriz imputada)
É imputado os valores que pode. Aqueles que não podem ser imputados são definidos como zero.
fonte
imputation
pacotes não existe mais (para R versão 3.1.2)O pacote de imputação não está mais no CRAN.
Um pacote diferente do DMwR que oferece uma função de imputação kNN é o VIM.
Também é fácil de usar:
fonte
fonte
A razão para R não poder imputar é porque, em muitos casos, mais de um atributo em uma linha está ausente e, portanto, ele não pode calcular o vizinho mais próximo. Como alternativa, você pode fazer variáveis de intervalo de imputação com probabilidades projetadas a partir de uma distribuição normal (ou se sua distorção usar uma distribuição Gama com distorção semelhante). e use uma árvore de decisão para prever valores ausentes no caso de uma variável de classe.
fonte