PyMC3を使用してベイジアン線形回帰を実行する。私はモデルを作りました。同じモデルを使って新しいX値の事後を予測したいのです。私はドキュメントのWebサイト:https://pymc-devs.github.io/pymc3/notebooks/posterior_predictive.html(「予測」を参照)の指示に従っています。これには分析の前にX値をtheano変数にしてから、モデル構築後の値を変更してrun_ppc()
を実行します。私は例としてちょうど200反復を実行しました(私は実際の分析のためにもっと多くを実行します)。PyMC3を使用してベイジアン線形回帰における新しいデータの事後を予測する
X1_shared = theano.shared(final_df['poll_diff'].values)
Y1 = final_df['rd_diff'].values
basic_model = pm.Model()
with basic_model:
# Priors for unknown model parameters
sigma = HalfCauchy('sigma', beta=10, testval=1.)
intercept = Normal('Intercept', 0, sd=20)
x_coeff = Normal('x', 0, sd=20)
# Define likelihood
likelihood = Normal('y', mu=intercept + x_coeff * X1_shared,
sd=sigma, observed= Y1)
#start = find_MAP()
start = find_MAP() # Find starting value by optimization
step = NUTS(scaling=start) # Instantiate MCMC sampling algorithm
trace = sample(200, step, start=start)
pm.traceplot(trace)
plt.show()
sns.lmplot(x="poll_diff", y="rd_diff", data=final_df, size=10)
x = np.array(range(-1, 2))
pm.glm.plot_posterior_predictive(trace, samples=100, eval=x)
plt.show()
X1_shared.set_value(ana_2016_df['poll_diff'].values)
ppc = pm.sample_ppc(trace, model=model, samples=100)
しかし、私は次のエラーを取得する:特に
AttributeError Traceback (most recent call last)
<ipython-input-73-9c1eb48d987f> in <module>()
----> 1 ppc = pm.sample_ppc(trace, model=model, samples=100)
C:\Users\W\Anaconda3\lib\site-packages\pymc3\sampling.py in sample_ppc(trace, samples, model, vars, size, random_seed)
349
350 if vars is None:
--> 351 vars = model.observed_RVs
352
353 seed(random_seed)
AttributeError: module 'pymc3.model' has no attribute 'observed_RVs'
、私はパッツィ表記版ãを使用する場合変数を変更せずにこのエラーはポップアップしませんが、patsy形式がどのようにtheano共有変数を受け入れるかはわかりません。だから、解決策は私のエラーメッセージに対処するか、モデルのpatsyバージョンにtheano共有変数を導入する方法を示します。ありがとう!
です。エラーを再現できません。モデル名は 'basic_model'ですが、' ppc = pm.sample_ppc(trace、model = model、samples = 100) 'を使用します。あなたは単に変数をミックスしていませんか? (おそらくあなたがJupyterノートブックで作業しているためです)。 – aloctavodia
うわー、それは私の問題を解決しました。それを見る時間をとってくれてありがとう、時には別の目を持つことに役立ちます! –