Me gustaría obtener el 95% de intervalos de confianza en las predicciones de un no-lineal mixto nlme
modelo. Como nada estándar se proporciona para ello, dentro de nlme
, me pregunto si es correcto usar el método de "población intervalos de predicción", como se describe en Ben Bolker del capítulo del libro en el contexto de los modelos de ajuste con la máxima probabilidad, basado en la idea de repetición de muestreo de los parámetros de efecto fijo basado en la varianza-covarianza de la matriz del modelo ajustado, la simulación de las predicciones basadas en el este, y luego tomar el 95% de los percentiles de estas predicciones para obtener el 95% los intervalos de confianza?
El código para hacer esto se ve de la siguiente manera :
(He aquí el uso de la 'Incienso' datos de la nlme
archivo de ayuda)
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
Ahora que tengo mi límites de confianza puedo crear un gráfico:
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,])
Aquí está la parcela con el 95% de intervalos de confianza obtenidos de esta manera:
Es este enfoque válido, o hay alguna otra o de mejores métodos para calcular el 95% de intervalos de confianza en las predicciones de una relación no lineal modelo mixto? No estoy del todo seguro de cómo lidiar con el efecto aleatorio estructura de modelo... en caso de un promedio de quizás más de efecto aleatorio de los niveles? O sería ACEPTAR para que los intervalos de confianza para una media de tema, que parece estar más cerca de lo que tengo ahora?