vegandevs / vegan

R package for community ecologists: popular ordination methods, ecological null models & diversity analysis
https://vegandevs.github.io/vegan/
GNU General Public License v2.0
448 stars 97 forks source link

Spatial autocorrelation in rda #567

Closed aguilart closed 1 month ago

aguilart commented 1 year ago

I am wondering what is the best way to take into account spatial autocorrelation in RDA. My best attempt has been as follows:

data(mite)
data(mite.xy)

# Doing pcm on the coordinate data
mite.pcnm <- as.data.frame(scores(pcnm(dist(mite.xy))))

# doing the RDA
mite.var <- rda(mite ~ Condition(mite.pcnm$PCNM1, mite.pcnm$PCNM2))

It is a bit complicated that under Condition I have to write each PCNM axis, but I have not found a way to put the whole dataframe.

Is this approach valid?

Thanks

CA

jarioksa commented 1 year ago

Yes, this is clumsy. However, there may be some shortcuts:

  1. Condition() accepts matrix argument (instead of data frame). Formulae mite ~ Condition(as.matrix(mite.pcnm)) or mite ~ Condition(as.matrix(mite.pcnm)[, 1:2]) should work.
  2. If formula interface is not used, input matrices can be data frames which are expanded to model matrices, or matrices which are handled like they are. If you only have partial terms, the constraints can be empty: rda(mite, , mite.pcnm) or rda(mite, , pcnm[, 1:2]).