[R-br] Contraste com glm com distribuição de poisson em um fatorial 2x2
walmes .
walmeszeviani em gmail.com
Quinta Maio 8 09:27:57 BRT 2014
Alexandre,
Precisa tomar cuidado com a parametrização usualmente imposta em modelo
lineares e generalizados para estimar os parâmetros. No R o primeiro nível,
por padrão, é assumido como tendo efeito zero, é o contraste tipo
tratamento (contr.treatment). É preciso reconhecer isso para montar as
matrizes de contraste corretamente. No código abaixo ilustra um pouco disso.
##-----------------------------------------------------------------------------
require(multcomp)
require(doBy)
require(lattice)
## Dados artificiais - Status (Atacado x Sadio) x Idade(48 x 72)
d <- data.frame(a=factor(sample(c('atacado','sadio'), 100, rep=TRUE)),
b=factor(sample(c('48','72'), 100, rep=TRUE)))
xtabs(~a+b, d)
## Crio a interação.
d$ab <- interaction(d$a, d$b)
X <- model.matrix(~ab, d)
colnames(X)
beta <- c(1,1.2,1,-0.9)
d$y <- rpois(nrow(d), lambda=exp(X%*%beta))
xyplot(y~a, groups=b, data=d, jitter.x=TRUE, type=c("p","a"))
## Ajusto o GLM de Poisson.
glmRes <- glm(y~ab, family="poisson", data=d)
coef(glmRes)
## Para específicar contrastes tem que tomar cuidado com a
## parametrização.
## Específicos os contrastes desejados.
cntrMat <- rbind("atacado.48-sadio.48"=c(1, -1, 0, 0),
"atacado.72-sadio.72"=c(0, 0, 1, -1),
"atacado.48-atacado.72"=c(1, 0, 0, -1),
"sadio.48-sadio.72"=c(0, 1, 0, -1))
## Testo os contrastes com função glht do pacote multcomp.
summary(glht(glmRes, linfct=mcp(ab=cntrMat)), test=adjusted("none"))
summary(glht(glmRes, linfct=cntrMat, alternative="two.sided"),
test=adjusted("none"))
## Pela sua lógica, usando essa matriz deveria retornar as médias (na
## escala do preditor linear) para cada tratamento. Mas não são as médias.
M <- diag(4)
summary(glht(glmRes, linfct=mcp(ab=M)), test=adjusted("none"))
summary(glht(glmRes, linfct=M), test=adjusted("none"))
coef(glmRes)
## Matriz com o coeficientes, já respeitando a parametrização, para
## obter as médias ajustadas na escala do preditor linear
M <- LSmatrix(glmRes, effect="ab")
summary(glht(glmRes, linfct=M), test=adjusted("none"))
## Estimado vs paramétrico.
M%*%coef(glmRes)
M%*%beta
## Se quer facilitar a especificação dos constrastes, declare o modelo
## sem restrições, por exemplo, usando y~0+ab na fórmula.
glmRes <- glm(y~0+ab, family="poisson", data=d)
coef(glmRes)
cntrMat <- rbind("atacado.48-sadio.48"=c(1, -1, 0, 0),
"atacado.72-sadio.72"=c(0, 0, 1, -1),
"atacado.48-atacado.72"=c(1, 0, 0, -1),
"sadio.48-sadio.72"=c(0, 1, 0, -1))
summary(glht(glmRes, linfct=mcp(ab=cntrMat)), test=adjusted("none"))
summary(glht(glmRes, linfct=cntrMat), test=adjusted("none"))
##-----------------------------------------------------------------------------
À disposição.
Walmes.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140508/6eabe626/attachment.html>
Mais detalhes sobre a lista de discussão R-br