I've created a Non-metric MultiDimensional Scaling (NMDS) ordination from a Bray-Curtis dissimilarity matrix. (Starting data were basal areas of various tree species across multiple research plots).

I'd like to determine correlations of various plot-level environmental variables (e.g., soil chemistry, topography, elevation ,etc.) with my two NMDS ordination axes. Correlations between the ordination axes and environmental variables will be calculated with Pearson’s r2.

  • For reference, I've chosen to do this using the cor2m() and vf() functions available in the Ecodist package (vs vegan) in R.

My question: Do I have to scale/standardize my environmental variables before calculating correlations with my NMDS ordination axes?

I ask because my variable cover multiple orders of magnitudes: some of my variables have values in the 1000s while others have values in the hundredths.

If the answer is yes, what is the appropriate method? If the answer is no, why not?


2 Answers 2


The answer is apparently: no. You do not need to scale the variables.

  1. NMDS's lack of assumptions:

    • Distance-based techniques make no assumption about the form of the relationships among variables (e.g., linearity) nor about species response to any underlying gradient(s).
  2. It's also important to note that the vf() function vector fits each variable separately, so any differences in magnitude of variables does not impact the outcome. See the first portion of the source code for vf() to confirm:

    function (ord, vars, nperm = 100) 
       vfcalc <- function(ord, vars) {
          lm.list <- apply(vars, 2, function(x, ord) lm(x ~ ord), ord = ord)
  3. TEST IT ANYWAY: I scaled my environmental data using the scale() function and ran the vf() function both with and without scaled data. (I.e., I compared vf(nmds.data,env.data) vs vf(nmds.data,scale(env.data)).

    • Both resulted in the exact same variable scores and r values (max correlation of variable with ordination space)

      • Note: due to the permutation approach used for calculating p-values, the p-value for any given variable's score sometimes slightly changes regardless of scaling or number of permutations (I tested up to 100000 permutations). However, the difference in p-value between scaled and unscaled attempts was negligible and within the difference observed when re-running vf() multiple times without scaling.

The answer is no because correlations are invariant against scaling. This can be very easily seen - write down the definition of a correlation. If you multiply a variable with any constant, the constant will appear in numerator and denominator and cancel out. Adding a constant doesn't do anything either (already not to the variances and covariances that make up the correlation).


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.