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

博文

R包:rdacca.hp(层次分割获取RDA和CCA单解释变量的贡献

已有 864 次阅读 2019-10-7 19:48 |系统分类:科研笔记

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

在很多研究论文中,经常会看到使用约束排序分析中,不仅给出总的解释率,还给出每个解释变量(环境因子)所分配的解释率,这个分配解释率实际上应该叫做条件效应(Conditional effect),然而条件效应并不是该环境因子真正的解释量。条件效应(Conditional effect)过程是将所有环境变量作为解释变量进行约束排序分析,依据置换检验的显著性(p值或F值)对环境因子进行重要性的排位,然后按重要性依次加入解释变量做排序分析,每运行一次所获得解释率减去前一次运行的解释率,就是当次新加入环境因子的Conditional effect。很多研究把每个环境因子Conditional effect当中每个环境因子单独解释率,显然是并不准确,因为如果是这样,越显著的因子所获得的解释率将占极大的优势,完全没有考虑共线性的作用。这个效应可以打个简单的比方,10个人排队依次吃一块蛋糕,跟10个人同时一块吃蛋糕,前后两种情况每个人获得的份额是不一样的。

   目前已经有的R程序包hier.partHierarchical Partitioning(层次分割,也就是类似上面所说的让所有人一起吃蛋糕的做法)理论分解广义线性模型GLM(包括普通线性回归)每个解释变量的R2(对于非正态分布的GLM可能是似然值或卡方值), 但这个包没有包括RDACCA方法,而且分割后的R2也没有显著性检验。本程序包rdacca.hp也采用层次分割理论来分解RDACCA每个解释变量的解释率,并用置换检验来获得每个解释变量的解释率的p值。值得一提的是,当响应变量为一个向量情况下,RDA将简化为普通线性回归,依次本程序包函数也适用于普通线性回归的R2分解。

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

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

 

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

library(devtools)

install_github('laijiangshan/rdacca.hp')

 

 

主函数rdacca.hp解释如下:

rdacca.hp (Y,X,pieplot = "tv",type="RDA")

Y是响应变量矩阵,如果输入的一个向量,且type="RDA",则为普通的线性回归。

X是解释变量矩阵,目前不能超过13个变量,因为超过13个,组合太多算不过来。变量超过9个,可能会有四舍五入的误差。

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

pieplot = "tv"pieplot = "tev",选择tv是展示每个解释变量占总变化量(total variation)的比例的饼图(图1),选择tev是展示每个解释变量占总被解释变化量(total explained variation)的比例的饼图(图2)。

输出的结果是含4个元素列表,第一个元素(R2)是全模型的未校正R2(解释率),第二个元素(hp.R2)是每个解释变量所分配的未校正R2,第三个元素(adj.R2)是全模型的校正R2(解释率),第四个元素(hp.adjR2)是每个解释变量所分配的校正R2.

置换检验函数permu.hp解释说明:

permu.hp (Y,X, type="RDA", permutations=999)

Y是响应变量矩阵,如果输入的一个向量,且type="RDA",则为普通的线性回归。

X是解释变量矩阵,目前不能超过13个变量,因为超过13个,组合太多算不过来。变量超过9个,可能会有四舍五入的误差。

type是分析的类型,默认是RDA(当Y为单一向量时候,简化为普通的线性回归)。

permutations: 置换检验的次数,默认=999,此时最小p值为0.001,由于每次置换后都得重新算一次层次分割的组合,如果解释变量比较多,此函数运行时候需要费点时间。

输出的结果是含2个元素列表,第一个元素(R2)是每个解释变量所分配的未校正R2p值数据框,第二个元素(adjR2)是每个解释变量所分配的校正R2p值数据框




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

上一篇:原创R包:rdaenvpart(层次分割获取RDA和CCA单解释变量的贡献)
下一篇:获取地理信息数据的函数getData {raster}

0

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

数据加载中...

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2019-11-15 18:09

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部