Eu encontrei um post criado por você no "ridículas" e tentei adaptar para o meu problema.
Não tenho certeza se está adequado. Acho que não. O motivo é que encontrei interação dupla significativa entre "meio" e "tipo" e no desdobramento final, para identificar os níveis onde há diferença significativa, esta diferença não aparece ( "valor-p" sempre igual a 1).
Segue o CMR e agradeço mais uma vez a atenção.
require(multcomp)
require(doBy)
dados <- read.table("dados.txt",header=TRUE, sep="\t")
str(dados)
attach(dados)
xtabs(~genotipo+meio+tipo, dados)
## Interação.
dados$gmt <- interaction(genotipo, meio, tipo)
attach(dados)
levels(gmt)
#Modelo fatorial completo
m0 = glm(cbind(good=n_ex_ox, bad=n_explant-n_ex_ox)~genotipo*meio*tipo,family="quasibinomial", data=dados)
par(mfrow=c(2,2))
plot(m0)
anova(m0,test="F")
drop1(m0, test="F", scope=.~.)
#Modelo só com efeito de primeira grau
m1 <- update(m0, .~genotipo+meio+tipo)
anova(m1, m0,test="F")
## Modelo só com efeitos até segundo grau.
m2 <- update(m0, .~(genotipo+meio+tipo)^2)
anova(m2, test="F")
anova(m2, m0,test="F")
par(mfrow=c(2,2))
plot(m2)
##Obs: Estou estudando o modelo logístico com superdispersão constante para melhorar os resíduos deste modelo. Por enquanto vou utilizar o modelo completo
do.call(rbind, strsplit(levels(dados$gmt),"\\."))
M <- LSmatrix(m0, effect=c("tipo","meio"))
dim(M)
class(M)
grid <- attr(M, "grid")
## Matriz de contrastes
## Antes executar a Função apc
apc <- function(pmc, lev=NULL){
## apc: all pairwise contrasts, pmc: popMatrix contrast
nlev <- nrow(pmc)
rn <- rownames(pmc)
a <- attr(pmc, "grid")
if(is.null(lev)){
if(!is.null(a)){
lev <- apply(a, 1, paste, collapse=":")
} else if(!is.null(rn)){
lev <- rn
} else {
lev <- as.character(1:nlev)
}
}
cbn <- combn(seq_along(lev), 2)
M <- pmc[cbn[1,],]-pmc[cbn[2,],]
if(is.vector(M)) dim(M) <- c(1, length(M))
rownames(M) <- paste(lev[cbn[1,]], lev[cbn[2,]], sep="-")
M
}
#Matriz de contrastes entre níveis de `focus` dentro dos níveis de `split`.
split <- c("meio")
focus <- "tipo"
spl <- interaction(grid[,split])
i <- 1:nrow(grid)
l <- split(i, f=spl)
contr <- lapply(l,
function(row){
## Matriz de contrastes par a par.
a <- apc(M[row,], lev=levels(dados[,focus]))
## Prefixo no nome das linhas.
rownames(a) <- paste(spl[row[1]],
rownames(a), sep="/")
return(a)
})
contr <- do.call(rbind, contr)
summary(glht(m0, linfct=contr),test=adjusted(type="fdr"))