赖江山的博客分享 http://blog.sciencenet.cn/u/laijiangshan 生态、统计与R语言

博文

R包:rdacca.hp(层次分割获取典范分析RDA, CCA和dbRDA单个解释变量的贡献)

已有 2944 次阅读 2020-12-4 22:25 |系统分类:科研笔记

典范分析(RDA,CCAdbRDA)作为研究解释变量矩阵(通常是环境因子)解释响应变量矩阵(通常是物种数据)主要多元统计方法,广泛应用生态学与环境科学多元数据分析当中。在约束排序分析中,我们可以获得全模型(即包含所有环境因子)的解释率(RDA称为R2CCA称为解释率),即响应变量总变量(total variation)能够被解释变量解释的比例。在很多的研究中,不仅要回答总解释率,也想获得每个解释变量(环境因子)所分配的解释率。理论上讲,如果解释变量之间存在共线性,不可能获得各个变量准确的解释率,因为解释变量之间存在共同解释部分,而共同解释部分到底是哪个解释变量解释的实际上从数学上无法辨别。然而,生态数据分析中,环境因子的共线性是一种普遍的现象。因此,给每个环境因子准确的分配解释率是一件很困难的事情。

在很多研究论文中,经常会看到使用典范分析中,不仅给出总的解释率,还给出每个解释变量(环境因子)所分配的解释率,这个分配解释率实际上应该叫做条件效应(Conditional effect,这个词来自于CANOCO软件),然而条件效应并不是该环境因子真正的解释量。获取条件效应(Conditional effect)过程是将所有环境变量作为单独的解释变量进行典范分析,依据置换检验的显著性(p值)对环境因子进行重要性的排位。然后将p值最显著的解释变量作为第一个解释变量,因此第一个解释变量的分配的R2自然就是它的单独R2,接下来按照能让模型增加校正R2的量值得大小依次加入解释变量做排序分析,每运行一次所获得校正R2减去前一次模型的校正R2,就是当次新加入环境因子的Conditional effect。这样每个环境因子的条件效应总和刚好等于全模型的R2。很多研究把每个环境因子Conditional effect当中每个环境因子单独R2, 是由于CANOCO软件中会直接给Conditional effect(图1),这个总和也刚好等于全模型的R2,让很多用户误以为是每个解释变量所获得的R2。这个用法显然是并不准确,因为如果是这样,越显著的因子所获得的解释率将占极大的优势,完全没有考虑共线性的作用。

1  CANOCO软件中变量筛选过程给出的每个解释变量的simple effectconditional effect


目前已经有的R程序包hier.partHierarchical Partitioning(层次分割,也就是平均分割共同解释部分的办法)理论分解广义线性模型GLM(包括普通线性回归)每个解释变量的R2(对于非正态分布的GLM可能是似然值或卡方值), 这个层次分割法在生态学一元数据分析中使用比较多,但这个包不能用于多元统计的典范分析。我和加拿大Concordia大学Pedro Peres-Neto教授一起编写R程序包rdacca.hp也采用层次分割理论来分解典范分析每个解释变量的解释率,目前已经被给R的官网CRAN接纳,已经能够正常安装引用。欢迎大家使用!

Hierarchical Partitioning分割的理论可以参考文献:

Chevan, A. and Sutherland, M. 1991. Hierarchical Partitioning. The American Statistician 45:90~96

使用rdacca.hp包可以设定如下引用:

Jiangshan Lai,Pedro Peres-neto (2020). rdacca.hp: Hierarchical Partitioning for Canonical Analysis. R package version 0.1.0. https://CRAN.R-project.org/package=rdacca.hp

 

rdacca.hp包简单说明

#请大家从运行如下命令就可以从CRAN安装rdacca.ph程序包:

install.packages("rdacca.hp")

#也可以从github安装rdacca.ph程序包:

library(devtools)

install_github('laijiangshan/rdacca.hp')

 

主函数rdacca.hp的参数解释如下:

rdacca.hp (Y,X, method="RDA",type="adjR2", trace=F)

Y是响应变量矩阵,如果method=”dbRDA"Y必须是距离矩阵(dist)。

X是解释变量矩阵,目前已经不限制解释变量的个数。这是我们采用平均Commonality的方法。计算的效率大大提高。

method是分析的类型,默认是RDA(当Y为单一向量时候,简化为普通的线性回归),另外选项是CCAdbRDA,

typeR2的类型,默认是校正R2,一般情况下典范分析都是使用校正R2

trace 是逻辑值,=T显示各个变量之间的共同解释部分Commonality分析的列表,默认是不显示=F

 

输出的结果是含4个元素列表(list),第一个元素(Method_Type)是分析类型和R2的类型,第二个元素(R.squared)是是全模型的R2(解释率),第三个元素(Commonality)是Commonality分析的列表,也就是平均分配的依据,第四个元素(Var.part)是每个解释变量所分配的R2和比例,Var.part是我们的核心结果,其加和为全模型的R2

 

提示:目前是试用版本,请广大使用者试用并提供建议,有建议请发邮件到lai@ibcas.ac.cn或加我QQ185756911




http://blog.sciencenet.cn/blog-267448-1261173.html

上一篇:reshape包的melt函数将宽数据变为长数据的函数
下一篇:群落Whittaker指数的R实现

0

该博文允许注册用户评论 请点击登录 评论 (5 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-4-15 02:28

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部