Verwendung von PyMC3 zur Durchführung der Bayesschen linearen Regression. Ich habe mein Modell gebaut, und ich möchte das posterior für neue X-Werte mit dem gleichen Modell vorhersagen. Ich habe versucht, den Anweisungen auf der Dokumentationswebsite zu folgen: https://pymc-devs.github.io/pymc3/notebooks/posterior_predictive.html (siehe Vorhersage). Dazu müssen Sie Ihre X-Werte vor der Analyse zu einer gemeinsam genutzten Variablen machen und dann die Werte nach dem Modellaufbau ändern und run_ppc()
ausführen. Ich habe als Beispiel 200 schnelle Iterationen durchgeführt (ich würde viel mehr für die eigentliche Analyse laufen).Prädiktion posterior für neue Daten in der Bayesschen linearen Regression mit 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)
Aber ich erhalte den folgenden Fehler:
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'
Bemerkenswert ist, wenn ich die patsy Notation versio verwenden n, ohne die Variablen zu ändern, taucht dieser Fehler nicht auf, aber ich weiß nicht, wie das Format patsy eine gemeinsame Variable annehmen würde. Also würde eine Lösung entweder meine Fehlermeldung adressieren oder zeigen, wie man eine gemeinsam genutzte Variable in die patsy Version des Modells einführt. Vielen Dank!
Ich kann Ihren Fehler nicht reproduzieren. Ich bemerke, dass Ihr Modellname 'basic_model' ist, aber dann verwenden Sie' ppc = pm.sample_ppc (trace, model = model, samples = 100) '. Mischen Sie nicht nur Variablen? (wahrscheinlich, weil Sie mit einem Jupyter-Notebook arbeiten). – aloctavodia
Wow, das hat mein Problem gelöst. Danke, dass du dir die Zeit genommen hast, es anzuschauen, manchmal hilft es, noch einen Blick zu haben! –