I am working on a metabolomics data set of 81 samples x 407 variables with ~17% missing data. I would like to compare a number of imputation methods to see which is best for my data.

Is there a general rule for the order of pre-treating a data set? Should I impute first and normalize after or normalize first?

I have tried both ways with k-nearest-neighbor imputation and normalization to the median and compared the results using PCA and there are very few differences in the factor maps.

However when using Random Forest imputation the imputation error is much higher if I normalize the data first (normalized data NRMSE = 0.708, raw data NRMSE = 0.122).

My two main questions are:

  1. Should imputation or normalization of data come first? and

  2. Does the order depend on the imputation function used?

  • $\begingroup$ If your data are very non-normal (and e.g. needs a log-transformation to give approximate normality), then any imputation method assuming normality may not perform so well. On the other hand, if we are talking about normalizing variables by subtracting the mean and/or dividing by the standard deviation, it is not immediatly clear why it should matter much except that (a) if things are on very different scales it may help with computational stability and (b) you may have to do it again (if required for what you do), because the imputed values would likely change mean & standard deviation. $\endgroup$
    – Björn
    May 26, 2016 at 7:41
  • $\begingroup$ Why are you normalizing at all? Instead, use a method that deals with your data. $\endgroup$
    – Peter Flom
    May 26, 2016 at 11:10
  • $\begingroup$ Normalization is a standard pre-treatment in metabolomics data analysis. It removes the systematic variability that comes from instrumental analyses. Approximately 40% of my variables have a skewed distribution and while the scale for all data is the same the absolute values vary by 4 orders of magnitude. What are some imputation methods that do not assume normality? $\endgroup$
    – Emma
    May 26, 2016 at 20:33

2 Answers 2


In my opinion, since you are using kNN imputation, and kNN is based on distances you should normalize your data prior to imputation kNN. The problem is, the normalization will be affected by NA values which should be ignored.

For instance, take the e.coli, in which variables magnitude is quite homogeneous. Creating NA's artificially for percentages from .05 to .20 by 0.1 will produce mean square error (MSE) between original and imputed dataset as follow:

0.08380378; 0.08594711; 0.09165323; 0.1005489; 0.09978495; 0.1120758; 0.1046071; 0.1048477; 0.1087384; 0.1283818; 0.1201014; 0.1264724; 0.1337024; 0.1457246; 0.1365055; 0.154879;

Otherwise, if you take Breast Tissue dataset, which have a heterogeneous magnitude through data you will have,

889.4696; 927.6151; 773.7256; 1229.74; 3356.833; 645.8142; 755.98; 2110.523; 987.5008; 1796.339; 1603.461; 1476.863; 2887.509; 2001.222; 905.6305; 2334.935;

This is, with normalization you can keep a reasonable track of MSE.

  • $\begingroup$ I think there are some slips in the writing here: for instance, I don't understand "that magnitude thought variables is quite homogeneous" $\endgroup$
    – Silverfish
    Oct 18, 2016 at 19:30
  • $\begingroup$ Thanks! But I have no clue about some article that can sustain this. $\endgroup$
    – Buzuzyma
    Oct 25, 2016 at 21:32

this paper suggests that normalization should be done before imputation

We suggest that normalization be done first followed by missing value imputations.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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