Voici un petit historique de ma situation: mes données se réfèrent au nombre de proies mangées avec succès par un prédateur. Comme le nombre de proies est limité (25 disponibles) dans chaque essai, j'avais une colonne "Sample" représentant le nombre de proies disponibles (donc, 25 dans chaque essai), et une autre appelée "Count" qui était le nombre de succès ( combien de proies ont été mangées). J'ai basé mon analyse sur l'exemple du livre R sur les données de proportion (page 578). Les variables explicatives sont la température (4 niveaux, que j'ai traités comme facteur) et le sexe du prédateur (évidemment, homme ou femme). Je me retrouve donc avec ce modèle:
model <- glm(y ~ Temperature+Sex+Temperature*Sex data=predator, family=quasibinomial)
Après avoir obtenu le tableau Analyse de la déviance, il s'avère que la température et le sexe (mais pas l'interaction) ont un effet significatif sur la consommation de proies. Maintenant, mon problème: j'ai besoin de savoir quelles températures diffèrent, c'est-à-dire que je dois comparer les 4 températures entre elles. Si j'avais un modèle linéaire, j'utiliserais la fonction TukeyHSD, mais comme j'utilise un GLM, je ne peux pas. J'ai parcouru le package MASS et essayé de configurer une matrice de contraste, mais pour une raison quelconque, cela ne fonctionne pas. Des suggestions ou des références?
Voici le résumé que j'obtiens de mon modèle, si cela aide à le rendre plus clair ...
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
multcomp
glht(my.glm, mcp(Temperature="Tukey"))
model<-glm(y ~ Temperature*Sex data=predator, family=quasibinomial)
Temperature
comme facteur? Vous n'avez pas les valeurs numériques réelles? Je les utiliserais comme une variable continue, puis tout ce problème est théorique.Réponses:
Anne, je vais brièvement expliquer comment faire de telles comparaisons multiples en général. Pourquoi cela ne fonctionne pas dans votre cas spécifique, je ne sais pas; Je suis désolé.
Mais normalement, vous pouvez le faire avec le
multcomp
package et la fonctionglht
. Voici un exemple:Si vous vouliez calculer les comparaisons par paires entre l'
rank
utilisation du HSD de Tukey, vous pouvez le faire de cette manière:Remarque: Comme @gung l'a indiqué dans les commentaires, vous devez - dans la mesure du possible - inclure la température en tant que variable continue plutôt que catégorielle. Concernant l'interaction: vous pouvez effectuer un test de rapport de vraisemblance pour vérifier si le terme d'interaction améliore significativement l'ajustement du modèle. Dans votre cas, le code ressemblerait à quelque chose comme ça:
Si ce test n'est pas significatif, vous pouvez supprimer l'interaction de votre modèle. Peut
glht
- être que ça fonctionnera alors?la source