In che modo ggplot calcola gli intervalli di confidenza per le regressioni?


15

Il pacchetto di stampa R ggplot2 ha una fantastica funzione chiamata stat_smooth per tracciare una linea (o curva) di regressione con la banda di confidenza associata.

Tuttavia, faccio fatica a capire esattamente come viene generata questa banda di confidenza, per ogni volta della linea di regressione (o "metodo"). Come posso trovare queste informazioni?


2
Vedi la sezione intitolata "Dettagli" nel tuo link.
Stéphane Laurent,

1
@ StéphaneLaurent: ho letto quella sezione, ma ho ancora problemi a collegare i punti. Uso il metodo "rlm" per adattare una linea, come viene calcolato l'intervallo di confidenza (matematicamente, quale equazione / algoritmo?)? Come posso trovare queste informazioni?
static_rtti,

1
Quindi penso che dovresti fare una domanda più precisa.
Stéphane Laurent,

1
Penso che la tua domanda sia ragionevolmente precisa ... ma sospetto che non otterrai una risposta qui. Potresti avere più fortuna con il gruppo google ggplot2: groups.google.com/forum/?fromgroups#!forum/ggplot2
russellpierce

Risposte:


22

Dalla Detailssezione dell'aiuto

Il calcolo viene eseguito dalla funzione generica predictdf (attualmente non documentata) e dai suoi metodi. Per la maggior parte dei metodi i limiti di confidenza sono calcolati usando il metodo predict - le eccezioni sono loess che utilizza un'approssimazione basata su t, e per glm in cui l'intervallo di confidenza normale è costruito sulla scala del collegamento, e quindi trasformato indietro nella scala di risposta.

Quindi predictdf chiamerà generalmente stats::predict, che a sua volta chiamerà il predictmetodo corretto per il metodo di smoothing. Altre funzioni che coinvolgono stat_smooth sono anche utili da considerare.

La maggior parte delle funzioni di adattamento del modello avrà un predictmetodo associato classal modello. Questi di solito richiedono un newdataoggetto e un argomento se.fitche indicano se verranno inseriti gli errori standard. (vedi ?predict) per ulteriori dettagli.

se
visualizzare l'intervallo di confidenza intorno liscio? (TRUE per impostazione predefinita, vedere il livello da controllare

Questo viene passato direttamente al metodo predict per restituire gli errori standard appropriati (dipendenti dal metodo)

fullrange
se l'adattamento copre l'intera gamma della trama, o solo i dati

Questo definisce i newdatavalori per i xquali verranno valutate le previsioni

level livello di intervallo di confidenza da utilizzare (0,95 per impostazione predefinita)

Passato direttamente al metodo predict in modo che l'intervallo di confidenza possa definire il valore critico appropriato (ad es. predict.lmUsi qt((1 - level)/2, df)per gli errori standard da moltiplicare per

n numero di punti su cui valutare più agevolmente

Utilizzato insieme a fullrangeper definire i xvalori newdatanell'oggetto.

All'interno di una chiamata stat_smoothè possibile definire sequale è parzialmente abbinato a se.fit(o se) e, intervalse necessario , definirà l' argomento. levelfornirà il livello dell'intervallo di confidenza (valori predefiniti 0,95).

L' newdataoggetto viene definito all'interno dell'elaborazione, in base all'impostazione di fullrangeuna sequenza di lunghezza nnell'intero intervallo del grafico o dei dati.

Nel tuo caso, usando rlm, questo utilizzerà predict.rlm, che è definito come

predict.rlm <- function (object, newdata = NULL, scale = NULL, ...)
{
    ## problems with using predict.lm are the scale and
    ## the QR decomp which has been done on down-weighted values.
    object$qr <- qr(sqrt(object$weights) * object$x)
        predict.lm(object, newdata = newdata, scale = object$s, ...)
}

Quindi chiama internamente predict.lmcon un adeguato ridimensionamento della qrdecomposizione e scaledell'argomento.


... e predict.rlm è nascosto all'interno di MASS ... e la chiamata a predictdf passa gli argomenti model, xseq, se e level a predict.rlm ... ma da dove provengono questi valori? Beh, immagino che dipenda da cosa succede quando gli argomenti vengono passati da stat_smooth a StatSmooth $ new ... che poi a sua volta chiama ...
russellpierce,

1
Il mio punto è che la tua risposta è un passo nella giusta direzione, ma rispondere completamente alla domanda dei PO non è così banale come sembra inizialmente (anche se ci si aspetta che il codice si comporti in modo sensato ... uno non è sicuro a meno che non lo si rintracci completamente) )
russellpierce,

2
Ci si aspetta che il codice si comporti in modo sensato, se il predictmetodo è stato impostato in modo standard. Ho modificato la mia risposta per risolvere i problemi sollevati nel tuo primo commento.
mnel

@mnel: molte grazie per questa risposta molto dettagliata e utile!
static_rtti,
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.