pymc.样本后验预测#

pymc.sample_posterior_predictive(trace, model=None, var_names=None, sample_dims=None, random_seed=None, progressbar=True, return_inferencedata=True, extend_inferencedata=False, predictions=False, idata_kwargs=None, compile_kwargs=None)[源代码]#

从给定的轨迹生成模型的后验预测样本。

参数:
tracebackend, python:list, xarray.Dataset, arviz.InferenceData, 或 MultiTrace

从MCMC采样生成的轨迹,或字典列表(例如,点或从find_MAP()获取的),或xarray.Dataset(例如,InferenceData.posterior或InferenceData.prior)

model模型(如果已在上下文中,则为可选)

用于生成后验预测样本的模型。通常是用于生成 trace 的模型,但不一定非得是。

var_namesIterable[str]

要计算后验预测样本的变量名称。

sample_dims : liststr,可选python:list of python:str, 可选

循环和生成后验预测样本的维度。当 sample_dims``None``(默认)时,”chain” 和 “draw” 都被视为样本维度。仅在 trace 为 InferenceData 或 Dataset 时考虑。

random_seedpython:int, RandomState 或 Generator, 可选

随机数生成器的种子。

progressbar : 布尔值布尔

是否在命令行中显示进度条。进度条显示完成百分比、每秒采样速度(SPS)以及预计的剩余时间直至完成(”预计到达时间”;ETA)。

return_inferencedata : 布尔值, 默认值 Truebool, 默认 python:True

是否返回一个 arviz.InferenceData (True) 对象或一个字典 (False)。

extend_inferencedata : 布尔值,默认值 Falsebool, 默认 python:False

是否自动使用 arviz.InferenceData.extend() 将后验预测样本添加到 trace 中。如果为 True,trace 将被原地修改但仍然返回。

预测 : 布尔值,默认值 Falsebool, 默认 python:False

用于设置后验预测样本在返回的 arviz.InferenceData 对象中的位置的标志。如果为 False,则假定样本是基于拟合数据生成的,用于后验预测检查,样本存储在 posterior_predictive 中。如果为 True,则假定样本是基于样本外数据生成的预测,样本存储在 predictions 组中。

idata_kwargs : dict, 可选python:dict, 可选

如果 predictions=False,则为 pymc.to_inference_data() 的关键字参数;否则为 pymc.predictions_to_inference_data() 的关键字参数。

compile_kwargs: dict, 可选

用于 pymc.pytensorf.compile_pymc() 的关键字参数。

返回:
arviz.InferenceData or Dict

一个包含后验预测样本的 ArviZ InferenceData 对象(默认),或一个以变量名为键、样本为 numpy 数组的字典。

示例

在将采样后的推理数据传递给 sample_posterior_predictive 之前,通过保留每5次抽取中的1次来细化它。

thinned_idata = idata.sel(draw=slice(None, None, 5))
with model:
    idata.extend(pymc.sample_posterior_predictive(thinned_idata))

为每个后验样本生成5个后验预测样本。

expanded_data = idata.posterior.expand_dims(pred_id=5)
with model:
    idata.extend(pymc.sample_posterior_predictive(expanded_data))