Я хотел бы получить 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% доверительных интервалов для прогнозов нелинейной смешанной модели? Я не совсем уверен, что делать со структурой случайных эффектов модели ... Следует ли усреднять, возможно, уровни случайных эффектов? Или было бы нормально иметь доверительные интервалы для среднего субъекта, которые, казалось бы, были ближе к тому, что у меня сейчас?
источник
Ответы:
То, что вы сделали здесь, выглядит разумным. Короткий ответ заключается в том, что по большей части проблемы прогнозирования доверительных интервалов из смешанных моделей и из нелинейных моделей являются более или менее ортогональными , то есть вам нужно беспокоиться об обоих наборах проблем, но они этого не делают (я знаю о) взаимодействовать любым странным образом.
Везде, я буду предполагать, что вы прогнозируете на уровне населения и строите доверительные интервалы как уровень населения - другими словами, вы пытаетесь построить прогнозируемые значения типичной группы, не включая различия между группами в своей уверенности интервалы. Это упрощает проблемы смешанной модели. На следующих графиках сравниваются три подхода (см. Ниже дамп кода):
Мы могли бы также сделать параметрическую загрузку ...
Вот графики, нанесенные вместе с данными ...
... но мы вряд ли можем увидеть различия.
Увеличение масштаба путем вычитания прогнозируемых значений (красный = начальная загрузка, синий = ИЦП, голубой = дельта-метод)
В этом случае интервалы начальной загрузки на самом деле самые узкие (например, предположительно, распределения выборки параметров на самом деле немного тоньше, чем нормальные), в то время как интервалы PPI и дельта-метода очень похожи друг на друга.
источник