在上节课数量生态学笔记||Q模式中我们了解了比较对象对的Q模式,换句话说我们用了各式各样的距离。请大家结合自己的学习学习为什么对象对之间要用距离而不是相关呢?
今天我们来学习一下生态学中比较多变量对的关联测度,也就是相关类型的系数。
R模式:物种多度数据
- 相关系数
- 卡方距离
# 加载所需程序包
library(ade4)
library(vegan) # 应该先加载ade4再加载vegan,以避免一些冲突
library(gclus)
library(cluster)
library(FD)
library(gclus)
source("coldiss.R") #如果函数文件没有在当前工作目录下,需要指定文件路径
# 使用coldiss()函数产生的彩图(在一些数据分析文献中也称作热图或格状图)
# 导入CSV格式的数据
rm(list = ls())
setwd("D:\\Users\\Administrator\\Desktop\\RStudio\\数量生态学\\DATA")
spe <- read.csv("DoubsSpe.csv", row.names=1)
env <- read.csv("DoubsEnv.csv", row.names=1)
spa <- read.csv("DoubsSpa.csv", row.names=1)
# 剔除无物种数据的样方8
spe <- spe[-8,]
env <- env[-8,]
spa <- spa[-8,]
# 物种多度矩阵的转置矩阵
spe.t <- t(spe)
# 先卡方转化后计算欧氏距离
spe.t.chi <- decostand(spe.t, "chi.square")
spe.t.D16 <- dist(spe.t.chi)
coldiss(spe.t.D16, diag=TRUE)
#在右边的图中,你能否分辨出物种组?
# 鱼类有-无数据的Jaccard指数
spe.t.S7 <- vegdist(spe.t, "jaccard", binary=TRUE)
coldiss(spe.t.S7, diag=TRUE)
#将右边的图与之前获得的卡方距离图进行比较,物种组是否一致?
R 模式: 物种有无数据
- Jaccard
- Sorensen
- Ochiai
# 鱼类有-无数据的Jaccard指数
spe.t.S7 <- vegdist(spe.t, "jaccard", binary=TRUE)
coldiss(spe.t.S7, diag=TRUE)
#将右边的图与之前获得的卡方距离图进行比较,物种组是否一致?
R 模式: 定量和序数数据(除物种多度之外的数据)
- 线性纲量相同:协方差、Person
- 线性纲量不同:Person
- 序数变量或单调非线性:Spearman、Kendall相关
# 环境变量之间的Pearson线性相关系数r
env.pearson <- cor(env) # 默认 method = "pearson"
round(env.pearson, 2)
das alt pen deb pH dur pho nit amm oxy dbo
das 1.00 -0.94 -0.39 0.95 0.02 0.73 0.47 0.74 0.41 -0.57 0.43
alt -0.94 1.00 0.46 -0.86 -0.05 -0.79 -0.44 -0.75 -0.38 0.42 -0.38
pen -0.39 0.46 1.00 -0.36 -0.22 -0.53 -0.20 -0.31 -0.17 0.31 -0.17
deb 0.95 -0.86 -0.36 1.00 0.03 0.74 0.38 0.59 0.29 -0.42 0.30
pH 0.02 -0.05 -0.22 0.03 1.00 0.08 -0.08 -0.04 -0.12 0.19 -0.16
dur 0.73 -0.79 -0.53 0.74 0.08 1.00 0.37 0.53 0.30 -0.37 0.34
pho 0.47 -0.44 -0.20 0.38 -0.08 0.37 1.00 0.80 0.97 -0.76 0.91
nit 0.74 -0.75 -0.31 0.59 -0.04 0.53 0.80 1.00 0.80 -0.69 0.68
amm 0.41 -0.38 -0.17 0.29 -0.12 0.30 0.97 0.80 1.00 -0.75 0.90
oxy -0.57 0.42 0.31 -0.42 0.19 -0.37 -0.76 -0.69 -0.75 1.00 -0.84
dbo 0.43 -0.38 -0.17 0.30 -0.16 0.34 0.91 0.68 0.90 -0.84 1.00
# 在绘图之前重新排位变量
env.o <- order.single(env.pearson)
# pairs:一个同时生成双变量之间散点图和相关系数图的函数
# 图中上半部分显示两个变量之间相关系数(带显著水平)
source("panelutils.R") # 如果脚本不在当前工作目录下,需要给出访问路径
op <- par(mfrow=c(1,1), pty="s")
pairs(env[,env.o], lower.panel=panel.smooth, upper.panel=panel.cor,
diag.panel=panel.hist, main="Pearson 相关矩阵")
par(op)
#请辨认与变量"das"相关的环境变量。这些图能够告诉你什么信息呢?
# 环境变量之间的Kendall秩相关
env.ken <- cor(env, method="kendall")
env.o <- order.single(env.ken)
op <- par(mfrow=c(1,1), pty="s")
pairs(env[,env.o], lower.panel=panel.smooth, upper.panel=panel.cor,
method="kendall", diag.panel=panel.hist, main="Kendall Correlation Matrix")
par(op)
#通过这些双变量关系图,你更倾向于用Kendall秩相关还是Pearson线性相关?