Search code examples
rsyntaxvegan

R vegan CCA, determine which constraints were aliased?


I've performed a CCA using vegan and plotted with biplot arrows. the "ca" output tells me I have "Some constraints were aliased because they were collinear (redundant)". I understand that that means the constraints were dropped because they were redundant.

ca<-cca(CCA_data[3:4567]~.,data=Meta_data_2)
ca

I can also list the alias no problem:

alias(ca, names=TRUE,complete=TRUE)

However, how do I determine WHICH constraints were aliased or were collinear with other factors. I need to know what factors were redundant with what factors so I can rethink my approach.

This again gives me the listed alias, but no biplot values. While the second line here gives me biplot values, but the alias-ed ones are missing...

ca$CCA$alias
ca$CCA$biplot

Suggestions on how to get that information from "ca" would be helpful.

**Update:

Model :
CCA_data[3:4567] ~ `Assimilatory nitrate reduction, nitrate => ammonia` + 
    `beta-Oxidation` + `beta-Oxidation, acyl-CoA synthesis` + 
    `Citrate cycle (TCA cycle, Krebs cycle)` + `Dissimilatory nitrate reduction, nitrate => ammonia` + 
    `Fatty acid biosynthesis, elongation` + `Fatty acid biosynthesis, elongation, endoplasmic reticulum` + 
    `Fatty acid biosynthesis, elongation, mitochondria` + `Fatty acid biosynthesis, initiation` + 
    `Gluconeogenesis, oxaloacetate => fructose-6P` + `Glycolysis (Embden-Meyerhof pathway), glucose => pyruvate` + 
    `Glyoxylate cycle` + `Nitrate assimilation` + Photorespiration + 
    `Photosystem I` + `Photosystem II` + `Pyruvate oxidation, pyruvate => acetyl-CoA` + 
    `Reductive citrate cycle (Arnon-Buchanan cycle)` + `Reductive pentose phosphate cycle (Calvin cycle)` + 
    `Urea cycle`

Complete :
                                                   `Assimilatory nitrate reduction, nitrate => ammonia`
`Photosystem I`                                      1.23566                                           
`Photosystem II`                                    -0.64830                                           
`Pyruvate oxidation, pyruvate => acetyl-CoA`        -0.40986                                           
`Reductive citrate cycle (Arnon-Buchanan cycle)`    22.01804                                           
`Reductive pentose phosphate cycle (Calvin cycle)`  16.10217                                           
`Urea cycle`                                         1.55773                                           
                                                   `beta-Oxidation`
`Photosystem I`                                      0.24919       
`Photosystem II`                                     1.20864       
`Pyruvate oxidation, pyruvate => acetyl-CoA`        -0.24875       
`Reductive citrate cycle (Arnon-Buchanan cycle)`    -1.84576       
`Reductive pentose phosphate cycle (Calvin cycle)`  -0.74552       
`Urea cycle`                                         5.03302       
                                                   `beta-Oxidation, acyl-CoA synthesis`
`Photosystem I`                                      0.08856                           
`Photosystem II`                                     1.19711                           
`Pyruvate oxidation, pyruvate => acetyl-CoA`         0.39169                           
`Reductive citrate cycle (Arnon-Buchanan cycle)`     0.23713                           
`Reductive pentose phosphate cycle (Calvin cycle)`  -6.34640                           
`Urea cycle`                                        -1.88670                           

^Above has been shortened


Solution

  • That information is given by alias command. Here a reproducible example:

    library(vegan)
    data(dune, dune.env)
    m <- rda(dune ~ ., dune.env)
    ## the following gives the names of aliased variables
    alias(m, names=TRUE)
    # [1] "Manure^4"
    ## the following gives the aliasing equation
    alias(m)
    Complete :
         A1 Moisture.L Moisture.Q Moisture.C ManagementHF ManagementNM ManagementSF Use.L Use.Q Manure.L  Manure.Q  Manure.C 
    Manure^4                                              8.366600                              5.291503 -4.472136  2.645751
    

    The output is wide, but it tells that one level of Manure is completely aliased when we have ManagementNM. More details are easily discerned by crosstabulation:

    with(dune.env, table(Management, Manure))
              Manure
    Management 0 1 2 3 4
            BF 0 2 1 0 0
            HF 0 1 2 2 0
            NM 6 0 0 0 0
            SF 0 0 1 2 3
    

    We only have Manure level 0 when we have Management level NM, and the last level of `Manure will be aliased.