I am doing data imputation with the missForest function (in the missForest package in R) and everything seems to work just fine. The function is easy to use and, at first sight, imputed data look plausible.

However, I am confuse at how to interpret the different out-of-bag errors (OOBerror).

When I use the default function, I get an OOBerror of 0.1574 (Normalized Root Mean Squares Error or NRMSE):

> mf_test4 = missForest(test.mf4)
> mf_test4$OOBerror

This suggests that, for the whole dataset, data are imputed with 15,74 % error.

When I want to look at the error associate with each imputed variables, I get much smaller errors (the 2 first variables contain no NA, so MSE = 0 since no imputation is needed):

> mf_test42 = missForest(test.mf4, variablewise = TRUE)
> mf_test42$OOBerror
       MSE        MSE        MSE        MSE        MSE 
0.00000000 0.00000000 0.00040559 0.00005102 0.00027467 

I understand that in the second case, we get the MSE (Mean Squared Error... I guess). But even when calculating the squared root of these MSE, I obtain much smaller values than the 0.1574 for the whole imputed dataset:

> sqrt(mf_test42$OOBerror)
     MSE      MSE      MSE      MSE      MSE 
0.000000 0.000000 0.020139 0.007143 0.016573

Does that mean that data are imputed for variable 3, 4 and 5 with 2.0 %, 0.07 % and 1.6 % error respectively ? Why is it much smaller than the 15,74 % found for the whole dataset ? I guess it has something to do with normalization ?

Anyone can help me interpret or understand the difference ?



Unless I'm mistaken, the units of the Mean Squared Errors of your imputations are expressed in your variables units-squared, not in percentage. Therefore, I believe it is yours to interpret whether a Root Mean Square Error of 0.02, 0.007 or 0.017 is acceptable or not with regards to the units of your variables (as I'm not a statistician, I would be glad if someone would tell me if I understood this right).
Regarding the rest of your question, I do not know how Stekhoven & Buehlmann actually coded missForest() but, according to Wikipedia, Normalized RMSE is usually computed by dividing the RMSE by the observations mean or range. Consequently, the global NRMSE returned by missForest() is probably an aggregation (perhaps the average) of the NMRSE computed for each individual variable.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.