0

您能否使用我的数据子集协助执行 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") 

PS 我创建了一个单独的 CSV.file,其中仅包含 Primary Producers。然而,随后的多重比较邓恩检验,用于确定哪些水平彼此不同,为包括消费者和生产者的那些水平提供了不同的显着性水平。

4

1 回答 1

1

也许这个答案会有所帮助?基于@user295691 的回答:

Kruskal-Wallis 测试:为子集 data.frame 创建 lapply 函数?

在这里,您可以确定要测试的各个组之间的差异,并使用拆分来正确定义数据框的子集。

虚拟示例:

# 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
}
  )
于 2018-05-04T21:01:37.553 回答