<div dir="ltr"><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">Ivan,<br><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">Você forneceu todo o código necessário para reprodução da sua dúvida mas não deu as informações suficientes com relação ao experimento, etc. Na possibilidade de fracassar com tantas suposições à respeito do que não foi dito, eu adaptei código de scripts que eu já tinha sobre desdobramento de interação com a glht()<br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">Bem, um ponto é que desbalanceado ou não, os coeficientes considerados para as médias ajustadas (e os contrates) são os mesmos. O desbalanceamento já é considerado no tamanho dos erros padrões dos efeitos, onde àqueles de erro padrão menor são efeitos com mais repetições, nesse caso. Existe outros tipos de "ponderação" para obter essas médias, mas só use se realmente você se sentir convencido da necessidade ou motivado por algum artigo (e não documentação de $oftware$).<br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br><span style="font-family:monospace,monospace">##-------------------------------------------<br><br>## As coisas ficam mais fáceis quando se compreende a estrutura<br>## experimental.<br><br>xtabs(~sujeito, data=gnexpo)<br>xtabs(~celula+tratamento, data=gnexpo)<br>ftable(xtabs(~celula+tratamento+sujeito, data=gnexpo))<br><br>sum(!complete.cases(gnexpo))<br><br>## Distribuição dos casos perdidos.<br>addmargins(<br>    with(gnexpo,<br>         tapply(ybox, list(celula, tratamento),<br>                FUN=function(x){<br>                    sum(<a href="http://is.na">is.na</a>(x))<br>                })))<br>     <br>m0 <- lm(ybox~sujeito+celula*tratamento, data=gnexpo)<br>par(mfrow=c(2,2)); plot(m0); layout(1)<br><br>drop1(m0, scope=.~., test="F")<br><br>## Exista desbalanceamento. Será que todos os efeitos foram estimados?<br>sum(<a href="http://is.na">is.na</a>(coef(m0)))==0<br><br>##-------------------------------------------<br>## Estudo da interação. Contrastes entre níveis de tratamento separado<br>## por níveis de célula.<br><br>library(doBy)<br><br>## Médias ajustadas para o efeito de sujeito.<br>lsm <- LSmeans(m0, effect=c("tratamento", "celula"))<br>lsm<br><br>L <- by(data=lsm$K, INDICES=lsm$grid$celula, FUN=as.matrix)<br>str(L)<br><br>## Contrastes de Tukey significa todos contra todos (all pairwise). Com<br>## 4 níveis são 6 constrastes 2 a 2.<br><br>x <- L[[1]]<br>str(x)<br><br>## Veja outra versão em:<br>## <a href="http://git.leg.ufpr.br/leg/legTools/blob/master/R/apcMatrix.R">http://git.leg.ufpr.br/leg/legTools/blob/master/R/apcMatrix.R</a><br>apcMatrix <- function(x){<br>    ## --- All Pairwise Contrasts Matrix ---<br>    ## x: é uma matriz onde cada linha assumesse ter os coeficientes<br>    ## para estimar uma média (ou qualquer outra função linear dos<br>    ## parâmetros). Ela returna a matriz com as funções lineares, em<br>    ## cada linha, representando cada contraste.<br>    cbn <- combn(x=nrow(x), m=2)<br>    K <- apply(cbn, MARGIN=2, FUN=function(l){<br>        x[l[1], ]-x[l[2], ]<br>    })<br>    return(t(K))<br>}<br><br>K <- lapply(L, FUN=apcMatrix)<br><br>## Abordagem A: Testes separados por celula. Cada um deles tem cobertura<br>## nominal das 6 hipóteses que é de 95% (default).<br>lapply(K,<br>       FUN=function(l){<br>           summary(glht(m0, linfct=l), test=adjusted(type="fdr"))<br>       })<br><br>KK <- do.call(rbind, K)<br>nrow(KK)<br><br>## Abordagem B: testes todos juntos. Nivel global geral de 95%.<br>summary(glht(m0, linfct=KK), test=adjusted(type="fdr"))<br><br>## Para ficar mais fácil de identificar os contrastes, é necessário<br>## atribuir rownames.<br></span><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">O seu CMR foi fundamental para aplicar uma solução para os seus dados. Porém, conhecendo os seus recursos, você poderia ter hospedado os dados na sua página pessoal (diretório na nuvem), pasta pública do dropbox ou repositório no GithHub. Com isso incluiria apenas o link para leitura dos dados dentro do read.table() poupando espaço na mensagem. Mensagens com corpo grande são descartadas pelo serviço de lista. Me espantou que a sua passou, então procure sempre evitar.<br><br>À disposição.<br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">Walmes.<br></div></div>