我想测试每个抽样网站中不同分数之间的一致性。这些分数用五种不同的方法计算,以测量物种多样性(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
答案 0 :(得分:0)
分类树会自动优化您的同余索引。 R中的rpart
包提供了Gini索引和信息索引(我认为它与熵索引相同)。您需要堆叠数据(在此处使用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)
罗兰提出了使用主要成分的好建议。您可以使用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
当然,示例中的所有分类都没有意义,因为它们是随机的。