Eu gostaria de obter intervalos de confiança de 95% nas previsões de um nlme
modelo misto não linear . Como nada é fornecido para fazer isso dentro de nlme
mim, eu me perguntava se é correto usar o método de "intervalos de previsão da população", conforme descrito no capítulo do livro de Ben Bolker no contexto de modelos que se encaixam com a máxima probabilidade , com base na idéia de reamostrar parâmetros de efeito fixo com base na matriz de variância-covariância do modelo ajustado, simulando previsões com base nisso e, em seguida, utilizando os percentis 95% dessas previsões para obter os intervalos de confiança de 95%?
O código para fazer isso é o seguinte: (aqui eu uso os dados 'Loblolly' do nlme
arquivo de ajuda)
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
Agora que tenho meus limites de confiança, crio um 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,])
Aqui está o gráfico com os intervalos de confiança de 95% obtidos desta maneira:
Essa abordagem é válida ou existem outras ou melhores abordagens para calcular intervalos de confiança de 95% nas previsões de um modelo misto não linear? Não tenho muita certeza de como lidar com a estrutura de efeitos aleatórios do modelo ... Deveria se calcular uma média talvez acima dos níveis de efeitos aleatórios? Ou seria bom ter intervalos de confiança para um sujeito comum, o que pareceria estar mais próximo do que tenho agora?
fonte
Respostas:
O que você fez aqui parece razoável. A resposta curta é que, na maioria das vezes, as questões de previsão de intervalos de confiança de modelos mistos e não lineares são mais ou menos ortogonais , ou seja, você precisa se preocupar com os dois conjuntos de problemas, mas eles não (que eu saiba de) interagir de qualquer maneira estranha.
Ao longo do tempo, assumirei que você está prevendo no nível da população e construindo intervalos de confiança como o nível da população - em outras palavras, você está tentando traçar os valores previstos de um grupo típico , e não incluindo a variação entre grupos na sua confiança. intervalos. Isso simplifica os problemas do modelo misto. Os seguintes gráficos comparam três abordagens (veja abaixo para despejo de código):
Também poderíamos fazer bootstrapping paramétrico ...
Aqui estão os ICs plotados junto com os dados ...
... mas mal podemos ver as diferenças.
Aumentar o zoom subtraindo os valores previstos (método vermelho = autoinicialização, azul = PPI, ciano = delta)
Nesse caso, os intervalos de inicialização são realmente mais estreitos (por exemplo, presumivelmente, as distribuições de amostragem dos parâmetros são na verdade ligeiramente mais finas que o normal), enquanto os intervalos de PPI e método delta são muito semelhantes entre si.
fonte