Предиктивный прогноз GLM не строится по всему диапазону данных - PullRequest
0 голосов
/ 05 апреля 2020

[I] [1] Я не могу понять, почему прогнозирующий glm апостериор строится не по всем данным, а только по их части. И, кажется, нет никаких параметров, которые могут изменить их. Это код, который генерирует следующие проблемные c сюжет.

    plt.figure(figsize=(7, 7))
    x = np.linspace(0,10,30)
    y = x + np.random.normal(2,0.6,len(x))
    plt.scatter(x,y)
    data = dict(x=x, y=y)

    with pm.Model() as model:
        pm.glm.GLM.from_formula('y ~ x', data)
        trace = pm.sample(1000)
    plt.plot(x, y, 'x', label='data')
    pm.plot_posterior_predictive_glm(trace, samples=100,label='posterior predictive 
    regression lines')
    plt.plot(x, trace['Intercept'].mean() + trace['x'].mean()*x, label='true regression 
    line', lw=3., c='y')

    plt.title('Posterior predictive regression lines')
    plt.legend(loc=0)
    plt.xlabel('x')
    plt.ylabel('y');

https://i.stack.imgur.com/2NLtP.png

1 Ответ

0 голосов
/ 06 апреля 2020

Глядя на исходный код plot_posterior_predictive_glm значения по умолчанию для оси x находятся в диапазоне от 0 до 1. Вы можете изменить это, вызвав функцию следующим образом:

pm.plot_posterior_predictive_glm(trace,samples=100,eval=x,
                                 label='posterior predictive regression lines')

Запуск вашего Код с вышеуказанной модификацией получаю следующий сюжет:

enter image description here

...