Oto kilka informacji na temat mojej sytuacji: moje dane odnoszą się do liczby ofiar, które z powodzeniem zjadły drapieżniki. Ponieważ liczba ofiar jest ograniczona (25 dostępnych) w każdej próbie, miałem kolumnę „Próbka” reprezentującą liczbę dostępnej ofiary (czyli 25 w każdej próbie), a drugą o nazwie „Liczba”, która była liczbą powodzenia ( ile ofiar padło). Swoją analizę oparłem na przykładzie z książki R na danych dotyczących proporcji (strona 578). Zmienne objaśniające to Temperatura (4 poziomy, które traktowałem jako czynnik) i Płeć drapieżnika (oczywiście mężczyzna lub kobieta). Skończyłem z tym modelem:
model <- glm(y ~ Temperature+Sex+Temperature*Sex data=predator, family=quasibinomial)
Po uzyskaniu tabeli analizy dewiacji okazuje się, że temperatura i płeć (ale nie interakcja) mają znaczący wpływ na konsumpcję zdobyczy. Teraz mój problem: muszę wiedzieć, które temperatury się różnią, tzn. Muszę porównać 4 temperatury ze sobą. Gdybym miał model liniowy, użyłbym funkcji TukeyHSD, ale ponieważ używam GLM, nie mogę. Przeglądałem pakiet MASS i próbuję skonfigurować matrycę kontrastu, ale z jakiegoś powodu to nie działa. Wszelkie sugestie lub referencje?
Oto podsumowanie, które otrzymuję z mojego modelu, jeśli to pomaga uczynić go bardziej przejrzystym ...
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
jako czynnik? Nie masz rzeczywistych wartości liczbowych? Użyłbym ich jako zmiennej ciągłej, a wtedy cały ten problem jest dyskusyjny.Odpowiedzi:
Anne, krótko wyjaśnię, jak przeprowadzić takie wielokrotne porównania w ogóle. Dlaczego to nie działa w twoim konkretnym przypadku, nie wiem; Przepraszam.
Ale zwykle można to zrobić za pomocą
multcomp
pakietu i funkcjiglht
. Oto przykład:Jeśli chcesz obliczyć porównania parami między
rank
użyciem HSD Tukeya, możesz to zrobić w następujący sposób:Uwaga: Jak zauważył @gung w komentarzach, należy - w miarę możliwości - uwzględniać temperaturę jako zmienną ciągłą, a nie kategoryczną. Odnośnie interakcji: możesz wykonać test współczynnika wiarygodności, aby sprawdzić, czy termin interakcji znacząco poprawia dopasowanie modelu. W twoim przypadku kod wyglądałby mniej więcej tak:
Jeśli ten test nie jest znaczący, możesz usunąć interakcję ze swojego modelu. Może
glht
wtedy zadziała?źródło