2015-06-28 24 views
19

Come si calcolano gli intervalli di confidenza per una regressione LOWESS in Python? Vorrei aggiungere questi come una regione ombreggiata alla trama LOESS creata con il seguente codice (altri pacchetti oltre a statsmodels vanno bene pure).Intervallo di confidenza per LOWESS in Python

import numpy as np 
import pylab as plt 
import statsmodels.api as sm 

x = np.linspace(0,2*np.pi,100) 
y = np.sin(x) + np.random.random(100) * 0.2 
lowess = sm.nonparametric.lowess(y, x, frac=0.1) 

plt.plot(x, y, '+') 
plt.plot(lowess[:, 0], lowess[:, 1]) 
plt.show() 

Ho aggiunto una trama esempio con intervallo di confidenza al di sotto della webblog Serious Stats (viene creata usando ggplot in R).

enter image description here

+0

statsmodels lowess non calcola gli errori standard. – user333700

+5

Motivo molto migliore per porre la domanda ... – Thriveth

+0

questa è una domanda più adatta per http://stats.stackexchange.com/ –

risposta

7

LOESS non ha un concetto esplicito per errore standard. Non significa niente in questo contesto. Dal momento che è fuori, sei bloccato con l'approccio della forza bruta.

Bootstrap i tuoi dati. Stai andando ad adattare una curva LOESS ai dati bootstrap. Vedi la parte centrale di questa pagina per trovare una bella immagine di ciò che stai facendo. http://statweb.stanford.edu/~susan/courses/s208/node20.html

enter image description here

Una volta ottenuto il gran numero di diverse curve LOESS, è possibile trovare la parte superiore e inferiore percentile X.

enter image description here