Остаточные диагностические участки - PullRequest
0 голосов
/ 06 ноября 2019

Итак, я пытаюсь написать функцию, которая строит диагностику остатков - plot, histogram, qq и acf

Я следую функции plot_diagnostic() в python, однако я хотел добавить некоторые штрихи

Я не знаю, как добавить к гистограмме KDE и нормальное распределение N (0, 1) - могу ли я обратиться за помощью?

Код внизу:


import seaborn as sns
import statsmodels.tsa.api as smt
import matplotlib.pyplot as plt
import statsmodels.graphics.gofplots as sgg
from scipy.stats import gaussian_kde, norm
def tsplot_resid(y, lags=None, title="Graf časové řady", legend = True, figsize=(14, 9), lw = 8):

    y = y.iloc[0:, 0]
    #Original source: https://tomaugspurger.github.io/modern-7-timeseries.html

    fig = plt.figure(figsize=figsize)
    layout = (2, 2)
    ts_ax   = plt.subplot2grid(layout, (0, 0))
    hist_ax = plt.subplot2grid(layout, (0, 1))
    acf_ax  = plt.subplot2grid(layout, (1, 1))
    qq_ax = plt.subplot2grid(layout, (1, 0))
    y.plot(ax=ts_ax, grid = True, legend = True)
    ts_ax.axhline(y=0, color='r', linewidth=3, alpha = 0.75) 
    ts_ax.set_title(title)
    # ts_ax.set_xlim([dt.datetime(1949, 1, 1), dt.datetime(1960, 1, 1)])
    ts_ax.set_xlabel("Roky")
    ts_ax.set_ylabel("Hodnoty")
    ts_ax.tick_params(axis = 'x', rotation = 45);
    ts_ax.tick_params(labelsize = 15);

    y.plot(ax=hist_ax, kind='hist', bins=8, grid = True, legend = True, edgecolor = "w");
    hist_ax.set_title('Histogram')
    hist_ax.set_xlabel("Hodnoty")
    hist_ax.set_ylabel("Frekvence")

    # ADD KDE AND NORMAL DISTRIBUTION


    smt.graphics.plot_acf(y.dropna(), lags=lags, ax=acf_ax, );
    sgg.qqplot(y.dropna(), ax=qq_ax, line = "s");

    acf_ax.set_title("ACF")
    acf_ax.grid()
    acf_ax.set_xlabel("Zpoždění")

    qq_ax.set_title("QQ-plot")
    qq_ax.grid()
    qq_ax.set_xlabel("Zpoždění")
    qq_ax.set_ylabel("")
    [ax.set_xlim(-1) 

     for ax in [acf_ax]]
    sns.despine()
    plt.tight_layout()
    return ts_ax, acf_ax, qq_ax

...