Intervallo di confidenza per il modello GAM


14

Lettura mgcv::gamdella pagina di aiuto:

intervalli di confidenza / credibilità sono prontamente disponibili per qualsiasi quantità prevista utilizzando un modello montato

Tuttavia, non riesco a trovare un modo per ottenerne effettivamente uno. Ho pensato che predict.gamavrebbe un type=confidencee un levelparametro, ma non lo è. Potete aiutarmi su come crearlo?

Risposte:


33

Nel solito modo:

p <- predict(mod, newdata, type = "link", se.fit = TRUE)

Quindi nota che pcontiene un componente $se.fitcon 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 = TRUEalla 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 = TRUEalla plot()chiamata per ottenere intervalli di confidenza che non sono condizionati dal parametro smoothness.


Fare il CI simultaneo e il bootstrap parametrico diventa un po 'più coinvolto con il codice, quindi se riesci a cavartela semplicemente con gli intervalli puntuali. Altrimenti posso fornire ulteriori esempi per ognuno di questi.
Ripristina Monica - G. Simpson il

+1 per la risposta. Post di blog davvero impressionanti, lo studierò per un po 'per migliorare le mie capacità grafiche.
jbowman,

In che modo potrei avere accesso a quell'impressionante post sul blog ( ucfagls.wordpress.com/2011/06/12/… )? Attualmente il blog richiede un login.
geneorama,

@geneorama Ho spostato il mio blog da Wordpress e per un anno ho pagato i reindirizzamenti a quello nuovo per tutti gli URL, ma di recente ho lasciato perdere. Mi dispiace per quello. Ho modificato il nuovo link e questo non richiede un login. (Il login è per evitare due copie dello stesso post e sono stato ancora troppo pigro per eliminare le pagine dal sito Wordpress.)
Reinstalla Monica - G. Simpson,

Il post originale del blog (vedere la cronologia delle modifiche di questa Domande e risposte) presentava un difetto fondamentale nel modo in cui è stato creato l'intervallo simultaneo. Il collegamento nella versione corrente (a partire da dicembre 2016) della risposta calcola correttamente l'intervallo simultaneo.
Ripristina Monica - G. Simpson il

5

Se vuoi solo tracciarli, la plot.gamfunzione ha un'ombreggiatura che per impostazione predefinita viene impostata su intervalli di confidenza usando l'argomento ombra. Vedi anche gam.vcompper ottenere gli intervalli.


5

Il pacchetto mgcv(più recente di gam) traccia prontamente intervalli credibili. Questo approccio bayesiano è diverso dagli intervalli di confidenza, ma i risultati sono quasi gli stessi, come hanno dimostrato le simulazioni numeriche (vedi l' articolo di Marra e Wood collegati in mgcv).


2
1-α
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.