Đây có thể không phải là giải pháp sạch mà bạn đang tìm kiếm, nhưng đây là một con đường phía trước. Vấn đề là gấp đôi:
1) giá trị của các biến NA cần được mô phỏng dựa trên cùng một giao thức imputation mà dữ liệu gốc được tạo ra.
2) kết quả cần được dự đoán dựa trên giá trị được tranh chấp đó, nhưng theo khu rừng ngẫu nhiên ban đầu không có dữ liệu mới.
1:
Tack trên quan sát mới vào tập dữ liệu quy gán (chứ không phải là bản gốc) (ví dụ: Sử dụng chức năng dữ liệu QUY GÁN bạn đã có) và quy cho các giá trị bị mất tích mới. Giá trị mới không khớp với imputed từ quan sát ban đầu (nó không nên).
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:
dự đoán mới quy gán quan sát bằng cách sử dụng thông tin từ rừng ngẫu nhiên ban đầu.
predict(iris.rf, iris.imputed2[151, ])
1481
virginica
Levels: setosa versicolor virginica
Sẽ có vấn đề với phương sai vì bạn không bao gồm sự không chắc chắn tiềm ẩn trong việc sử dụng dữ liệu bị tranh chấp để ám chỉ một điểm dữ liệu khác. Một cách để có được xung quanh đó là để bootstrap.
này hoạt động nếu biến phụ thuộc là mất tích, quá (dự đoán không quan tâm đến biến phụ thuộc, vì vậy bạn chỉ có thể cung cấp cho một ma trận của các biến độc lập, quá):
>>>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
Vui vì bạn đã tìm ra cách tốt hơn để làm điều đó! Cảm ơn bạn đã báo cáo lại. –