Ich möchte 95% -Konfidenzintervalle für die Vorhersagen eines nichtlinearen gemischten nlme
Modells erhalten. Da dies innerhalb von nichts Standardmäßigem vorgesehen ist, habe nlme
ich mich gefragt, ob es richtig ist, die Methode der "Bevölkerungsvorhersageintervalle" zu verwenden, die in Ben Bolkers Buchkapitel im Kontext von Modellen beschrieben wird , die auf der Idee von mit maximaler Wahrscheinlichkeit passen Resampling von festen Effektparametern basierend auf der Varianz-Kovarianz-Matrix des angepassten Modells, Simulation von darauf basierenden Vorhersagen und anschließende Ermittlung der 95% -Perzentile dieser Vorhersagen, um die 95% -Konfidenzintervalle zu erhalten?
Der Code dafür sieht folgendermaßen aus: (Ich verwende hier die 'Loblolly'-Daten aus der nlme
Hilfedatei.)
library(effects)
library(nlme)
library(MASS)
fm1 <- nlme(height ~ SSasymp(age, Asym, R0, lrc),
data = Loblolly,
fixed = Asym + R0 + lrc ~ 1,
random = Asym ~ 1,
start = c(Asym = 103, R0 = -8.5, lrc = -3.3))
xvals=seq(min(Loblolly$age),max(Loblolly$age),length.out=100)
nresamp=1000
pars.picked = mvrnorm(nresamp, mu = fixef(fm1), Sigma = vcov(fm1)) # pick new parameter values by sampling from multivariate normal distribution based on fit
yvals = matrix(0, nrow = nresamp, ncol = length(xvals))
for (i in 1:nresamp)
{
yvals[i,] = sapply(xvals,function (x) SSasymp(x,pars.picked[i,1], pars.picked[i,2], pars.picked[i,3]))
}
quant = function(col) quantile(col, c(0.025,0.975)) # 95% percentiles
conflims = apply(yvals,2,quant) # 95% confidence intervals
Jetzt, da ich meine Vertrauensgrenzen habe, erstelle ich ein Diagramm:
meany = sapply(xvals,function (x) SSasymp(x,fixef(fm1)[[1]], fixef(fm1)[[2]], fixef(fm1)[[3]]))
par(cex.axis = 2.0, cex.lab=2.0)
plot(0, type='n', xlim=c(3,25), ylim=c(0,65), axes=F, xlab="age", ylab="height");
axis(1, at=c(3,1:5 * 5), labels=c(3,1:5 * 5))
axis(2, at=0:6 * 10, labels=0:6 * 10)
for(i in 1:14)
{
data = subset(Loblolly, Loblolly$Seed == unique(Loblolly$Seed)[i])
lines(data$age, data$height, col = "red", lty=3)
}
lines(xvals,meany, lwd=3)
lines(xvals,conflims[1,])
lines(xvals,conflims[2,])
Hier ist die grafische Darstellung mit den so erhaltenen 95% -Konfidenzintervallen:
Ist dieser Ansatz gültig, oder gibt es andere oder bessere Ansätze, um 95% -Konfidenzintervalle für die Vorhersagen eines nichtlinearen gemischten Modells zu berechnen? Ich bin mir nicht ganz sicher, wie ich mit der zufälligen Effektstruktur des Modells umgehen soll ... Sollte man vielleicht über zufällige Effektniveaus mitteln? Oder wäre es in Ordnung, Konfidenzintervalle für ein durchschnittliches Thema zu haben, die näher an dem zu liegen scheinen, was ich jetzt habe?