2015-11-03 17 views
14

Qualcuno sa come visualizzare l'equazione di regressione in seaborn usando sns.regplot o sns.jointplot? regplot non sembra avere alcun parametro che può essere passato per visualizzare la diagnostica di regressione, e jointplot mostra solo pearson R^2 e p-value. Sto cercando un modo per vedere il coefficiente di pendenza, errore standard e intercettazione pure.Equazione di regressione del display in regplot seaborn

Grazie

+1

Penso che dovrai fare tu stesso la regressione per ottenere quelle informazioni. –

+0

Sì, e aggiungilo con 'ax.text'. – mwaskom

+3

Chiaramente le informazioni dovrebbero essere da qualche parte da quando viene tracciata una linea – user391339

risposta

2

Una risposta tardiva e parziale. ho avuto il problema di che vogliono semplicemente per ottenere i dati della linea di regressione e ho trovato questo:

Quando si dispone di questa trama:

f = mp.figure() 
ax = f.add_subplot(1,1,1) 
p = sns.regplot(x=dat.x,y=ydat,data=dat,ax=ax) 

Poi p ha un metodo get_lines(), che restituisce un elenco di line2D oggetti. E un oggetto line2D ha metodi per ottenere i dati desiderati:

Quindi, per ottenere i dati di regressione lineare in questo esempio, è solo bisogno di fare questo:

p.get_lines()[0].get_xdata() 
p.get_lines()[0].get_ydata() 

Quelle chiamate di ritorno ciascuno un numpy serie del punti dati della linea di regressione che è possibile utilizzare liberamente.

Utilizzando p.get_children() si ottiene un elenco dei singoli elementi della trama.

Le informazioni sul percorso della trama intervallo di confidenza può essere trovato con:

p.get_children()[1].get_paths() 

E 'in forma di tuple di punti di dati.

Generalmente si può trovare molto usando il comando dir() su qualsiasi oggetto Python, mostra solo tutto ciò che è lì dentro.

+2

Questo non produce direttamente l'equazione desiderata; desiderato è la pendenza e l'intercettazione della linea di regressione. cioè a e b per y = ax + b. Tuttavia, per ottenere questo si potrebbe usare 'scipy's' stats.linregress': 'slope, intercetta, r_value, p_value, std_err = scipy.stats.linregress (x = p.get_lines() [0] .get_xdata(), y = p.get_lines() [0] .get_ydata()) ' – ijoseph

+0

L'equazione può essere facilmente calcolata usando le coordinate (x, y) di due punti. Con due punti puoi calcolare a e con quello b. – Khris

+3

@Khris ok ma quanto è strano che ci sia un software che calcola una regressione, ti fornisce il coefficiente di correlazione e il valore p del modello risultante e non fornisce il modello stesso? Sarebbe bello se gli autori di Seaborn potessero aggiungere questa caratteristica, – famargar

2

Nel 2015, il capo sviluppatore per Seaborn ha risposto alla richiesta di funzionalità per chiedere l'accesso ai valori statistici utilizzati per generare trame dicendo, "It is not available, and it will not be made available."

Così, purtroppo, questa funzione non esiste in Seaborn, e sembra improbabile che esista in futuro.

Problemi correlati