Prowadzę badania, aby przyjrzeć się różnicom w gęstości i bogactwie gatunków ryb, gdy używam dwóch różnych podwodnych metod wizualnego spisu. Moje dane pierwotnie liczyły dane, ale potem zwykle zmienia się to na gęstość ryb, ale nadal zdecydowałem się na użycie Poissona GLM, co, mam nadzieję, ma rację.
model1 <- glm(g_den ~ method + site + depth, poisson)
Moje 3 zmienne predykcyjne to metoda, miejsce i głębokość, które uporządkowałem jako czynniki podczas ich wprowadzania.
Moje zmienne odpowiedzi to bogactwo gatunków głuszca, gęstość głuszca i to samo dla innych grup ryb. Wiem, że gęstość nie jest liczbą całkowitą i są to dane liczbowe, np. 1.34849. Teraz jednak pojawia się ten błąd:
In dpois(y, mu, log = TRUE) : non-integer x = 0.037500
Czytałem i wiele osób sugeruje użycie offsetu, czy jest to najbardziej wskazana rzecz do zrobienia?
Odpowiedzi:
Jest tu kilka problemów:
g_den
).Jeśli obserwowane liczby pochodzą z różnych obszarów, musisz wziąć dziennik tych obszarów jako nową zmienną:
Możesz kontrolować różne obszary obserwacji na dwa różne sposoby:
larea
jako przesunięcia. To sprawi, że twoja odpowiedź będzie faktycznie stawką (nawet jeśli to, co jest wymienione po lewej stronie twojego modelu, jest liczbą ).larea
jako współzmiennej. Będzie to kontrolować różne obszary, ale nie sprawi, że twoja odpowiedź będzie równoważna stawce. Jest to bardziej elastyczne podejście, które pozwoli Ci ocenić, czy wzrostylarea
mają wpływ na wzrost lub spadek (np. Czy nachylenie jest mniejsze niż 1).Więcej informacji na temat tych problemów znajduje się w następujących wątkach CV:
źródło
Wygląda na to, że podzieliłeś liczbę ryb przez objętość (lub powierzchnię) badanej wody. W takim przypadku przesunięcie jest rzeczywiście właściwe, powinieneś użyć dziennika tego, przez co się podzieliłeś. Być może
model1 <- glm(g_den ~ method + site + depth + offset(log(area)), poisson)
(edytowany z wcześniejszej niepoprawnej wersji, brak dziennika)
Powodem tego komunikatu o błędzie jest to, że rozkład Poissona jest zwykle wartościami całkowitymi, ale odpowiedź nie była liczbą całkowitą. Zmienia się po pojawieniu się przesunięcia; (odpowiedź / przesunięcie) musi być liczbą całkowitą (co oczywiście jest, zakładając, że pierwotne liczby były liczbami całkowitymi).
źródło
offset
aby domyślnie zastosowano transformację, ale minęło trochę czasu, odkąd użyłemoffset
.offset()
nie jest stosowana; wymusza jedynie współczynnik równy 1. Patrz np . tutaj .Jeśli zamierzasz modelować za pomocą Poissona, musisz mieć wartości całkowite dla zmiennej odpowiedzi. Następnie masz dwie opcje
Jeśli zastosujesz metodę przesunięcia, mówisz, że jeśli podwoję obszar, spodziewałbym się podwoić liczbę. Jeśli zastosujesz metodę predykcyjną, powiesz, że wiesz, że jeśli pomnożymy obszar, pomnożymy liczby, ale niekoniecznie przez ten sam czynnik.
To jest twój telefon.
źródło