我想测试每个采样站点内不同分数之间的一致性。用5种不同的方法计算了这些得分,以衡量物种多样性(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发布于 2014-02-10 23:11:40
分类树将自动优化您的同余索引。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当然,示例中的分类都没有意义,因为它们是随机的。

https://stackoverflow.com/questions/21678709
复制相似问题