Variation partitioning using a large matrix as a predictor I'm trying to understand the amount of variance explained in a univariate response using multiple community matrices as predictors. The problem is set up as such: I have the measured rate of a process occurring in soil (response variable, n = 28), and I have matrices of community composition of both plants and bacteria, which are in separate matrices. The bacteria matrix has thousands of columns, each representing a unique taxon of bacteria. These community composition matrices are meant to be predictors. I'm attempting this in R, using the varpart() function from the vegan package.
I'm running into issues of collinearity when I include the bacteria matrix. When I run the code, I get messages like: "collinearity detected in X2: mm = 9642, m = 27". And when I view the results, it includes this warning: "collinearity detected: redundant variable(s) between tables X1, X2 results are probably incorrect: remove redundant variable(s) and repeat the analysis collinearity detected". I tried making a correlation matrix and removing all variables that are highly correlated to other variables, but it didn't really get rid of the problem.
One thing I've tried that removes this problem is to do Principal Components Analysis on the bacterial matrix, and use PCA scores for each data point as a predictive matrix instead of the data itself. This actually gives me an interpretable result. But I have no idea if this approach is valid. What are your thoughts? Is this a huge mess?
I'm pretty new to all these multivariate methods, so any help would be appreciated.
 A: RDA (Redundancy Analysis) or CCA (Canonical Correspondece Analysis) are the methods underlying variation partitioning and both these techniques are limited by the number of predictors that are allowed. Trying to model variation explained by 1000 predictors in a data set of 28 samples is simply not possible with these techniques.
You could reduce the bacterial data set down to a few principal components, but you'll have to do some mental accounting for the fact that you aren't using all the information in the bacteria and have taken some component of that and looked at how much of your response matrix can be explained by that part of the bacteria — so you need to know what the PCs represent in terms of the bacteria data set to understand what is explaining variation in your actual response matrix.
Other approaches you could use that are attuned to the problem of comparing community matrices like these are coinertia analysis and cocorrespondence analysis. Coinertia analysis is in the {ade4} package while the {cocorresp} package implements the two types of cocorrespondence analysis available. {ade4} has some other methods for comparing community matrices IIRC so you could look into them too, but I am not familiar with them.
