首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >样本内不同值之间的同余性

样本内不同值之间的同余性
EN

Stack Overflow用户
提问于 2014-02-10 21:35:58
回答 1查看 50关注 0票数 0

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

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

提前谢谢你。

样本数据

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2014-02-10 23:11:40

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

另外,如果你有一个更具统计学启发的问题,带点R,你可以随意尝试https://stats.stackexchange.com/

代码语言:javascript
复制
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修剪树。

代码语言:javascript
复制
> 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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21678709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档