我开始通过使用 adonis 函数的级别组合来创建 PERMANOVA 对比的脚本,但似乎并没有将级别矩阵与创建的 adonis 对象结合使用,我的代码是:
套餐
require(vegan)
require(doBy)
require(wzRfun)
require(multcomp)
数据集
data(mite)
A = c(rep(c(0), 30), rep(c(1), 30))
B = rep(c(rep(c(0), 15), rep(c(1), 15)), 2)
创建数据框
A <- as.factor(A)
B <- as.factor(B)
species <- mite[1:60,]
具有 Jaccard 指数的 PERMANOVA
man.com<-adonis(species ~ A * B, method = "jaccard",permutations=999)
man.com
双向 PERMANOVA 对比
相互作用
A_B<- interaction(A, B)
levels(A_B)
do.call(rbind, strsplit(levels(A_B), "\\."))
g0 <- adonis(species ~ A * B, method = "jaccard",permutations=999)
g1 <- adonis(species ~ A_B, method = "jaccard",permutations=999)
M <- LSmatrix(g0, effect=c("A","B"))
平均估计
data.frame(g0=M%*%coef(g0), g1=coef(g1))
等级组合
str(M)
grid <- attr(M, "grid")
治疗水平之间的对比矩阵
B <- "b"
A <- "a"
spl <- interaction(grid[,2])
i <- 1:nrow(grid)
l <- split(i, f=spl)
contr <- lapply(l,
function(row){
## Contrast matrix parwise
a <- apc(M[row,], lev=levels(d[,2]))
rownames(a) <- paste(spl[row[1]],
rownames(a), sep="/")
return(a)
})
contr <- do.call(rbind, contr)
contr
对比
summary(glht(g0, linfct=contr),
test=adjusted(type="fdr"))
有人可以帮我吗,
提前致谢,