Seite 1 von 1

Predicten mit bootMer

Verfasst: Mi Nov 27, 2019 12:45 pm
von Liselotte_Lotterlisa
Hallo,
ich untersuche die Reaktion einer Vogelart (PV) nach Abspielen zweier Artgesänge (stimulus = PV, PC).
Dafür habe ich ein glmer berechnet. Für eine Reaktion teilte ich eine 1 zu für das Ausbleiben der Reaktion eine 0.
Als unabhängige Variablen habe ich den Jahrestag und die Tageszeit (h_nach_SA_dezimal) sowie als random effect die Untersuchungsfläche (flaeche) mit einbezogen. Den Jahrestag und Tageszeit hab ich vor der Modellberechnung skaliert.

Code: Alles auswählen

dat$flaeche <- as.factor(dat$flaeche)
dat$Reak_PV_binom <- as.factor(dat$Reak_PV_binom)
dat$jahrestag.s <- scale(dat$Jahrestag)
dat$h_nach_SA_dezimal.s <- scale(dat$h_nach_SA_dezimal)

mod1 <- glmer(Reak_PV_binom ~ stimulus + jahrestag.s + I(jahrestag.s^2) + h_nach_SA_dezimal.s + (1|flaeche),data=dat, family=binomial)
Nun möchte ich die Reaktionswahrscheinlichkeit bei unterschiedlichen Stimuli predicten und grafisch darstellen.
Die Funktion "predict()" funktioniert nicht bei glmers also wollte ich die Prediction mit der Funktion "bootMer" machen und ich habe überhaupt keine Ahnung, was ich hier tun muss.

Code: Alles auswählen

df.predicted <- data.frame(Reak_PV_binom = "1", x = stimulus)
predict.fun <- function(mod1) {
  predict(mod1, newdata = data.frame, re.form = NA)  
}
df.predicted$ml.value <- predict.fun(mod1)


glmer.boots <- bootMer(mod1, predict.fun, nsim = 200) 
df.predicted <- cbind(df.predicted, confint(glmer.boots)) 
df.predicted
Das war mein Versuch, aber ich bekomme bereits bei "df.predicted$ml.value <- predict.fun(mod1)" die Fehlermeldung "Error in eval(predvars, data, env) : object 'jahrestag.s' not found"

Ich bin absoluter Anfänger bei R und stark am Verzweifeln. Wie mach ich das Ganze richtig? Ich freue mich über jede Hilfe.
LG Liselotte

Re: Predicten mit bootMer

Verfasst: Mi Nov 27, 2019 8:38 pm
von EDi
Die Funktion "predict()" funktioniert nicht bei glmers
Wieso nicht?

Hier ein Beispiel:

Code: Alles auswählen

# for model
library(lme4)
# for plot
library(ggplot2)

# the data
ggplot(cbpp, aes(x = period, y = incidence/size)) +
  geom_point() +
  geom_line(aes(group = herd)) +
  facet_wrap(~herd)

# the model
gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
              data = cbpp, family = binomial)

# predict from that
pdat <- cbpp
pdat$fitted <- predict(gm1, type = 'response')

# plot it
ggplot(pdat, aes(x = period)) +
  geom_point(aes(y = incidence/size)) +
  geom_line(aes(y = incidence/size, group = herd)) +
  geom_point(aes(y = fitted), col = "red") +
  geom_line(aes(y = fitted, group = herd), col = "red") +
  facet_wrap(~herd)