Я хотел бы получить 95% доверительные интервалы на предсказаниях нелинейной смешанной nlme
модели. Поскольку для этого не предусмотрено ничего стандартного nlme
, мне хотелось бы знать, правильно ли использовать метод «интервалов прогнозирования населения», как описано в главе книги Бена Болкера в контексте моделей, подходящих с максимальной вероятностью , основанных на идее пересобрать параметры фиксированного эффекта на основе матрицы дисперсии-ковариации подобранной модели, смоделировать прогнозы на основе этого, а затем взять 95% -ный процентиль этих прогнозов, чтобы получить 95% доверительные интервалы?
Код для этого выглядит следующим образом: (здесь я использую данные «Loblolly» из nlme
файла справки)
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
Теперь, когда у меня есть пределы доверия, я создаю график:
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,])
Вот график с 95% доверительными интервалами, полученными таким образом:
Является ли этот подход допустимым, или существуют ли другие или более эффективные подходы для расчета 95% доверительных интервалов для прогнозов нелинейной смешанной модели? Я не совсем уверен, что делать со структурой случайных эффектов модели ... Следует ли усреднять, возможно, уровни случайных эффектов? Или было бы нормально иметь доверительные интервалы для среднего субъекта, которые, казалось бы, были ближе к тому, что у меня сейчас?