在生态学中使用什么标准将变量分为解释变量和排序方法的响应?


9

我有在人群中相互作用的不同变量。基本上,我一直在盘点千足虫,并测量其他一些地形值,例如:

  • 标本的种类和数量
  • 动物所在的不同环境
  • pH值
  • 有机物百分比
  • 磷,钾,镁,钙,锰,铁,锌,铜的含量
  • Ca + Mg / K关系

基本上,我想使用PCA来确定哪些变量驱动样本的可变性并使森林(环境)有所不同。我应该为“变量”使用哪些变量,为“个人”使用哪些变量?


我认为您可能对PCA感到困惑。所有变量(当然)只能是“变量”。您可能在不同的位置(或不同的时间)进行了许多测量;那么这些位置(或时间)就是您的“个人”,或者说是“样本”。
amoeba 2014年

另外,我不禁要问:您的个人资料说您是一家创业公司的创始人;这是一家与千足虫一起工作的创业公司吗?哇!
amoeba 2014年

实际上,@ amoeba是我的妻子,我擅长微积分,但统计工作却不那么出色。她要我问。
莱昂纳多·

1
惠普到目前为止,这真的是一个统计问题吗?尽管在统计术语上似乎有些混乱,但在某种程度上很难解码,但如果将其分类,建议是使用科学判断。
尼克·考克斯

2
这可能是一个统计问题,只是在不同的上下文和不同的术语下比在统计中更为典型。我相信您正在从生态学中询问排序方法。该网站可能对您有帮助。我们的活跃会员相对而言很少有专家,但是如果我们引起他的关注,@ GavinSimpson也许可以为您提供帮助。
gung-恢复莫妮卡

Answers:


19

正如@amoeba在评论中提到的那样,PCA仅查看一组数据,它将向您显示这些变量的主要(线性)变化模式,这些变量之间的相关性或协方差以及样本之间的关系(各行) )。

通常使用物种数据集和一组潜在的解释变量来进行约束排序。在PCA中,主要成分,即PCA双线图上的轴,是所有变量的最佳线性组合。如果您在具有pH变量(总碳)的土壤化学数据集上运行此方法,则可能会发现第一个成分是Ca2+

0.5×pH+1.4×Ca2++0.1×TotalCarbon

第二部分

2.7×pH+0.3×Ca2+5.6×TotalCarbon

这些分量可以从测量的变量中自由选择,选择的是那些依次解释数据集中最大变化量的分量,并且每个线性组合彼此正交(不相关)。

在受约束的排序中,我们有两个数据集,但我们不能随意选择所需的第一个数据集(上面的土壤化学数据)的任何线性组合。相反,我们必须在第二个数据集中选择变量的线性组合,以最好地解释第一个数据的变化。同样,在PCA的情况下,一个数据集是响应矩阵,并且没有预测变量(您可以将响应视为预测自身)。在受限情况下,我们有一个响应数据集,我们希望使用一组解释变量来进行解释。

尽管您没有解释哪个变量是响应,但是通常人们希望使用环境解释变量来解释那些物种的丰度或组成(即响应)的变化。

受限制的PCA版本在生态界被称为冗余分析(RDA)。假设该物种具有基本的线性响应模型,该模型要么不合适,要么仅当物种响应的梯度短时才适用。

PCA的替代方法是称为对应分析(CA)的事物。这是不受限制的,但它确实具有潜在的单峰响应模型,就物种如何沿较长的梯度响应而言,该模型更为现实。还要注意,CA建模相对丰度或组成,PCA建模原始丰度。

有一个受约束的CA版本,称为受约束规范对应分析(CCA)-不要与称为规范相关分析的更正式的统计模型相混淆。

在RDA和CCA中,目的都是将物种丰度或组成的变化建模为解释变量的一系列线性组合。

从描述中听起来,您的妻子似乎想根据其他测量变量来解释千足虫物种组成(或丰度)的变化。

一些警告的话;RDA和CCA只是多元回归;CCA只是加权多元回归。您所学到的有关回归的任何知识都适用,并且还有其他一些陷阱:

  • 随着您增加解释变量的数量,约束实际上会越来越少,并且您实际上并没有提取出能够最佳解释物种组成的成分/轴,并且
  • 使用CCA,随着增加解释因素的数量,您可能会在CCA图中将曲线的伪像引入点的配置中。
  • 与较正式的统计方法相比,RDA和CCA的基础理论欠发达。我们只能使用逐步选择来合理地选择保留哪些解释变量(由于我们不喜欢将其用作回归选择方法的所有原因,因此这是不理想的),我们必须使用置换测试来做到这一点。

所以我的建议与回归相同。提前考虑一下您的假设,并考虑反映这些假设的变量。不要只是将所有解释性变量混入其中。

不受约束的命令

PCA

我将展示一个示例,该示例使用适用于R 的素食主义者软件包比较PCA,CA和CCA,该软件包旨在帮助满足以下排序方法:

library("vegan")                        # load the package
data(varespec)                          # load example data

## PCA
pcfit <- rda(varespec)
## could add `scale = TRUE` if variables in different units
pcfit

> pcfit
Call: rda(X = varespec)

              Inertia Rank
Total            1826     
Unconstrained    1826   23
Inertia is variance 

Eigenvalues for unconstrained axes:
  PC1   PC2   PC3   PC4   PC5   PC6   PC7   PC8 
983.0 464.3 132.3  73.9  48.4  37.0  25.7  19.7 
(Showed only 8 of all 23 unconstrained eigenvalues)

素食主义者没有像Canoco一样标准化惯性,所以总方差是1826,特征值以相同的单位累加到1826

> cumsum(eigenvals(pcfit))
      PC1       PC2       PC3       PC4       PC5       PC6       PC7       PC8 
 982.9788 1447.2829 1579.5334 1653.4670 1701.8853 1738.8947 1764.6209 1784.3265 
      PC9      PC10      PC11      PC12      PC13      PC14      PC15      PC16 
1796.6007 1807.0361 1816.3869 1819.1853 1821.5128 1822.9045 1824.1103 1824.9250 
     PC17      PC18      PC19      PC20      PC21      PC22      PC23 
1825.2563 1825.4429 1825.5495 1825.6131 1825.6383 1825.6548 1825.6594

我们还看到,第一个特征值大约是方差的一半,对于前两个轴,我们已经解释了约80%的总方差

> head(cumsum(eigenvals(pcfit)) / pcfit$tot.chi)
      PC1       PC2       PC3       PC4       PC5       PC6 
0.5384240 0.7927453 0.8651851 0.9056821 0.9322031 0.9524749

可以从前两个主成分的样本和物种的分数得出双图

> plot(pcfit)

在此处输入图片说明

这里有两个问题

  1. 排序基本上由三种物种主导-这些物种距离起源最远-因为它们是数据集中最丰富的分类单元
  2. 协调中有很强的曲线拱形,表明存在长的或占优势的单一梯度,该梯度已分解为两个主要主成分,以保持协调的度量属性。

认证机构

由于单峰响应模型,CA可以更好地处理长梯度,并且可以模拟物种的相对组成而不是原始丰度,因此可以在这两个方面提供帮助。

纯素/ R代码做,这是类似于上面使用的PCA代码

cafit <- cca(varespec)
cafit

> cafit <- cca(varespec)
> cafit
Call: cca(X = varespec)

              Inertia Rank
Total           2.083     
Unconstrained   2.083   23
Inertia is mean squared contingency coefficient 

Eigenvalues for unconstrained axes:
   CA1    CA2    CA3    CA4    CA5    CA6    CA7    CA8 
0.5249 0.3568 0.2344 0.1955 0.1776 0.1216 0.1155 0.0889 
(Showed only 8 of all 23 unconstrained eigenvalues) 

在这里,我们解释了站点相对组成之间约40%的变化

> head(cumsum(eigenvals(cafit)) / cafit$tot.chi)
      CA1       CA2       CA3       CA4       CA5       CA6 
0.2519837 0.4232578 0.5357951 0.6296236 0.7148866 0.7732393

物种和地点得分的联合图现在较少地由少数物种主导

> plot(cafit)

在此处输入图片说明

选择哪个PCA或CA应该由您希望对数据提出的问题来决定。通常,根据物种数据,我们通常会对物种套件的差异感兴趣,因此CA是一种流行的选择。如果我们有一组环境变量的数据,例如水或土壤化学,我们就不会期望这些变量沿梯度以单峰方式响应,因此CA不合适,而PCA(在相关矩阵中,scale = TRUErda()调用中使用)将是适当的。更合适。

受约束的命令;CCA

现在,如果我们要使用第二组数据来解释第一物种数据集中的模式,则必须使用约束排序。通常,这里的选择是CCA,但是RDA是替代方法,数据转换后的RDA也是如此,以使其能够更好地处理物种数据。

data(varechem)                          # load explanatory example data

我们重新使用该cca()函数,但我们提供了两个数据框(X用于物种以及Y解释性/预测变量)或一个模型公式,其中列出了我们希望拟合的模型的形式。

要包含所有变量,我们可以将其varechem ~ ., data = varechem用作包含所有变量的公式-但正如我上面所说,这通常不是一个好主意

ccafit <- cca(varespec ~ ., data = varechem)

> ccafit
Call: cca(formula = varespec ~ N + P + K + Ca + Mg + S + Al + Fe + Mn +
Zn + Mo + Baresoil + Humdepth + pH, data = varechem)

              Inertia Proportion Rank
Total          2.0832     1.0000     
Constrained    1.4415     0.6920   14
Unconstrained  0.6417     0.3080    9
Inertia is mean squared contingency coefficient 

Eigenvalues for constrained axes:
  CCA1   CCA2   CCA3   CCA4   CCA5   CCA6   CCA7   CCA8   CCA9  CCA10  CCA11 
0.4389 0.2918 0.1628 0.1421 0.1180 0.0890 0.0703 0.0584 0.0311 0.0133 0.0084 
 CCA12  CCA13  CCA14 
0.0065 0.0062 0.0047 

Eigenvalues for unconstrained axes:
    CA1     CA2     CA3     CA4     CA5     CA6     CA7     CA8     CA9 
0.19776 0.14193 0.10117 0.07079 0.05330 0.03330 0.01887 0.01510 0.00949

使用以下plot()方法生成上述排序的三重奏

> plot(ccafit)

在此处输入图片说明

当然,现在的任务是弄清楚哪些变量实际上很重要。还要注意,我们仅使用13个变量就解释了物种差异的2/3。在此排序中使用所有变量的问题之一是,我们在样本和物种得分中创建了一个拱形配置,这纯粹是使用太多相关变量的人工产物。

如果您想了解更多信息,请查阅素食文档或一本有关多元生态数据分析的好书。

与回归的关系

最简单地说明与RDA的链接,但CCA相同,只是所有内容都涉及行和列双向表边际和作为权重。

从本质上讲,RDA等效于将PCA应用于拟合值矩阵,该矩阵来自拟合每个物种(响应)值(例如丰度)的多元线性回归,其解释变量由解释变量矩阵给出。

在R中,我们可以这样做

## centre the responses
spp <- scale(data.matrix(varespec), center = TRUE, scale = FALSE)
## ...and the predictors
env <- as.data.frame(scale(varechem, center = TRUE, scale = FALSE))

## fit a linear model to each column (species) in spp.
## Suppress intercept as we've centred everything
fit <- lm(spp ~ . - 1, data = env)

## Collect fitted values for each species and do a PCA of that
## matrix
pclmfit <- prcomp(fitted(fit))

这两种方法的特征值相等:

> (eig1 <- unclass(unname(eigenvals(pclmfit)[1:14])))
 [1] 820.1042107 399.2847431 102.5616781  47.6316940  26.8382218  24.0480875
 [7]  19.0643756  10.1669954   4.4287860   2.2720357   1.5353257   0.9255277
[13]   0.7155102   0.3118612
> (eig2 <- unclass(unname(eigenvals(rdafit, constrained = TRUE))))
 [1] 820.1042107 399.2847431 102.5616781  47.6316940  26.8382218  24.0480875
 [7]  19.0643756  10.1669954   4.4287860   2.2720357   1.5353257   0.9255277
[13]   0.7155102   0.3118612
> all.equal(eig1, eig2)
[1] TRUE

出于某种原因,我无法获得匹配的轴分数(负载),但总是会缩放(或不缩放)这些分数,因此我需要在这里准确地研究它们的工作方式。

我们没有rda()像我用lm()etc所示那样通过RDA进行处理,但是我们对线性模型部分使用QR分解,对PCA部分使用SVD。但是基本步骤是相同的​​。


4
+1并寻找延续!有几点评论:(1)在您的示例中PC1与PC2不正交;您可以例如将更改为进行修复。(2)编辑OP的标题以反映您回答的内容可能很有意义;当前版本的标题是我的,但我不知道OP在谈论什么。(3)“响应”通常是单变量还是多变量?听起来像后者,但是例如千足虫的丰度如何多元?几种物种丰富?(4)这些方法与回归有何不同?您可以包括一些数学指标吗?+1.35.6
amoeba 2014年

2
感谢您的建议和跟进-我没有想到使线性组合示例正交,但是我已经对其进行了更新。关于2),我做了一个假设,但鉴于存在c。我怀疑12,000种千足虫的反应是在采样位置中的每一个处都观察到种的丰度。从这个意义上讲,RDA或CCA将对维度的多元响应矩阵进行建模。我让孩子们上床睡觉后,我将尝试处理4个问题。mnn×m
加文·辛普森

@amoeba抱歉,延迟,但是我在答案中添加了一部分,试图显示与回归的联系,以及如何将RDA视为一系列线性回归中拟合值的PCA,每个响应变量一个。
加文·辛普森

1
@amoeba我们确实对(拟合值)进行SVD​​运算,而不是对系数进行SVD​​运算,至少给出了:。因此,RDA通常被称为降秩回归。Xββfitted()Xβ
加文·辛普森

1
RDA的起源是Rao(1964)的统计数据,因此应该适当。
加文·辛普森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.