Je souhaiterais obtenir des intervalles de confiance à 95% sur les prédictions d'un nlme
modèle mixte non linéaire . Étant donné que rien de standard n'est fourni pour le faire à l'intérieur nlme
, je me demandais s'il était correct d'utiliser la méthode des "intervalles de prédiction de population", comme indiqué dans le chapitre du livre de Ben Bolker dans le contexte de modèles ajustés avec une probabilité maximale , basée sur l'idée de rééchantillonner les paramètres d'effets fixes sur la base de la matrice variance-covariance du modèle ajusté, simuler des prédictions basées sur cela, puis prendre les 95% des centiles de ces prédictions pour obtenir les intervalles de confiance à 95%?
Le code pour ce faire ressemble à ceci: (J'utilise ici les données 'Loblolly' du nlme
fichier d'aide)
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
Maintenant que j'ai mes limites de confiance, je crée un graphique:
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,])
Voici l'intrigue avec les intervalles de confiance à 95% obtenus de cette façon:
Cette approche est-elle valide ou existe-t-il d'autres ou de meilleures approches pour calculer des intervalles de confiance à 95% sur les prédictions d'un modèle mixte non linéaire? Je ne suis pas tout à fait sûr de savoir comment gérer la structure à effet aléatoire du modèle ... Faut-il peut-être faire une moyenne sur les niveaux d'effet aléatoire? Ou serait-il OK d'avoir des intervalles de confiance pour un sujet moyen, ce qui semble être plus proche de ce que j'ai maintenant?
la source
Réponses:
Ce que vous avez fait ici semble raisonnable. La réponse courte est que, pour la plupart, les problèmes de prédiction des intervalles de confiance à partir de modèles mixtes et de modèles non linéaires sont plus ou moins orthogonaux , c'est-à-dire que vous devez vous soucier des deux ensembles de problèmes, mais ils ne le font pas (ce que je sais de) interagir de manière étrange.
Tout au long, je suppose que vous prédisez au niveau de la population et construisez des intervalles de confiance en tant que niveau de la population - en d'autres termes, vous essayez de tracer les valeurs prédites d'un groupe typique , et n'incluez pas la variation entre les groupes de votre confiance intervalles. Cela simplifie les problèmes de modèle mixte. Les graphiques suivants comparent trois approches (voir ci-dessous pour le vidage de code):
On pourrait aussi faire du bootstrap paramétrique ...
Voici les CI tracés avec les données ...
... mais nous pouvons à peine voir les différences.
Zoom avant en soustrayant les valeurs prévues (rouge = bootstrap, bleu = PPI, cyan = méthode delta)
Dans ce cas, les intervalles de bootstrap sont en fait les plus étroits (par exemple, vraisemblablement, les distributions d'échantillonnage des paramètres sont en fait légèrement plus minces que Normal), tandis que les intervalles PPI et delta-method sont très similaires les uns aux autres.
la source