Da maneira usual:
p <- predict(mod, newdata, type = "link", se.fit = TRUE)
Observe que p
contém um componente $se.fit
com erros padrão das previsões para observações em newdata
. Você pode formar o IC multiplicando o SE por um valor apropriado ao seu nível desejado. Por exemplo, um intervalo de confiança aproximado de 95% é formado como:
upr <- p$fit + (2 * p$se.fit)
lwr <- p$fit - (2 * p$se.fit)
Você substitui em um valor apropriado de uma distribuição ou Gaussiana o intervalo necessário.t
Note que eu uso type = "link"
como você não diz se possui um GAM ou apenas um AM. No GAM, você precisa formar o intervalo de confiança na escala do preditor linear e transformá-lo na escala da resposta aplicando a inversa da função de link:
upr <- mod$family$linkinv(upr)
lwr <- mod$family$linkinv(lwr)
Agora observe que esses são intervalos muito aproximados. Além disso, esses intervalos são pontuais nos valores previstos e não levam em consideração o fato de que a seleção da suavidade foi realizada.
Um intervalo de confiança simultâneo pode ser calculado via simulação a partir da distribuição posterior dos parâmetros. Eu tenho um exemplo disso no meu blog .
Se você deseja um intervalo de confiança que não depende dos parâmetros de suavização (isto é, um que leva em consideração o que não conhecemos, mas sim estimar os valores dos parâmetros de suavidade), adicione unconditional = TRUE
-o à predict()
chamada.
Além disso, se você não quiser fazer isso sozinho, observe que as versões mais recentes do mgcv têm uma plot.gam()
função que retorna um objeto com todos os dados usados para criar os gráficos dos suaves e seus intervalos de confiança. Você pode salvar a saída plot.gam()
em um objeto
obj <- plot(model, ....)
e depois inspecione obj
, que é uma lista com um componente por suave. Adicione seWithMean = TRUE
à plot()
chamada para obter intervalos de confiança que não dependem do parâmetro de suavidade.