Poiché la funzione tsplot
non fornisce un modo per impostare direttamente i valori della barra di errore o per modificare il metodo utilizzato per calcolarli, l'unica soluzione che ho trovato è stata la patch di scimmia il modulo timeseries
:
import seaborn.timeseries
def _plot_std_bars(*args, central_data=None, ci=None, data=None, **kwargs):
std = data.std(axis=0)
ci = np.asarray((central_data - std, central_data + std))
kwargs.update({"central_data": central_data, "ci": ci, "data": data})
seaborn.timeseries._plot_ci_bars(*args, **kwargs)
def _plot_std_band(*args, central_data=None, ci=None, data=None, **kwargs):
std = data.std(axis=0)
ci = np.asarray((central_data - std, central_data + std))
kwargs.update({"central_data": central_data, "ci": ci, "data": data})
seaborn.timeseries._plot_ci_band(*args, **kwargs)
seaborn.timeseries._plot_std_bars = _plot_std_bars
seaborn.timeseries._plot_std_band = _plot_std_band
Poi, per tracciare con le barre di errore deviazione standard utilizzano
ax = sns.tsplot(data, err_style="std_bars", n_boot=0)
o
ax = sns.tsplot(data, err_style="std_band", n_boot=0)
per tracciare con una banda di deviazione standard.
Edit: Ispirato da this answer su SO, un altro approccio (probabilmente più sensibile) sarebbe quella di utilizzare il seguente invece di tsplot
:
import pandas as pd
import seaborn as sns
df = pd.DataFrame.from_dict({
"mean": data.mean(axis=0),
"std": data.std(axis=0)
}).reset_index()
g = sns.FacetGrid(df, size=6)
ax = g.map(plt.errorbar, "index", "mean", "std")
ax.set(xlabel="", ylabel="")
Edit2: Dal momento che hai chiesto su come tsplot
calcola i propri intervalli di confidenza: si utilizza bootstrapping to estimate the distribution of the mean value in ciascun punto temporale e quindi trova i valori percentile alto e basso (che corrispondono all'intervallo di confidenza utilizzato) da queste distribuzioni. L'intervallo di confidenza predefinito è del 68% - equivalente a ± una deviazione standard della media, assumendo la distribuzione normale. I rispettivi percentili bassi e alti sono il 16% e l'84%. È possibile modificare l'intervallo di confidenza tramite l'argomento della parola chiave ci
.
Eventuali duplicati di [ Come vengono calcolate le "bande di errore" in Seaborn tsplot?] (Http://stackoverflow.com/questions/29481134/how-are-the-error-bands-in-seaborn-tsplot-calculated) – mwaskom
@mwaskom: my additio la domanda nale è come tracciare barre o bande in '' tsplot'' che riflettono la deviazione standard, non l'errore standard di media o una stima di bootstrap. È possibile? per i miei dati i bootstrap sono troppo stretti e stdev è una rappresentazione migliore – lgd