在 Google 的合作实验室中,安装了 arviz 然后导入 arviz 时没有出现错误,但在代码单元中,pm.plot_posterior(samples) 出现错误:未安装 arviz。
尝试绘制贝叶斯代码
pm.plot_posterior(samples)
我期待一个情节
你的问题可能是由于 PyMC 和 ArviZ 的集成不正常导致的。尽管 ArviZ 安装正确,但在使用 PyMC 时,它可能没有正确关联或被识别。以下是可能的解决方案:
PyMC 依赖 ArviZ 来绘制后验分布。确保你安装的 PyMC 和 ArviZ 是兼容的:
print(f”ArviZ version: {az.version}”) print(f”PyMC version: {pm.version}”) ```
使用最新版本的 PyMC 和 ArviZ 通常是最佳选择。
如果需要更新版本: sh !pip install --upgrade pymc arviz
sh !pip install --upgrade pymc arviz
PyMC 需要显式导入 ArviZ。尝试在绘图代码之前加上以下行:
import arviz as az
如果问题仍然存在,可以设置 PyMC 使用 ArviZ 的配置:
pm.set_arviz_backend("arviz")
samples
确保 samples 是 ArviZ 支持的数据格式,比如 InferenceData 或可转换的 Pandas DataFrame、字典等。
如果 samples 是 PyMC 生成的 trace 数据,转换为 ArviZ 的 InferenceData 格式后再绘图:
InferenceData
inference_data = pm.sample_posterior_predictive(trace, model=model) pm.plot_posterior(inference_data)
如果问题仍未解决,可以直接使用 ArviZ 绘制:
import arviz as az # Assuming 'trace' is your PyMC sampling result az.plot_posterior(samples)
在 Google Colab 中,有时安装的库可能与预期的 Python 环境冲突,尤其是多个 PyMC 或 ArviZ 的版本共存。确保没有版本冲突:
在菜单中选择 Runtime > Restart Runtime。
Runtime > Restart Runtime
确保安装了正确版本的库: sh !pip install pymc arviz --force-reinstall
sh !pip install pymc arviz --force-reinstall
以下是一个完整的贝叶斯后验绘图示例:
import pymc as pm import arviz as az # 模型 with pm.Model() as model: # 定义先验 alpha = pm.Normal("alpha", mu=0, sigma=1) beta = pm.Normal("beta", mu=0, sigma=1) # 假设数据 x = [1, 2, 3] y_obs = [1, 2, 3] # 线性回归 mu = alpha + beta * x sigma = pm.HalfNormal("sigma", sigma=1) y = pm.Normal("y", mu=mu, sigma=sigma, observed=y_obs) # 采样 trace = pm.sample(1000, tune=1000, return_inferencedata=True) # 后验绘图 az.plot_posterior(trace)
确保以上代码能正常运行。如果仍有问题,请提供具体错误信息,我会进一步协助你。