您是否可以使用我的数据子集协助执行Krustal Wallis测试?我希望能够测试“生产者”之间“N”的差异。
names(Isotope.Data)
[1] "Species" "Name" "Group" "Simple_Group" "Trophic_Group"
[6] "Sample" "N" "C"
在我的csv.file中,我有一个“Trophic Group”专栏,它将消费者和生产者分开。
table(Isotope.Data$Trophic_Group)
Consumer Producers
61 18
在标题Simple_Group的标题下,我有三个生产者 - 红藻,海草和褐藻科
table(Isotope.Data$Simple_Group)
Abalone Loliginidae Octopus Phaeophyceae Rhodophyta Seagrass Teleost
24 2 12 6 9 3 20
Tunicate
3
我尝试了很多东西,但是我收到了各种错误消息。 有人能够改进以下代码吗?
kruskal.test(C ~ Simple_Group, data = Isotope.Data, subset = Isotope.Data$Trophic_Group = "Producers")
P.S。我创建了一个单独的CSV.file,其中只包含Primary Producers。然而,随后用于确定哪些水平彼此不同的多重比较的Dunn检验提供了与包括消费者和生产者的那些水平不同的显着性水平。
答案 0 :(得分:0)
这个答案可能会有所帮助吗?基于@ user295691回答:
在此,您可以确定各个组要测试的差异,并使用拆分来正确定义数据框的子集。
虚拟例子:
# create data
val<-runif(60, min = 0, max = 100)
distance<-floor(runif(60, min=1, max=3))
phase<-rep(c("a", "b", "c"), 20)
df<-data.frame(val, distance, phase)
# get unique groups
ii<-unique(df$phase)
# run Kruskal test, specify the subset
kruskal.test(df$val ~df$distance,
subset = phase == "c")
现在使用kruskal.test
将split
应用于每个群组:
lapply(split(df, df$phase), function(d) { kruskal.test(val ~ distance, data=d) })
或创建一个函数:
lapply(ii, function(i) { kruskal.test(df$val ~ df$distance, subset=df$phase==i )})
两者都会为每个组生成测试结果:
[[1]]
Kruskal-Wallis rank sum test
data: df$val by df$distance
Kruskal-Wallis chi-squared = 0.14881, df = 1, p-value = 0.6997
[[2]]
Kruskal-Wallis rank sum test
data: df$val by df$distance
Kruskal-Wallis chi-squared = 0.11688, df = 1, p-value = 0.7324
[[3]]
Kruskal-Wallis rank sum test
data: df$val by df$distance
Kruskal-Wallis chi-squared = 0.0059524, df = 1, p-value = 0.9385
或者只是获取p值(请注意$p.value
之后添加kruskal.test
:
lapply(ii, function(i) {
kruskal.test(df$val ~ df$distance,
subset=df$phase==i )$p.value
}
)