探索性数据分析
2020-10-16
2020-10-16
探索性数据分析
1 物种多样性概述
生物多样性是指在一定时间和一定地区所有生物(动物、植物、微生物)物种及其遗传变异和生态系统的复杂性总称。生物多样性包括遗传多样性、物种多样性和生态系统多样性。物种多样性包括两个方面,其一是指一定区域内的物种丰富程度,可称为区域物种多样性;
在一定区域下,物种数量分布维度较多,需要对多物种数据进行统一分析。以下从对物种数据进行处理和探索性分析。对区域的物种多样性进行衡量,流程如下:
由上图的物种多样性流程,先对数据进行导入,将物种数据中的缺失值数据进行剔除,再统一物种数据的指标量纲,对多物种数据进行刻画描述,最后计算物种多样性指标和物种丰富度。
1.1 物种多样性分析
1.2 物种数据的导入
对物种数据进行获取,将物种数据在环境和空间对应的数据进行读取。如下:
setwd('C:\\Users\\dell\\Desktop\\北大R语言\\王世拓_汇总_20191029\\王世拓_探索性数据分析_20190624\\原始资料和数据') # 设置数据的存放路径
spe <- read.csv("DoubsSpe.csv", row.names=1) # 读取物种的种类数据
str(spe)
## 'data.frame': 30 obs. of 27 variables:
## $ CHA: int 0 0 0 0 0 0 0 0 0 0 ...
## $ TRU: int 3 5 5 4 2 3 5 0 0 1 ...
## $ VAI: int 0 4 5 5 3 4 4 0 1 4 ...
## $ LOC: int 0 3 5 5 2 5 5 0 3 4 ...
## $ OMB: int 0 0 0 0 0 0 0 0 0 0 ...
## $ BLA: int 0 0 0 0 0 0 0 0 0 0 ...
## $ HOT: int 0 0 0 0 0 0 0 0 0 0 ...
## $ TOX: int 0 0 0 0 0 0 0 0 0 0 ...
## $ VAN: int 0 0 0 0 5 1 1 0 0 2 ...
## $ CHE: int 0 0 0 1 2 2 1 0 5 2 ...
## $ BAR: int 0 0 0 0 0 0 0 0 0 0 ...
## $ SPI: int 0 0 0 0 0 0 0 0 0 0 ...
## $ GOU: int 0 0 0 1 2 1 0 0 0 1 ...
## $ BRO: int 0 0 1 2 4 1 0 0 0 0 ...
## $ PER: int 0 0 0 2 4 1 0 0 0 0 ...
## $ BOU: int 0 0 0 0 0 0 0 0 0 0 ...
## $ PSO: int 0 0 0 0 0 0 0 0 0 0 ...
## $ ROT: int 0 0 0 0 2 0 0 0 0 0 ...
## $ CAR: int 0 0 0 0 0 0 0 0 0 0 ...
## $ TAN: int 0 0 0 1 3 2 0 0 1 0 ...
## $ BCO: int 0 0 0 0 0 0 0 0 0 0 ...
## $ PCH: int 0 0 0 0 0 0 0 0 0 0 ...
## $ GRE: int 0 0 0 0 0 0 0 0 0 0 ...
## $ GAR: int 0 0 0 0 5 1 0 0 4 0 ...
## $ BBO: int 0 0 0 0 0 0 0 0 0 0 ...
## $ ABL: int 0 0 0 0 0 0 0 0 0 0 ...
## $ ANG: int 0 0 0 0 0 0 0 0 0 0 ...
env <- read.csv("DoubsEnv.csv", row.names=1) # 读取物种的环境数据
str(env)
## 'data.frame': 30 obs. of 11 variables:
## $ das: num 0.3 2.2 10.2 18.5 21.5 32.4 36.8 49.1 70.5 99 ...
## $ alt: int 934 932 914 854 849 846 841 792 752 617 ...
## $ pen: num 48 3 3.7 3.2 2.3 3.2 6.6 2.5 1.2 9.9 ...
## $ deb: num 0.84 1 1.8 2.53 2.64 2.86 4 1.3 4.8 10 ...
## $ pH : num 7.9 8 8.3 8 8.1 7.9 8.1 8.1 8 7.7 ...
## $ dur: int 45 40 52 72 84 60 88 94 90 82 ...
## $ pho: num 0.01 0.02 0.05 0.1 0.38 0.2 0.07 0.2 0.3 0.06 ...
## $ nit: num 0.2 0.2 0.22 0.21 0.52 0.15 0.15 0.41 0.82 0.75 ...
## $ amm: num 0 0.1 0.05 0 0.2 0 0 0.12 0.12 0.01 ...
## $ oxy: num 12.2 10.3 10.5 11 8 10.2 11.1 7 7.2 10 ...
## $ dbo: num 2.7 1.9 3.5 1.3 6.2 5.3 2.2 8.1 5.2 4.3 ...
spa <- read.csv("DoubsSpa.csv", row.names=1) # 读取物种的空间位置数据
str(spa)
## 'data.frame': 30 obs. of 2 variables:
## $ x: int 88 94 102 100 106 112 114 110 136 168 ...
## $ y: int 7 14 18 28 39 51 61 76 100 112 ...
通过str函数,可以看到物种的数据的样本数量构成,其中spe数据中共有30个样本,27个变量。而数据中不存在量纲不统一,直接对数据进行展示。
1.3 物种数据的展示
下述对物种的种类数据前6行数据进行输出,输出物种的指标名称有:“CHA” “TRU” “VAI” “LOC” “OMB” “BLA” “HOT” “TOX” “VAN” “CHE” “BAR”“SPI” “GOU” “BRO” “PER” “BOU” “PSO” “ROT” “CAR” “TAN” “BCO” “PCH” “GRE” “GAR” “BBO” “ABL” “ANG”
head(spe) # 只展示前5行和前10列
## CHA TRU VAI LOC OMB BLA HOT TOX VAN CHE BAR SPI GOU BRO PER BOU PSO ROT
## 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 2 0 5 4 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 3 0 5 5 5 0 0 0 0 0 0 0 0 0 1 0 0 0 0
## 4 0 4 5 5 0 0 0 0 0 1 0 0 1 2 2 0 0 0
## 5 0 2 3 2 0 0 0 0 5 2 0 0 2 4 4 0 0 2
## 6 0 3 4 5 0 0 0 0 1 2 0 0 1 1 1 0 0 0
## CAR TAN BCO PCH GRE GAR BBO ABL ANG
## 1 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0 0
## 4 0 1 0 0 0 0 0 0 0
## 5 0 3 0 0 0 5 0 0 0
## 6 0 2 0 0 0 1 0 0 0
colnames(spe) # 输出物种种类的物种名称
## [1] "CHA" "TRU" "VAI" "LOC" "OMB" "BLA" "HOT" "TOX" "VAN" "CHE" "BAR"
## [12] "SPI" "GOU" "BRO" "PER" "BOU" "PSO" "ROT" "CAR" "TAN" "BCO" "PCH"
## [23] "GRE" "GAR" "BBO" "ABL" "ANG"
对物种的种类数据进行描述统计量分析,其中,返回变量和观测的数量,缺失值和唯一值的数目,平均值,分位数,以及数据中五个最大的值和五个最小的值的频次及占比。下述中数据量少,只展示出4个不同类型的值。
describe(spe) #物种描述统计量分析
## spe
##
## 27 Variables 30 Observations
## ---------------------------------------------------------------------------
## CHA
## n missing distinct Info Mean Gmd
## 30 0 4 0.604 0.5 0.8207
##
## Value 0 1 2 3
## Frequency 22 3 3 2
## Proportion 0.733 0.100 0.100 0.067
## ---------------------------------------------------------------------------
## TRU
## n missing distinct Info Mean Gmd
## 30 0 6 0.908 1.9 2.255
##
## Value 0 1 2 3 4 5
## Frequency 13 3 2 4 2 6
## Proportion 0.433 0.100 0.067 0.133 0.067 0.200
## ---------------------------------------------------------------------------
## VAI
## n missing distinct Info Mean Gmd
## 30 0 5 0.938 2.267 2.225
##
## Value 0 1 3 4 5
## Frequency 10 4 4 8 4
## Proportion 0.333 0.133 0.133 0.267 0.133
## ---------------------------------------------------------------------------
## LOC
## n missing distinct Info Mean Gmd
## 30 0 6 0.963 2.433 2.205
##
## Value 0 1 2 3 4 5
## Frequency 6 7 3 3 4 7
## Proportion 0.200 0.233 0.100 0.100 0.133 0.233
## ---------------------------------------------------------------------------
## OMB
## n missing distinct Info Mean Gmd
## 30 0 5 0.604 0.5 0.8391
##
## Value 0 1 2 3 4
## Frequency 22 4 2 1 1
## Proportion 0.733 0.133 0.067 0.033 0.033
## ---------------------------------------------------------------------------
## BLA
## n missing distinct Info Mean Gmd
## 30 0 6 0.605 0.6333 1.074
##
## Value 0 1 2 3 4 5
## Frequency 22 3 2 1 1 1
## Proportion 0.733 0.100 0.067 0.033 0.033 0.033
## ---------------------------------------------------------------------------
## HOT
## n missing distinct Info Mean Gmd
## 30 0 4 0.77 0.6 0.8506
##
## Value 0 1 2 3
## Frequency 18 7 4 1
## Proportion 0.600 0.233 0.133 0.033
## ---------------------------------------------------------------------------
## TOX
## n missing distinct Info Mean Gmd
## 30 0 5 0.741 0.8667 1.283
##
## Value 0 1 2 3 4
## Frequency 19 2 5 2 2
## Proportion 0.633 0.067 0.167 0.067 0.067
## ---------------------------------------------------------------------------
## VAN
## n missing distinct Info Mean Gmd
## 30 0 5 0.917 1.433 1.639
##
## Value 0 1 2 3 5
## Frequency 12 4 7 5 2
## Proportion 0.400 0.133 0.233 0.167 0.067
## ---------------------------------------------------------------------------
## CHE
## n missing distinct Info Mean Gmd
## 30 0 6 0.953 1.867 1.536
##
## Value 0 1 2 3 4 5
## Frequency 5 8 8 5 3 1
## Proportion 0.167 0.267 0.267 0.167 0.100 0.033
## ---------------------------------------------------------------------------
## BAR
## n missing distinct Info Mean Gmd
## 30 0 6 0.843 1.433 1.874
##
## Value 0 1 2 3 4 5
## Frequency 16 1 4 4 3 2
## Proportion 0.533 0.033 0.133 0.133 0.100 0.067
## ---------------------------------------------------------------------------
## SPI
## n missing distinct Info Mean Gmd
## 30 0 6 0.779 0.9 1.349
##
## Value 0 1 2 3 4 5
## Frequency 18 5 2 3 1 1
## Proportion 0.600 0.167 0.067 0.100 0.033 0.033
## ---------------------------------------------------------------------------
## GOU
## n missing distinct Info Mean Gmd
## 30 0 6 0.947 1.833 2.053
##
## Value 0 1 2 3 4 5
## Frequency 10 6 5 1 4 4
## Proportion 0.333 0.200 0.167 0.033 0.133 0.133
## ---------------------------------------------------------------------------
## BRO
## n missing distinct Info Mean Gmd
## 30 0 6 0.915 1.333 1.632
##
## Value 0 1 2 3 4 5
## Frequency 12 8 3 3 3 1
## Proportion 0.400 0.267 0.100 0.100 0.100 0.033
## ---------------------------------------------------------------------------
## PER
## n missing distinct Info Mean Gmd
## 30 0 6 0.868 1.2 1.614
##
## Value 0 1 2 3 4 5
## Frequency 15 5 4 2 3 1
## Proportion 0.500 0.167 0.133 0.067 0.100 0.033
## ---------------------------------------------------------------------------
## BOU
## n missing distinct Info Mean Gmd
## 30 0 6 0.743 1.1 1.625
##
## Value 0 1 2 3 4 5
## Frequency 19 1 3 4 1 2
## Proportion 0.633 0.033 0.100 0.133 0.033 0.067
## ---------------------------------------------------------------------------
## PSO
## n missing distinct Info Mean Gmd
## 30 0 6 0.812 0.9667 1.395
##
## Value 0 1 2 3 4 5
## Frequency 17 5 3 3 1 1
## Proportion 0.567 0.167 0.100 0.100 0.033 0.033
## ---------------------------------------------------------------------------
## ROT
## n missing distinct Info Mean Gmd
## 30 0 4 0.736 0.7 1.051
##
## Value 0 1 2 5
## Frequency 19 4 6 1
## Proportion 0.633 0.133 0.200 0.033
## ---------------------------------------------------------------------------
## CAR
## n missing distinct Info Mean Gmd
## 30 0 6 0.776 0.8333 1.262
##
## Value 0 1 2 3 4 5
## Frequency 18 6 2 2 1 1
## Proportion 0.600 0.200 0.067 0.067 0.033 0.033
## ---------------------------------------------------------------------------
## TAN
## n missing distinct Info Mean Gmd
## 30 0 6 0.908 1.5 1.883
##
## Value 0 1 2 3 4 5
## Frequency 13 6 2 3 4 2
## Proportion 0.433 0.200 0.067 0.100 0.133 0.067
## ---------------------------------------------------------------------------
## BCO
## n missing distinct Info Mean Gmd
## 30 0 6 0.656 0.8667 1.389
##
## Value 0 1 2 3 4 5
## Frequency 21 2 1 3 2 1
## Proportion 0.700 0.067 0.033 0.100 0.067 0.033
## ---------------------------------------------------------------------------
## PCH
## n missing distinct Info Mean Gmd
## 30 0 6 0.549 0.6 1.039
##
## Value 0 1 2 3 4 5
## Frequency 23 2 2 1 1 1
## Proportion 0.767 0.067 0.067 0.033 0.033 0.033
## ---------------------------------------------------------------------------
## GRE
## n missing distinct Info Mean Gmd
## 30 0 6 0.781 1.267 1.871
##
## Value 0 1 2 3 4 5
## Frequency 18 3 2 1 2 4
## Proportion 0.600 0.100 0.067 0.033 0.067 0.133
## ---------------------------------------------------------------------------
## GAR
## n missing distinct Info Mean Gmd
## 30 0 5 0.906 2.1 2.407
##
## Value 0 1 2 4 5
## Frequency 12 4 3 2 9
## Proportion 0.400 0.133 0.100 0.067 0.300
## ---------------------------------------------------------------------------
## BBO
## n missing distinct Info Mean Gmd
## 30 0 6 0.703 1.033 1.611
##
## Value 0 1 2 3 4 5
## Frequency 20 2 2 1 3 2
## Proportion 0.667 0.067 0.067 0.033 0.100 0.067
## ---------------------------------------------------------------------------
## ABL
## n missing distinct Info Mean Gmd
## 30 0 4 0.821 1.9 2.379
##
## Value 0 2 3 5
## Frequency 16 3 2 9
## Proportion 0.533 0.100 0.067 0.300
## ---------------------------------------------------------------------------
## ANG
## n missing distinct Info Mean Gmd
## 30 0 6 0.743 0.9 1.377
##
## Value 0 1 2 3 4 5
## Frequency 19 3 4 1 2 1
## Proportion 0.633 0.100 0.133 0.033 0.067 0.033
## ---------------------------------------------------------------------------
对物种的种类数据spe进行范围查找: 0 到5
range(spe) # 整个多度数据值的范围
## [1] 0 5
对物种的种类数据进行统计0 到5之间的样本数量。
number_type <- table(unlist(spe)) # 计算每种多度值的数量
print(number_type)
##
## 0 1 2 3 4 5
## 435 108 87 62 54 64
对物种的种类数据进行统计0 到5之间的频数展示。
barplot(number_type, las=1, xlab="多度等级", ylab="频度", col=gray(5:0/5)) # 所有种混和在一起的多度分布柱状图
通过barplot图可以看出,多度值为0的数据占比最多,其次是多度值为1的数据,多度值为4的数据占比最少。查看多度数据中0值所占比例,如下:
sum(spe==0) # 多度数据中0值的数量
## [1] 435
sum(spe==0) / (nrow(spe)*ncol(spe)) # 多度数据中0值所占比例
## [1] 0.537037
1.4 样方分布可视化
plot(spa, asp=1, type="n", main="样方位置",
xlab="x坐标 (km)", ylab="y坐标 (km)") # 1.生成空的绘图窗口(横纵坐标轴比例1:1 (参数asp),带标题 ; 2.从spa数据框获取地理坐标x和y
lines(spa, col="light blue") # 加一条连接各个样方点的蓝色线(代表Doubs河)
text(spa, row.names(spa), cex=0.8, col="red") # 添加每个样方的编号
text(70, 10, "上游", cex=1.2, col="red") # 添加文本
text(20, 120, "下游", cex=1.2, col="red") # 添加文本
从图中可以看出,样方在下游分布最多,在上游分布最少。
计算每个物种出现的样方数,按照升序的方式重新排列。
spe.pres <- apply(spe > 0, 2, sum) # 按列进行计数,因此函数apply()第二个参数MARGIN应该设定为2
sort(spe.pres) # 按照升序的方式重新排列结果
## PCH CHA OMB BLA BCO BBO TOX BOU ROT ANG HOT SPI CAR GRE PSO BAR ABL PER
## 7 8 8 8 9 10 11 11 11 11 12 12 12 12 13 14 14 15
## TRU TAN VAN BRO GAR VAI GOU LOC CHE
## 17 17 18 18 18 20 20 24 25
对各物种的频度百分比进行计算。
spe.relf <- 100*spe.pres/nrow(spe) # 计算频度百分比
round(sort(spe.relf), 1) # 设置排列结果为1位小数
## PCH CHA OMB BLA BCO BBO TOX BOU ROT ANG HOT SPI CAR GRE PSO
## 23.3 26.7 26.7 26.7 30.0 33.3 36.7 36.7 36.7 36.7 40.0 40.0 40.0 40.0 43.3
## BAR ABL PER TRU TAN VAN BRO GAR VAI GOU LOC CHE
## 46.7 46.7 50.0 56.7 56.7 60.0 60.0 60.0 66.7 66.7 80.0 83.3
对各物种的出现次数和占比进行计算如下
par(mfrow=c(1,2)) # 将绘图窗口垂直一分为二
hist(spe.pres, main="物种出现数", right=FALSE, las=1,
xlab="出现数", ylab="物种数量",
breaks=seq(0,30,by=5), col="bisque") # 绘柱状图
hist(spe.relf, main="物种相对频度", right=FALSE, las=1,
xlab="出现率(%)", ylab="物种数量",
breaks=seq(0, 100, by=10), col="bisque") # 绘柱状图
从物种出现数图中可以看出,大部分物种的出现次数在10-15次,其次是15-20次,出现次数为0-5的物种没有。
从物种相对频度图中可以看出,出现率40%-50%的物种数量最多,达到7种,其次是出现率30%-40%的物种数量是6种,出现率0%-20%以及出现率70%-80%的物种数量为0。
1.5 样方比较:物种丰富度
sit.pres <- apply(spe > 0, 1, sum) # 以行汇总,apply()函数第二个参数MARGIN应该设定为1
sort(sit.pres) # 按照升序的方式重新排列结果
## 8 1 2 23 3 7 9 10 11 12 13 4 24 25 6 14 5 15 16 26 30 17 20 22 27
## 0 1 3 3 4 5 5 6 6 6 6 8 8 8 10 10 11 11 17 21 21 22 22 22 22
## 28 18 19 21 29
## 22 23 23 23 26
par(mfrow=c(1,2)) #将绘图窗口垂直一分为二
plot(sit.pres,type="s", las=1, col="gray",
main="物种丰富度-上下游的梯度",
xlab="样方沿着河流的位置", ylab="物种丰富度") # 绘制样方沿着河流的分布位置和所含物种丰富度
text(sit.pres, row.names(spe), cex=.8, col="red")
plot(spa, asp=1, main="物种丰富度地图", pch=21, col="white",
bg="brown", cex=5*sit.pres/max(sit.pres), xlab="x坐标 (km)",
ylab="y坐标 (km)") # 使用地理坐标绘制气泡地图
lines(spa, col="light blue")
从图中可以看出,上游物种丰富度最低,上游及中游物种丰富度最高。
1.6 计算生物多样性指数
library(vegan) # 载入所需要的vegan程序包(如果未载入,需要执行这一步)
## Loading required package: permute
## This is vegan 2.5-4
N0 <- rowSums(spe > 0) # 物种丰富度
H <- diversity(spe) # Shannon熵指数
N1 <- exp(H) # Shannon 多样性指数
N2 <- diversity(spe, "inv") # Simpson多样性指数
J <- H/log(N0) # Pielou 均匀度
E1 <- N1/N0 # Shannon均匀度 (Hill比率)
E2 <- N2/N0 # Simpson均匀度 (Hill比率)
div <- data.frame(N0, H, N1, N2, E1, E2, J)
div
## N0 H N1 N2 E1 E2 J
## 1 1 0.000000 1.000000 1.000000 1.0000000 1.0000000 NaN
## 2 3 1.077556 2.937493 2.880000 0.9791642 0.9600000 0.9808340
## 3 4 1.263741 3.538634 3.368421 0.8846584 0.8421053 0.9115962
## 4 8 1.882039 6.566883 5.727273 0.8208604 0.7159091 0.9050696
## 5 11 2.329070 10.268387 9.633333 0.9334897 0.8757576 0.9712976
## 6 10 2.108294 8.234184 7.000000 0.8234184 0.7000000 0.9156205
## 7 5 1.420116 4.137602 3.764706 0.8275204 0.7529412 0.8823680
## 8 0 0.000000 1.000000 Inf Inf Inf 0.0000000
## 9 5 1.432757 4.190236 3.769231 0.8380472 0.7538462 0.8902220
## 10 6 1.648847 5.200980 4.666667 0.8668300 0.7777778 0.9202391
## 11 6 1.594167 4.924224 4.172414 0.8207040 0.6954023 0.8897214
## 12 6 1.673142 5.328886 4.909091 0.8881476 0.8181818 0.9337984
## 13 6 1.705013 5.501456 5.084507 0.9169093 0.8474178 0.9515857
## 14 10 2.125904 8.380472 7.538462 0.8380472 0.7538462 0.9232685
## 15 11 2.322898 10.205206 9.637168 0.9277460 0.8761062 0.9687237
## 16 17 2.643290 14.059376 12.121212 0.8270221 0.7130125 0.9329652
## 17 22 2.941232 18.939159 16.689655 0.8608709 0.7586207 0.9515339
## 18 23 3.023328 20.559609 18.765957 0.8938961 0.8159112 0.9642271
## 19 23 2.962449 19.345298 16.531250 0.8410999 0.7187500 0.9448110
## 20 22 2.992018 19.925862 18.232558 0.9057210 0.8287526 0.9679642
## 21 23 3.038689 20.877861 19.220000 0.9077331 0.8356522 0.9691261
## 22 22 3.015832 20.406072 19.343284 0.9275487 0.8792402 0.9756684
## 23 3 1.039721 2.828427 2.666667 0.9428090 0.8888889 0.9463946
## 24 8 1.894312 6.647973 5.487805 0.8309966 0.6859756 0.9109715
## 25 8 1.972247 7.186807 6.368421 0.8983509 0.7960526 0.9484503
## 26 21 2.904931 18.263983 16.078261 0.8697135 0.7656315 0.9541500
## 27 22 2.952539 19.154524 17.484581 0.8706602 0.7947537 0.9551920
## 28 22 2.986392 19.814063 18.560606 0.9006392 0.8436639 0.9661439
## 29 26 3.144175 23.200519 21.687679 0.8923277 0.8341415 0.9650342
## 30 21 2.996777 20.020908 19.461916 0.9533766 0.9267579 0.9843176
2 案例:鱼类物种多样性分析
2.1 某些鱼类的分布地图
par(mfrow=c(2,2)) # 将绘图窗口分割为4个绘图区域,每行两个
plot(spa, asp=1, col="brown", cex=spe$TRU, main="褐鳟",
xlab="x坐标 (km)", ylab="y坐标 (km)")
lines(spa, col="light blue")
plot(spa, asp=1, col="brown", cex=spe$OMB, main="茴鱼",
xlab="x坐标 (km)", ylab="y坐标 (km)")
lines(spa, col="light blue")
plot(spa, asp=1, col="brown", cex=spe$BAR, main="鲃鱼",
xlab="x坐标 (km)", ylab="y坐标 (km)")
lines(spa, col="light blue")
plot(spa, asp=1, col="brown", cex=spe$BCO, main="欧鳊",
xlab="x坐标 (km)", ylab="y坐标 (km)")
lines(spa, col="light blue")
从图中可以看出,不同的鱼类在空间分布存在差异。褐鳟分布在河流的上游及中游,茴鱼分布在河流的中游,鲃鱼和欧鳊分布在河流的中游及下游。
2.2 数据的标准化
spe[1:5, 2:4] # 显示原始数据某一部分(多度数据)
## TRU VAI LOC
## 1 3 0 0
## 2 5 4 3
## 3 5 5 5
## 4 4 5 5
## 5 2 3 2
spe.pa <- decostand(spe, method="pa") # 将多度数据转化为有-无(1-0)数据
spe.pa[1:5, 2:4]
## TRU VAI LOC
## 1 1 0 0
## 2 1 1 1
## 3 1 1 1
## 4 1 1 1
## 5 1 1 1
#物种水平:两个方法;
# 通过每个数值除以该物种最大值标准化多度
# 注意:这里参数MARGIN=2(默认值)
spe.scal <- decostand(spe, "max")
spe.scal[1:5,2:4]
## TRU VAI LOC
## 1 0.6 0.0 0.0
## 2 1.0 0.8 0.6
## 3 1.0 1.0 1.0
## 4 0.8 1.0 1.0
## 5 0.4 0.6 0.4
apply(spe.scal, 2, max) # 计算每列最大值
## CHA TRU VAI LOC OMB BLA HOT TOX VAN CHE BAR SPI GOU BRO PER BOU PSO ROT
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## CAR TAN BCO PCH GRE GAR BBO ABL ANG
## 1 1 1 1 1 1 1 1 1
# 通过每个数值除以该物种总和去标准化多度(每个物种的相对多度)
# 注意:这里需要设定参数MARGIN=2
spe.relsp <- decostand(spe, "total", MARGIN=2)
spe.relsp[1:5,2:4]
## TRU VAI LOC
## 1 0.05263158 0.00000000 0.00000000
## 2 0.08771930 0.05882353 0.04109589
## 3 0.08771930 0.07352941 0.06849315
## 4 0.07017544 0.07352941 0.06849315
## 5 0.03508772 0.04411765 0.02739726
apply(spe.relsp, 2, sum) # 计算标准化后数据每列总和
## CHA TRU VAI LOC OMB BLA HOT TOX VAN CHE BAR SPI GOU BRO PER BOU PSO ROT
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## CAR TAN BCO PCH GRE GAR BBO ABL ANG
## 1 1 1 1 1 1 1 1 1
# 样方水平:3种方法;有-无数据或多度数据
# 通过每个数值除以该样方总和标准化多度(每个样方相对多度或相对频度)
# 注意:这里参数MARGIN=1(默认值)
spe.rel <- decostand(spe, "total") # 默认MARGIN=1
spe.rel[1:5,2:4]
## TRU VAI LOC
## 1 1.00000000 0.00000000 0.00000000
## 2 0.41666667 0.33333333 0.25000000
## 3 0.31250000 0.31250000 0.31250000
## 4 0.19047619 0.23809524 0.23809524
## 5 0.05882353 0.08823529 0.05882353
# 计算标准化后数据每列总和以检验标准化的过程是否正确
apply(spe.rel, 1, sum)
## 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
## 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 26 27 28 29 30
## 1 1 1 1 1
# 赋予每个行向量长度(范数)为1(即平方和为1)
spe.norm <- decostand(spe, "normalize")
spe.norm[1:5,2:4]
## TRU VAI LOC
## 1 1.0000000 0.0000000 0.0000000
## 2 0.7071068 0.5656854 0.4242641
## 3 0.5735393 0.5735393 0.5735393
## 4 0.4558423 0.5698029 0.5698029
## 5 0.1825742 0.2738613 0.1825742
# 验证每个行向量的范数
norm <- function(x) sqrt(x%*%x)
apply(spe.norm, 1, norm)
## 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
## 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 26 27 28 29 30
## 1 1 1 1 1
# 计算相对频度(样方层面),然后取平方根
spe.hel <- decostand(spe, "hellinger")
spe.hel[1:5,2:4]
## TRU VAI LOC
## 1 1.0000000 0.0000000 0.0000000
## 2 0.6454972 0.5773503 0.5000000
## 3 0.5590170 0.5590170 0.5590170
## 4 0.4364358 0.4879500 0.4879500
## 5 0.2425356 0.2970443 0.2425356
apply(spe.hel, 1, norm) # 计算标准化后数据每行向量的范数
## 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
## 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 26 27 28 29 30
## 1 1 1 1 1
# 物种和样方同时标准化
# 卡方转化:除以行和及列和的平方根
spe.chi <- decostand(spe, "chi.square")
spe.chi[1:5,2:4]
## TRU VAI LOC
## 1 4.1969078 0.0000000 0.0000000
## 2 1.7487116 1.2808290 0.9271402
## 3 1.3115337 1.2007772 1.1589253
## 4 0.7994110 0.9148778 0.8829907
## 5 0.2468769 0.3390430 0.2181506
# 请查看没有物种的样方8转化后将会怎样
spe.chi[7:9,]
## CHA TRU VAI LOC OMB BLA HOT TOX VAN CHE BAR
## 7 0 1.311534 0.9606217 1.1589253 0 0 0 0 0.302004 0.2646384 0
## 8 0 0.000000 0.0000000 0.0000000 0 0 0 0 0.000000 0.0000000 0
## 9 0 0.000000 0.2744634 0.7946916 0 0 0 0 0.000000 1.5122194 0
## SPI GOU BRO PER BOU PSO ROT CAR TAN BCO PCH GRE GAR BBO ABL
## 7 0 0 0 0 0 0 0 0 0.0000000 0 0 0 0.000000 0 0
## 8 0 0 0 0 0 0 0 0 0.0000000 0 0 0 0.000000 0 0
## 9 0 0 0 0 0 0 0 0 0.3373903 0 0 0 1.140587 0 0
## ANG
## 7 0
## 8 0
## 9 0
# Wisconsin标准化:多度数据首先除以该物种最大值后再除
#以该样方总和
spe.wis <- wisconsin(spe)
spe.wis[1:5,2:4]
## TRU VAI LOC
## 1 1.00000000 0.00000000 0.00000000
## 2 0.41666667 0.33333333 0.25000000
## 3 0.31250000 0.31250000 0.31250000
## 4 0.19047619 0.23809524 0.23809524
## 5 0.05882353 0.08823529 0.05882353
2.3 部分环境变量图
#部分环境变量的气泡地图
par(mfrow=c(2,2))
plot(spa, asp=1, main="海拔", pch=21, col="white", bg="red",
cex=5*env$alt/max(env$alt), xlab="x", ylab="y")
lines(spa, col="light blue")
plot(spa, asp=1, main="流量", pch=21, col="white", bg="blue",
cex=5*env$deb/max(env$deb), xlab="x", ylab="y")
lines(spa, col="light blue")
plot(spa, asp=1, main="氧含量", pch=21, col="white", bg="green3",
cex=5*env$oxy/max(env$oxy), xlab="x", ylab="y")
lines(spa, col="light blue")
plot(spa, asp=1, main="硝酸盐浓度", pch=21, col="white", bg="brown",
cex=5*env$nit/max(env$nit), xlab="x", ylab="y")
lines(spa, col="light blue")
#线条图
par(mfrow=c(2,2))
plot(env$das, env$alt, type="l", xlab="离源头距离 (km)",
ylab="海拔 (m)", col="red", main="海拔")
plot(env$das, env$deb, type="l", xlab="离源头距离 (km)",
ylab="流量 (m3/s)", col="blue", main="流量")
plot(env$das, env$oxy, type="l", xlab="离源头距离 (km)",
ylab="氧含量 (mg/L)", col="green3", main="氧含量")
plot(env$das, env$nit, type="l", xlab="离源头距离 (km)",
ylab="硝酸盐浓度 (mg/L)", col="brown", main="硝酸盐浓度")
从部分环境变量的气泡地图和线条图中可以看出,环境变量在空间分布存在差异。结合图——某些鱼类的分布地图可以得出一个猜想,即环境变量对不同的鱼类在空间分布有影响,后续可以通过相关性分析来得出准确的结论。
# 所有变量对之间的二维散点图
source("C:\\Users\\dell\\Desktop\\北大R语言\\王世拓_汇总_20191029\\王世拓_探索性数据分析_20190624\\原始资料和数据\\panelutils.R") # 载入自编的函数R脚本 ; panelutils.R脚本文件必须与当前R工作空间在同一文件夹下
pairs(env, panel=panel.smooth, diag.panel=panel.hist,
main="双变量散点图(带频度分布图和平滑曲线)") # 带频度分布的柱状图和光滑拟合曲线的双变量散点图
3 本章汇总
参数 | 类别 | 功能 |
---|---|---|
Hmisc | 函数包 | 加载Hmisc包 |
vegan | 函数包 | 加载vegan包 |
setwd | 函数 | 改变工作目录 |
par | 函数 | 设置绘图窗口 |
barplot | 函数 | 绘制柱状图 |
lines | 函数 | 在图中添加线条 |
hist | 函数 | 绘制直方图 |
text | 函数 | 在图中添加文本 |