1

本でベイジアン推論を学んでいBayesian Analysis with Pythonます。ただし、を使用すると、警告が表示されましplot_ppcAttributeError

/usr/local/Caskroom/miniconda/base/envs/kaggle/lib/python3.9/site-packages/pymc3/sampling.py:1689: UserWarning: samples パラメータが nchains x ndraws よりも小さく、一部の描画および/またはチェーン返された事後予測サンプル warnings.warn(

モデルは

shift = pd.read_csv('../data/chemical_shifts.csv')

with pm.Model() as model_g:
    μ = pm.Uniform('μ', lower=40, upper=70)
    σ = pm.HalfNormal('σ', sd=10)
    y = pm.Normal('y', mu=μ, sd=σ, observed=shift)
    trace_g = pm.sample(1000, return_inferencedata=True)

次のコードを使用した場合

with model_g:
    y_pred_g = pm.sample_posterior_predictive(trace_g, 100, random_seed=123)
    data_ppc = az.from_pymc3(trace_g.posterior, posterior_predictive=y_pred_g) # 'Dataset' object has no attribute 'report'

「データセット」オブジェクトに属性「レポート」がありません。

次のコードを使用した場合

with model_g:
    y_pred_g = pm.sample_posterior_predictive(trace_g, 100, random_seed=123)
    data_ppc = az.from_pymc3(trace_g, posterior_predictive=y_pred_g) # AttributeError: 'InferenceData' object has no attribute 'report'

AttributeError: 'InferenceData' object has no attribute 'report' が発生しました。

ArviZ バージョン: 0.11.2 PyMC3 バージョン: 3.11.2 Aesara/Theano バージョン: 1.1.2 Python バージョン: 3.9.6 オペレーティング システム: MacOS Big Sur PyMC3 のインストール方法: conda

4

1 に答える 1

4

に渡しreturn_inferancedata=Trueています。PyMC3 のドキュメントpm.sample()によると、オブジェクトではなくオブジェクトが返されます。InferenceDataMultiTrace

return_inferencedatabool, default=False

    Whether to return the trace as an arviz.InferenceData (True) object or a MultiTrace (False) Defaults to False, but we’ll switch to True in an upcoming release.

ただし、このfrom_pymc3関数にはobjectMultiTrace必要です。

幸いなことに、 はオブジェクトをfrom_pymc3返すInferenceDataため、次の 2 つの方法のいずれかでこれを解決できます。

  1. from_pymc3最も簡単な解決策は、呼び出しを単純に削除するInferenceDataことreturn_inferencedata=Trueです。
  2. 設定return_inferencedata=Falseします (その引数を削除することもできますが、ドキュメントには、将来的にはデフォルトで になると記載されているTrueため、将来の証拠として明示的に に設定することをお勧めしますFalse)。MultiTraceこれはに渡すことができるa を返しfrom_pymc3ます。
于 2021-08-11T04:27:07.473 に答える