我曾经有过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))
如何设置创建和测试所有可能配对的方法?
答案 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)