I understand that if the scale of the different variables varies(for example, some expressed in absolute form while other in percentages), that will cause problem in Principal component analysis (PCA). I read two PCA analysis that first use scale() function to standlize the dataset: 1) from R action 2) from R bloggers.

My question is, if I want to do PCA for variables expressed in terms of percentages. Do I want to still use scale function? It feel like the percentages already were normalized and can be used directly. Can anyone explain why to use scale function?

The variables are social-economic factors, including count of school numbers, population density, housing unit density, green space area percentage, etc. They are mostly expressed in terms of percentages, ranging from 0 to 100%. For the variables not in percentage (e.g., count of school number), I converted them using value/max value, so that they finally all range from 0 to 100%.


Thanks to Whuber's suggestion, I see that: "standardization makes a difference in the results but isn't absolutely necessary".

1) Useful posts to understand PCA correlation covariance

2) Whether to normalize data before PCA

  • 1
    $\begingroup$ Could you tell us more about your percentages? For instance, maybe one variable is concentration of a contaminant in water and ranges from $0$ to $0.000\,000\,01\%$; maybe another is a mortality rate in a dose-response test ranging from $0$ to $100\%$; maybe another is percent increase in a quantity year-over-year and ranges from $-100\%$ to over $1000\%$. You see the point: merely expressing a number as a percentage does not, in itself, automatically put it on any standard scale. More information about the variation of the variable is needed. See stats.stackexchange.com/questions/53. $\endgroup$
    – whuber
    Jun 17, 2015 at 18:26
  • $\begingroup$ Hi whuber, all variables range from 0 to 100%. $\endgroup$
    – enaJ
    Jun 17, 2015 at 18:41
  • $\begingroup$ That's helpful but it's not enough to know that. For instance, maybe one of your water concentrations is $100\%$ and all the others are still less than $0.000\,000\,01\%$. Since PCA uses variances and covariances, you want to pay attention to those rather than the ranges of your data. $\endgroup$
    – whuber
    Jun 17, 2015 at 18:50
  • $\begingroup$ Hi whuber, are you suggesting to examine the distribution of each variable? I think their variance would certainly vary from each other. So does that mean using scale() function is often a necessity for PCA analysis? $\endgroup$
    – enaJ
    Jun 17, 2015 at 19:09
  • 2
    $\begingroup$ The link I gave you--along with other posts you can find by searching our site for PCA correlation covariance--will explain that standardization makes a difference in the results but isn't absolutely necessary. In fact, there are even more ways to normalize data for a PCA: which one you choose depends on the nature of the data and what you intend to do with the result. $\endgroup$
    – whuber
    Jun 17, 2015 at 19:12


Your Answer

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

Browse other questions tagged or ask your own question.