Ich suche ein KNN-Anrechnungspaket. Ich habe mir das Imputationspaket angesehen ( http://cran.r-project.org/web/packages/imputation/imputation.pdf) ) angesehen, aber aus irgendeinem Grund scheint die KNN-Impute-Funktion (auch wenn dem Beispiel aus der Beschreibung folge) nur zu funktionieren Nullwerte zu unterstellen (wie unten). Ich habe mich umgesehen, kann aber noch nichts finden und habe mich daher gefragt, ob jemand andere Vorschläge für gute KNN-Imputationspakete hat.
W
Im folgenden Code werden die NA-Werte durch Nullen und nicht durch den Knn-Mittelwert ersetzt
require(imputation)
x = matrix(rnorm(100),10,10)
x.missing = x > 1
x[x.missing] = NA
kNNImpute(x, 3)
x
kNNImpute
zur Arbeit zu kommen (anstatt gut zu arbeiten), sodass Sie sich wahrscheinlich nicht für die Voreingenommenheit interessieren.Antworten:
Sie können auch das folgende Paket ausprobieren: ausprobieren DMwR .
Im Fall von 3 NN ist dies fehlgeschlagen, was zu dem Ergebnis "Fehler in knnImputation (x, k = 3): Nicht genügend vollständige Fälle für die Berechnung der Nachbarn" führte.
Allerdings gibt der Versuch 2.
Sie können mit complete.cases (x) auf ausreichende Beobachtungen prüfen, wobei dieser Wert mindestens k betragen muss.
Eine Möglichkeit, dieses Problem zu lösen, besteht darin, Ihre Anforderungen (dh weniger unvollständige Zeilen) zu lockern, indem Sie 1) den NA-Schwellenwert erhöhen oder 2) die Anzahl der Beobachtungen erhöhen.
Hier ist der erste:
Hier ist ein Beispiel für die 2. ...
Mindestens k = 3 vollständige Zeilen sind erfüllt, so dass k = 3 unterstellt werden kann.
quelle
> x (ursprüngliche Matrix)
> y $ x (unterstellte Matrix)
Es werden die Werte unterstellt, die es kann. Diejenigen, die nicht unterstellt werden können, werden auf Null gesetzt.
quelle
imputation
Pakete nicht mehr existieren (für R Version 3.1.2)Das Imputationspaket ist nicht mehr bei CRAN.
Ein anderes Paket als DMwR, das eine kNN-Imputationsfunktion bietet, ist VIM.
Auch einfach zu bedienen:
quelle
quelle
Der Grund dafür, dass R nicht zurechtweisen kann, ist, dass in vielen Fällen mehr als ein Attribut in einer Zeile fehlt und daher der nächste Nachbar nicht berechnet werden kann. Was Sie alternativ tun können, sind entweder Impute-Intervall-Variablen mit projizierten Wahrscheinlichkeiten aus einer Normalverteilung (oder wenn sie schief sind, verwenden Sie eine Gamma-Verteilung mit einer ähnlichen Neigung). und verwenden Sie einen Entscheidungsbaum, um fehlende Werte im Fall einer Klassenvariablen vorherzusagen.
quelle