To prawdopodobnie nie jest czyste rozwiązanie, którego szukasz, ale tutaj jest droga naprzód. Problem jest dwojaki:
1) wartość zmiennych NA musi być przypisana na podstawie tego samego protokołu imputacji, w ramach którego zostały utworzone oryginalne dane.
2) wynik należy przewidzieć na podstawie tej przypisanej wartości, ale zgodnie z pierwotnym losowym lasem bez nowych danych.
1:
Tack na nowej obserwacji do kalkulacyjnych (zamiast oryginału) zbioru danych (tj Wykorzystaj dane kalkulacyjne już masz) i przypisać nowe wartości brakujących. Nowa wartość nie pasuje do imputacji z pierwotnej obserwacji (nie powinna).
iris.na2 = rbind(iris.imputed, iris.na[148, , drop=FALSE])
iris.imputed2 = rfImpute(Species ~ ., iris.na2)
>>>tail(iris.imputed,3)
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
148 virginica 6.5 3.019279 5.2 2.0
149 virginica 6.2 3.400000 5.4 2.3
150 virginica 5.9 3.000000 5.1 1.8
>>>tail(iris.imputed2,4)
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
148 virginica 6.5 3.019279 5.2 2.0
149 virginica 6.2 3.400000 5.4 2.3
150 virginica 5.9 3.000000 5.1 1.8
1481 virginica 6.5 3.023392 5.2 2.0
2:
Predict nowo przypisać obserwacji z wykorzystaniem informacji z oryginalnego losowej lasu.
predict(iris.rf, iris.imputed2[151, ])
1481
virginica
Levels: setosa versicolor virginica
Nie będzie problemów z wariancji, ponieważ nie są w tym niepewność w użyciu niejawny zarzucanych dane przypisać kolejny punkt danych. Jednym ze sposobów obejścia tego jest bootstrap.
To działa, jeśli zmienna zależna brakuje też (przewidzieć nie dba o zmiennej zależnej, więc można po prostu dać macierz niezależnych zmiennych, zbyt):
>>>missY = cbind(NA,iris.imputed2[151, 2:5])
>>>missY
NA Sepal.Length Sepal.Width Petal.Length Petal.Width
1481 NA 6.5 3.023392 5.2 2
>>>predict(iris.rf,missY)
1481
virginica
Levels: setosa versicolor virginica
Cieszę się, że wymyślił lepszy sposób, aby to zrobić! Dziękuję za zgłoszenie. –