-
Notifications
You must be signed in to change notification settings - Fork 0
/
constrained_ordination.qmd
154 lines (83 loc) · 4.6 KB
/
constrained_ordination.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
---
title: "constrained ordination"
format: html
---
## constrained ordination
在整理了部分非约束排序方法后,这里记录一些约束排序的常用方法。
约束排序(Constrained Ordination):在约束排序中,降维的过程受到了来自其他变量(如环境变量)的约束。这些约束帮助我们理解数据中特定的变异,并将其与其他因素进行关联。经典的约束排序方法包括冗余分析(Redundancy Analysis,RDA)和典型对应分析(Canonical Correspondence Analysis,CCA)。
非约束排序(Unconstrained Ordination):在非约束排序中,降维的过程不受外部因素的约束,它是通过在低维空间中优化某种目标函数来实现的。非约束排序更注重在低维空间中保留样本之间的相对距离关系,以更好地展示数据的内在结构。
```{r}
library(vegan)
```
### RDA & tbRDA
RDA(Redundancy Analysis):冗余分析是一种经典的约束排序方法,它将环境变量或处理因子作为约束变量,将样本在约束条件下进行主成分分析,从而寻找主成分分析和约束变量之间的关联。
是一种回归分析结合主成分分析的排序方法,也是多响应变量(multi-response)回归分析的拓展。
tb-RDA在分析前首先对原始数据做一定的转化(例如Hellinger预转化包含很多零值的群落物种数据),并使用转化后的数据执行RDA。
```{r}
# OTU 数据
phylum <- read.delim('./datasets/phylum_table.txt',
row.names = 1, sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)
# 环境
env <- read.delim('./datasets/env_table.txt', row.names = 1,
sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)
class(phylum)
```
#### normal RDA
```{r}
# ?rda
# Y, Constraining matrix, typically of environmental variables.
# 一般环境矩阵在公式的右边
rda_result <- rda(phylum~., data = env, scale = FALSE)
rda_result
```
#### tb-RDA
当物种丰度表中出现很多“0”值的情况下,应当首先进行Hellinger转化后,再输入至RDA中。
```{r}
phylum_hel <- decostand(phylum, method = 'hellinger')
rda_tb <- rda(phylum_hel~., env, scale = FALSE)
rda_tb
```
*Interpret: *第一部分为公式;第二部分中Constrained、Unconstrained的方差分解结果,其中约束轴可以解释的方差为0.73;
Eigenvalues,特征值(各轴解释的方差),RDA1/2/3为基于拟合值所得的约束轴。
*更为详细的数据*
```{r}
rda_tb.scaling1 <- summary(rda_tb, scaling = 1)
rda_tb.scaling1
```
*intrepret:*PC为基于残差所得的非约束轴。
```{r}
plot(rda_tb)
# plot(rda_tb, scaling = 1, main = 'I 型标尺', display = c('wa', 'sp', 'cn'))
```
*RDA模型的验证方法:*
```{r}
r2 <- RsquareAdj(rda_tb)
rda_noadj <- r2$r.squared #原始 R2
rda_adj <- r2$adj.r.squared #校正后的 R2
```
```{r}
##置换检验
#所有约束轴的置换检验,基于 999 次置换检验
rda_tb_test <- anova(rda_tb, permutations = 999)
#或者使用
rda_tb_test <- anova.cca(rda_tb, step = 1000)
#各约束轴逐一检验,基于 999 次置换检验
rda_tb_test_axis <- anova(rda_tb, by = 'axis', permutations = 999)
#或者使用
rda_tb_test_axis <- anova.cca(rda_tb, by = 'axis', step = 1000)
```
### CCA
CCA(Canonical Correspondence Analysis):典型对应分析是一种类似于RDA的方法,它也是将约束变量考虑进主成分分析的过程中,但不同之处在于CCA使用对应分析而不是协方差分析,因此更适用于计数数据。
```{r}
```
### CAP
CAP(Canonical Analysis of Principal coordinates):主坐标分析的典型分析是对样本之间的距离矩阵进行主成分分析, 而CAP则在主成分分析中同时考虑了约束变量的信息,类似于RDA和CCA的结合。
CAP(Canonical Analysis of Principal coordinates):
在PCoA(主坐标分析)的基础上进行约束排序。
先进行非约束性PCoA获取样本主坐标。
再以环境变量为约束对PCoA轴进行RDA(冗余分析)。
综合利用PCoA和RDA的优点。
### RNMDS
RNMDS(Redundancy Analysis of Non-metric Multidimensional Scaling):非度量多维尺度法的冗余分析是将非度量多维尺度法(NMDS)与环境变量或约束变量相结合,用于分析环境因子对样本的影响。
### Others
部分冗余分析(Partial Redundancy Analysis,pRDA)、距离理论冗余分析(Distance-based Redundancy Analysis,db-RDA)、正相关环境向量分析(Best Vector Environmental Correlation,BVEC)等方法都属于约束排序(Constrained Ordination)的一种。