探索性数据分析

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 函数 在图中添加文本