W jaki sposób efekty losowe z tylko 1 obserwacją wpłyną na uogólniony liniowy model mieszany?

14

Mam zestaw danych, w którym zmienna, której chciałbym użyć jako efektu losowego, ma tylko jedną obserwację dla niektórych poziomów. Opierając się na odpowiedziach na poprzednie pytania, stwierdziłem, że w zasadzie może być w porządku.

Czy mogę dopasować model mieszany do obiektów, które mają tylko 1 obserwację?

Model przechwytuje losowo - jeden pomiar na obiekt

Jednak w drugim łączu pierwsza odpowiedź brzmi:

„... zakładając, że nie używasz uogólnionego liniowego modelu mieszanego GLMM, w którym to przypadku występują problemy związane z nadmierną dyspersją”

Zastanawiam się nad użyciem GLMM, ale tak naprawdę nie rozumiem, jak poziomy efektów losowych z pojedynczymi obserwacjami wpłyną na model.


Oto przykład jednego z modeli, które próbuję dopasować. Badam ptaki i chciałbym modelować wpływ populacji i pory roku na liczbę przystanków podczas migracji. Chciałbym użyć osoby jako efektu losowego, ponieważ dla niektórych osób mam dane do 5 lat.

library(dplyr)
library(lme4)
pop <- as.character(c("BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "NU", "NU", "NU", "NU", "NU", "NU", "NU", "NU", "NU", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA"))
id <- "2 2 4 4 7 7 9 9 10 10 84367 84367 84367 84368 84368 84368 84368 84368 84368 84369 84369 33073 33073 33073 33073 33073 33073 33073 33073 33073 80149 80149 80149 80150 80150 80150 57140 57141 126674 126677 126678 126680 137152 137152 137157 115925 115925 115925 115925 115925 115925 115925 115925 115926 115926 115926 115926 115926 115926 115927 115928 115929 115929 115929 115930 115930 115930 115930 115931 115931 115931 115932 115932 115932"
id <- strsplit(id, " ")
id <- as.numeric(unlist(id))
year <- "2014 2015 2014 2015 2014 2015 2014 2015 2014 2015 2009 2010 2010 2009 2010 2010 2011 2011 2012 2009 2010 2009 2009 2010 2010 2011 2011 2012 2012 2013 2008 2008 2009 2008 2008 2009 2008 2008 2013 2013 2013 2013 2014 2015 2014 2012 2013 2013 2014 2014 2015 2015 2016 2012 2013 2013 2014 2014 2015 2013 2012 2012 2013 2013 2012 2013 2013 2014 2013 2014 2014 2013 2014 2014"
year <- strsplit(year, " ")
year <- as.numeric(unlist(year))
season <- as.character(c("fall", "spring", "fall", "spring", "fall", "spring", "fall", "spring", "fall", "spring", "fall", "fall", "spring", "fall", "fall", "spring", "fall", "spring", "spring", "fall", "spring", "fall", "spring", "fall", "spring", "fall", "spring", "fall", "spring", "spring", "fall", "spring", "spring", "fall", "spring", "spring", "fall", "fall", "fall", "fall", "fall", "fall", "fall", "spring", "fall", "fall", "fall", "spring", "fall", "spring", "fall", "spring", "spring", "fall", "fall", "spring", "fall", "spring", "spring", "fall", "fall", "fall", "fall", "spring", "fall", "fall", "spring", "spring","fall", "fall", "spring", "fall", "fall", "spring"))
stops <- "0 0 0 0 0 0 1 0 2 1 1 0 0 3 2 0 1 1 0 1 1 2 0 1 0 2 0 4 0 0 2 1 1 2 5 2 1 0 9 6 2 3 4 7 2 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0"
stops <- strsplit(stops, " ")
stops <- as.numeric(unlist(stops))

stopdata <- data.frame(pop = pop, id = id, year = year, season = season, stops = stops, stringsAsFactors = FALSE)


stopdata <- group_by(stopdata, pop, id)
summary1 <- summarise(stopdata, n.years = length(year))
table(summary1$n.years)

Istnieje 27 osób. 9 osób ma jedną obserwację. 18 osób ma 2-9 obserwacji.

Co powinno się martwić, jeśli 1/3 poziomów efektów losowych ma tylko jedną obserwację?


Zastanawiałem się:

Opcja 1: GLMM jak opisano powyżej

stops.glmm <- glmer(stops ~ pop + season + (1|id), data=stopdata, family = poisson)

Opcja 2: Uogólniony uogólniony model liniowy GLM z wykorzystaniem średnich dla osób z wieloma obserwacjami

aggfun <- function(data, idvars=c("pop", "season", "id"), response){
#select id variables, response variable, and year
sub1 <- na.omit(data[,c(idvars, "year", response)])
#aggregate for mean response by year
agg1 <- aggregate(sub1[names(sub1) == response],by=sub1[idvars],FUN=mean)
#sample size for each aggregated group
aggn <- aggregate(sub1[response],by=sub1[idvars],FUN=length)
#rename sample size column
names(aggn)[4] <- "n"
agg2 <- merge(agg1, aggn)
agg2}


#Create weighted dataset
stops.weight <- aggfun(data = stopdata, response = "stops")
stops.weight$stops <- round(stops.weight$stops)

#Weighted GLM
stops.glm <- glm(stops~pop + season, data=stops.weight, family = poisson, weights = n)
canderson156
źródło
Skąd pochodzi wycena? Nie mogę znaleźć odpowiedniej odpowiedzi.
ameba mówi Przywróć Monikę
Drugi link, pierwsza odpowiedź w nawiasach
canderson156
3
krótka niezupełna odpowiedź: nie sądzę, żeby był jakiś problem. Nie wiem dokładnie, co miał na myśli pierwszy odpowiadający na drugie pytanie, o którym mowa powyżej: czy zastanawiałeś się nad pozostawieniem komentarza z pytaniem (jeśli masz wystarczającą liczbę powtórzeń)? W granicy, w której masz dokładnie 1 obserwację na grupę, zmienność międzygrupowa i resztkowa będzie całkowicie zagmatwana. Mógłbym nie przejmować się mieszanymi modelami, jeśli miałeś mniejszość grup z> 1 obserwacją (i niewielką liczbą w tych grupach), ale twoja sprawa brzmi dobrze ...
Ben Bolker,
Nie jestem pewien, czy twoja druga opcja (ważona Poissona) naprawdę działa poprawnie, ale musiałbym się nad tym zastanowić.
Ben Bolker,
@BenBolker Co byś zrobił w opisanym przypadku, w którym istnieje tylko mniejszość grup z> 1 obserwacją?
mkt - Przywróć Monikę

Odpowiedzi:

3

Zasadniczo masz problem z identyfikowalnością. Modele liniowe z efektem losowym przypisanym do parametru z tylko jednym pomiarem nie mogą odróżnić efektu losowego od błędu resztkowego.

Typowe równanie liniowe z efektem mieszanym będzie wyglądać następująco:

E=β+ηi+ϵj

βηiiϵjjηϵηϵSD(η)SD(ϵ)var(η)+var(ϵ)

SD(η)SD(ϵ)

Bill Denney
źródło