【问题标题】:Congruence among different values within samples样本内不同值之间的一致性
【发布时间】:2014-02-10 13:35:58
【问题描述】:

我想测试每个抽样站点内不同分数之间的一致性。这些分数是用五种不同的方法来衡量物种多样性的(http://en.wikipedia.org/wiki/Diversity_index)。例如,如果索引“a”的值很高,那么索引 b、c、d 和 e 的值是否也应该也很高?通过这种方式,我想计算每个采样站点内的一致性。

你们应该建议任何方法来测试这种一致性吗?我试图计算每个站点内的变异系数,但这对我来说没有意义,因为它们在不同的尺度上有所不同。我在下面提供了一个数据集的示例。

提前谢谢你。

样本数据

df <- data.frame(a=rnorm(11, 5, 2), 
                 b=rnorm(11, 1, 1), 
                 c=rnorm(11, 2, 1), 
                 d=rnorm(11, 0, 1), 
                 e=rnorm(11, 3, 2))
rownames(df) <- paste("site", 1:11, sep="")
df

【问题讨论】:

  • 我相信这可能是主成分分析的合法用例。查看summary(prcomp(df, scale.=TRUE)),我们看到每个主成分解释了超过 10% 的方差,因此没有太大的一致性,正如您的人工数据所预期的那样(我在生成随机数之前使用了set.seed(42))。
  • 感谢您的回复。我喜欢你的建议。但是,我只是想知道如何在“一致”和“不一致”之间做出决定,因为我需要在它们之间做出决定。例如,我在数据中使用了 PCA,发现 PC1 和 PC2 分别解释了 44% 和 28% 的变异。
  • ...你有什么建议@Roland?也许每台 PC 的随机期望应该是 20% (5 / 100),但我不知道如何测试它。谢谢你。 ——

标签: r statistics


【解决方案1】:

分类树会自动优化您的一致性索引。 R 中的rpart 包提供了基尼指数和信息指数(我认为这与熵指数相同)。您需要堆叠数据(在此处使用 reshape2 包)。在此示例中,我假设您尝试通过数值观察和站点位置对 species 进行分类。

此外,如果您有更多的统计启发问题,需要一点 R,您应该随时尝试https://stats.stackexchange.com/

require(rpart)
require(reshape2)
df$site = rownames(df)
stackDF = melt(df, variable.name="species", value.name="observation")
str(stackDF)
classTree <- rpart(species ~ observation + site,data=stackDF, parms=list(split="gini"))
# classTree <- rpart(species ~ site + observation,data=stackDF, parms=list(split="information"))
printcp(classTree)
table(actual=stackDF$species, predicted=predict(classTree,type="class"))
plot(classTree,compress=T,uniform=T,branch=0.4,margin=0.1)
text(classTree)

Roland 建议使用主成分。您可以使用pck = princomp(stackDF[,-which(colnames(stackDF)=="species"),drop=F]),然后将树中的公式更改为stackDF$species ~ pck +...。您可以使用printcp 检查交叉验证并使用prune 修剪树。

> table(actual=stackDF$species, predicted=predict(classTree,type="class"))
      predicted
actual  a  b  c  d  e
     a 10  1  0  0  0
     b  0  6  3  2  0
     c  0  1  9  1  0
     d  0  3  0  8  0
     e  9  0  0  2  0

当然,示例中的分类都没有意义,因为它们是随机的。

【讨论】:

  • 感谢@HansRoggeman。我会研究 rpart 以了解您的建议。只是一个修正,我的专栏代表不同的物种多样性指数。因此,每个观测值都是每个位置的多样性指数的值。由于我有五个不同的指数,我试图测试它们在地区内的一致性。再次感谢!
  • 如果您只是在寻找索引的优化,请为索引创建不同的函数并使用optim 函数。但是您将丢弃您从其他因素中获得的所有信息。如果您想使用该信息,您应该使用分类树(如 rpart 中的那些)或其他预测技术(如多项式 logit - 不使用这些信息索引),但我确信还有其他 CART 包。
猜你喜欢
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 2011-10-22
  • 2019-01-28
  • 2021-09-10
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
相关资源
最近更新 更多