Nel solito modo:
p <- predict(mod, newdata, type = "link", se.fit = TRUE)
Quindi nota che p
contiene un componente $se.fit
con errori standard delle previsioni per le osservazioni in newdata
. È quindi possibile formare CI moltiplicando SE per un valore adeguato al livello desiderato. Ad esempio un intervallo di confidenza approssimativo del 95% è formato come:
upr <- p$fit + (2 * p$se.fit)
lwr <- p$fit - (2 * p$se.fit)
Si sostituisce a un valore appropriato da un o distribuzione gaussiana per l'intervallo si ha bisogno.t
Nota che uso type = "link"
come non dici se hai un GAM o solo un AM. Nel GAM, è necessario formare l'intervallo di confidenza sulla scala del predittore lineare e quindi trasformarlo nella scala della risposta applicando l'inverso della funzione di collegamento:
upr <- mod$family$linkinv(upr)
lwr <- mod$family$linkinv(lwr)
Ora noti che questi sono intervalli molto approssimativi. Inoltre, questi intervalli sono puntuali sui valori previsti e non tengono conto del fatto che è stata eseguita la selezione della scorrevolezza.
Un intervallo di confidenza simultaneo può essere calcolato tramite simulazione dalla distribuzione posteriore dei parametri. Ne ho un esempio sul mio blog .
Se si desidera un intervallo di confidenza non subordinato ai parametri di livellamento (ovvero uno che tenga conto del fatto che non conosciamo, ma piuttosto stimiamo i valori dei parametri di levigatezza), quindi aggiungere unconditional = TRUE
alla predict()
chiamata.
Inoltre, se non vuoi farlo tu stesso, nota che le versioni più recenti di mgcv hanno una plot.gam()
funzione che restituisce un oggetto con tutti i dati usati per creare i grafici degli smooth e i loro intervalli di confidenza. Puoi semplicemente salvare l'output da plot.gam()
in un oggetto
obj <- plot(model, ....)
e quindi ispezionare obj
, che è un elenco con un componente per smooth. Aggiungi seWithMean = TRUE
alla plot()
chiamata per ottenere intervalli di confidenza che non sono condizionati dal parametro smoothness.