Aquí hay un poco de información sobre mi situación: mis datos se refieren al número de presas comidas con éxito por un depredador. Como el número de presas es limitado (25 disponibles) en cada ensayo, tenía una columna "Muestra" que representaba el número de presas disponibles (por lo tanto, 25 en cada ensayo), y otra llamada "Recuento" que era el número de éxitos (cuántas presas fueron comidas). Basé mi análisis en el ejemplo del libro de R sobre datos de proporción (página 578). Las variables explicativas son Temperatura (4 niveles, que traté como factor), y Sexo del depredador (obviamente, macho o hembra). Así que termino con este modelo:
model <- glm(y ~ Temperature+Sex+Temperature*Sex,
data=predator, family=quasibinomial)
Tras obtener la tabla de análisis de desviación, resulta que la temperatura y el sexo (pero no la interacción) tienen un efecto significativo en el consumo de presas. Ahora, mi problema: necesito saber qué temperaturas difieren, es decir, tengo que comparar las 4 temperaturas entre sí. Si tuviera un modelo lineal, utilizaría el TukeyHSD
pero como estoy usando un GLM no puedo. He estado buscando en el paquete MASS y tratando de configurar una matriz de contraste pero por alguna razón no funciona. ¿Alguna sugerencia o referencia?
Este es el resumen que obtengo de mi modelo, si eso ayuda a aclararlo...
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
4 votos
Hola @Anne y bienvenida. Puedes probar a utilizar el
glht
en la funciónmultcomp
paquete . Para realizar las pruebas TukeyHSD para la temperatura, utilícelo asíglht(my.glm, mcp(Temperature="Tukey"))
. Y por cierto: la fórmula de su modelo puede abreviarse a:model<-glm(y ~ Temperature*Sex data=predator, family=quasibinomial)
. Con el asterisco ( $*$ ) las interacciones y los efectos principales están ajustados.0 votos
Hola, gracias por su rápida respuesta. Sin embargo, debo estar haciendo algo mal porque sólo obtengo un mensaje de error... Supongo que mi.glm es el glm que he realizado antes (por lo tanto, "modelo" en el caso). ¿A qué se refiere mcp? Me sale un mensaje de error diciendo que las dimensiones de los coeficientes y la matriz de covarianza no coinciden... ?
0 votos
Sería útil que editaras tu pregunta e incluyeras el resultado del modelo.
5 votos
¿Por qué has modelado
Temperature
como factor? ¿No tienes los valores numéricos reales? Yo los utilizaría como una variable continua y entonces toda esta cuestión es discutible.2 votos
Utilizo la temperatura como factor porque así la he definido en mi diseño experimental. Supongo que podría tomarse como un valor numérico, pero me gustaría saber cómo resolver mi problema de comparación en un factor igualmente, ya que podría necesitarlo para otros datos (digamos, si tuviera "Tipo de sustrato" en lugar de Temperatura). * COOLSerdash, no sé si mi edición es lo que buscabas como "salida del modelo"... Dime si me he equivocado y haré lo posible por arreglarlo.
4 votos
Es perfectamente razonable querer saber cómo hacer esto en general; su pregunta se mantiene. Sin embargo, con respecto a su situación específica, yo utilizaría la temperatura como una variable continua, incluso si usted había pensado originalmente en ella como un factor. Dejando de lado los problemas con las comparaciones múltiples, modelar la temperatura como un factor es un uso ineficiente de la información que tienes.