Aqui está um pouco da minha situação: meus dados se referem ao número de presas comidas com sucesso por um predador. Como o número de presas é limitado (25 disponíveis) em cada tentativa, eu tive uma coluna "Amostra" representando o número de presas disponíveis (portanto, 25 em cada tentativa) e outra chamada "Contagem", que foi o número de sucessos ( quantas presas foram comidas). Baseei minha análise no exemplo do livro R em dados de proporção (página 578). As variáveis explicativas são Temperatura (4 níveis, que eu tratei como fator), e Sexo do predador (obviamente, homem ou mulher). Então, acabo com este modelo:
model <- glm(y ~ Temperature+Sex+Temperature*Sex data=predator, family=quasibinomial)
Após obter a tabela Análise de desvio, verifica-se que a temperatura e o sexo (mas não a interação) têm um efeito significativo no consumo de presas. Agora, meu problema: preciso saber quais temperaturas diferem, ou seja, tenho que comparar as 4 temperaturas entre si. Se eu tivesse um modelo linear, usaria a função TukeyHSD, mas como estou usando um GLM, não posso. Eu estive olhando o pacote MASS e tentando configurar uma matriz de contraste, mas por algum motivo isso não funciona. Alguma sugestão ou referência?
Aqui está o resumo que recebo do meu modelo, se isso ajudar a torná-lo mais claro ...
y <- cbind(data$Count, data$Sample-data$Count)
model <- glm(y ~ Temperature+Sex+Temperature*Sex data=predator, family=quasibinomial)
> summary(model)
# Call:
# glm(formula = y ~ Temperature + Sex + Temperature * Sex, family=quasibinomial, data=data)
# Deviance Residuals:
# Min 1Q Median 3Q Max
# -3.7926 -1.4308 -0.3098 0.9438 3.6831
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) -1.6094 0.2672 -6.024 3.86e-08 ***
# Temperature8 0.3438 0.3594 0.957 0.3414
# Temperature11 -1.0296 0.4803 -2.144 0.0348 *
# Temperature15 -1.2669 0.5174 -2.449 0.0163 *
# SexMale 0.3822 0.3577 1.069 0.2882
# Temperature8:SexMale -0.2152 0.4884 -0.441 0.6606
# Temperature11:SexMale 0.4136 0.6093 0.679 0.4990
# Temperature15:SexMale 0.4370 0.6503 0.672 0.5033
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# (Dispersion parameter for quasibinomial family taken to be 2.97372)
# Null deviance: 384.54 on 95 degrees of freedom
# Residual deviance: 289.45 on 88 degrees of freedom
# AIC: NA
# Number of Fisher Scoring iterations: 5
glht
função nomultcomp
pacote . Para realizar testes de temperatura do TukeyHSD, use-o assimglht(my.glm, mcp(Temperature="Tukey"))
. E btw: Sua fórmula modelo pode ser abreviado para:model<-glm(y ~ Temperature*Sex data=predator, family=quasibinomial)
. Com o asterisco ( ), as interações e os principais efeitos são ajustados.Temperature
como um fator? Você não tem os valores numéricos reais? Eu os usaria como uma variável contínua e todo esse problema é discutível.Respostas:
Anne, vou explicar rapidamente como fazer comparações múltiplas em geral. Por que isso não funciona no seu caso específico, eu não sei; Eu sinto Muito.
Mas normalmente, você pode fazer isso com o
multcomp
pacote e a funçãoglht
. Aqui está um exemplo:Se você deseja calcular as comparações aos pares entre o
rank
uso do HSD de Tukey, você pode fazer isso desta maneira:Nota: Como o @gung observou nos comentários, você deve - sempre que possível - incluir a temperatura como uma variável contínua e não categórica. Em relação à interação: você pode executar um teste de razão de verossimilhança para verificar se o termo de interação melhora significativamente o ajuste do modelo. No seu caso, o código seria algo assim:
Se esse teste não for significativo, você poderá remover a interação do seu modelo. Talvez
glht
funcione então?fonte