事后成对渔民精确检验

时间:2010-09-23 04:20:34

标签: r

我曾经有过2因素2级实验,通过2级实验得到3因子。

通过使用粘贴,我可以从我的两个因子中制作4个独特的组,并进行Fisher测试,结果是生物体是否存活或死亡。

fisher.test(mortal$alv.dead,paste(mortal$Strain,mortal$capsule))

但是当我想研究各个组之间的成对比较时,我不得不进行一些不合适的过滤,这样一次只有两组进入分析。既然我有更多的团队,那么每次削减手工编码都太繁琐了。所以这里是Fisher测试,在一次分析中测试所有组

fisher.test(mortal$alv.dead,paste(mortal$Strain,mortal$capsule,mortal$cassette))

如何设置创建和测试所有可能配对的方法?

1 个答案:

答案 0 :(得分:2)

使用函数combn()相当容易。您应该考虑的唯一事情是,当您在函数内部放置fisher.test()时,combn不会正确返回组的名称。

因此我们需要相应地调整列表中的元素:

一些玩具数据:

mortal <- data.frame(
      alv.dead = sample(c("alv","dead"),30,replace=T),
      train = sample(letters[1:3],30,replace=T),
      capsule = sample(letters[4:5],30,replace=T),
      cassette = sample(letters[6:7],30,replace=T)
      )

一些额外的变量

mortal$groups <- paste(mortal$train,mortal$capsule,mortal$cassette,sep="")
unique.groups <- unique(mortal$groups)

诀窍:

combn(unique.groups,2,function(x){
    id <- mortal$groups %in% x
    test <- fisher.test(table(mortal$alv.dead[id],mortal$groups[id]))
    test$data.name <-
      paste(
        unique(
          as.character(mortal$groups[id])
        ),collapse="-")
    return(test)}
  ,simplify=FALSE)