Wie wirken sich zufällige Effekte mit nur einer Beobachtung auf ein verallgemeinertes lineares Mischmodell aus?


14

Ich habe einen Datensatz, in dem die Variable, die ich als Zufallseffekt verwenden möchte, für einige Ebenen nur eine einzige Beobachtung enthält. Aufgrund der Antworten auf vorherige Fragen habe ich festgestellt, dass dies im Prinzip in Ordnung sein kann.

Kann ich ein gemischtes Modell mit Motiven kombinieren, bei denen nur 1 Beobachtung vorliegt?

Zufälliges Intercept-Modell - eine Messung pro Subjekt

Im zweiten Link heißt es jedoch in der ersten Antwort:

"... vorausgesetzt, Sie verwenden kein verallgemeinertes lineares gemischtes Modell GLMM, bei dem in diesem Fall Probleme der Überdispersion ins Spiel kommen."

Ich überlege, ein GLMM zu verwenden, verstehe aber nicht wirklich, wie sich zufällige Effektniveaus mit einzelnen Beobachtungen auf das Modell auswirken.


Hier ist ein Beispiel für eines der Modelle, die ich zu montieren versuche. Ich studiere Vögel und möchte die Auswirkungen von Population und Jahreszeit auf die Anzahl der Stopps während der Migration modellieren. Ich möchte individual als zufälligen Effekt verwenden, da ich für einige Personen bis zu 5 Jahre Daten habe.

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)

Es sind 27 Personen. 9 Personen haben eine einzige Beobachtung. 18 Personen haben 2-9 Beobachtungen.

Was ist zu beachten, wenn bei 1/3 der zufälligen Effektstufen nur eine Beobachtung vorliegt?


Ich habe überlegt:

Option 1: GLMM wie oben beschrieben

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

Option 2: Gewichtetes verallgemeinertes lineares Modell GLM unter Verwendung von Mitteln für Personen mit mehreren Beobachtungen

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)

Woher kommt das Zitat? Ich kann die entsprechende Antwort nicht finden.
Amöbe sagt Reinstate Monica

Zweiter Link, erste Antwort in Klammern
canderson156

3
kurze nicht ganz antwort: ich glaube nicht, dass es irgendein problem geben würde. Sie wissen nicht genau, was der erste Beantworter der oben verlinkten zweiten Frage bedeutete: Haben Sie darüber nachgedacht, dort einen Kommentar zu hinterlassen, um zu fragen (ob Sie genügend Repräsentanten haben)? In der Grenze, in der Sie genau 1 Beobachtung pro Gruppe haben, werden die Variabilität zwischen den Gruppen und die verbleibende Variabilität vollständig verwechselt. Ich würde mich nicht mit gemischten Modellen beschäftigen, wenn Sie eine Minderheit von Gruppen mit> 1 Beobachtung hätten (und eine kleine Anzahl in diesen Gruppen), aber Ihr Fall hört sich gut an ...
Ben Bolker

Ich bin mir nicht sicher, ob Ihre zweite Option (gewichtetes Poisson) wirklich richtig funktioniert, aber ich muss genauer darüber nachdenken.
Ben Bolker

@BenBolker Was würden Sie in dem von Ihnen beschriebenen Fall tun, in dem es nur eine Minderheit von Gruppen mit> 1 Beobachtung gibt?
mkt - Setzen Sie Monica

Antworten:


3

Im Allgemeinen haben Sie ein Problem mit der Identifizierbarkeit. Lineare Modelle mit einem zufälligen Effekt, die einem Parameter mit nur einer Messung zugewiesen sind, können nicht zwischen dem zufälligen Effekt und dem Restfehler unterscheiden.

Eine typische lineare Mischeffektgleichung sieht folgendermaßen aus:

E=β+ηi+ϵj

Wobei der feste Effekt ist, ist η i der Zufallseffekt für Stufe i und ϵβηiiϵjjηϵηϵSD(η)SD(ϵ)var(η)+var(ϵ)

SD(η)SD(ϵ)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.