pymc.model.transform.conditioning.change_value_transforms#

pymc.model.transform.conditioning.change_value_transforms(model, vars_to_transforms)[源代码]#

更改模型中的值变量转换

参数:
模型 : Model模型
vars_to_transforms字典

映射 RVs 到新变换的字典,这些变换将应用于相应的值变量

返回:
new_model模型

带有更新后的转换值变量的模型

示例

在找到变换空间MAP后,提取未变换的空间Hessian

import pymc as pm
from pymc.distributions.transforms import logodds
from pymc.model.transform.conditioning import change_value_transforms

with pm.Model() as base_m:
    p = pm.Uniform("p", 0, 1, transform=None)
    w = pm.Binomial("w", n=9, p=p, observed=6)

with change_value_transforms(base_m, {"p": logodds}) as transformed_p:
    mean_q = pm.find_MAP()

with change_value_transforms(transformed_p, {"p": None}) as untransformed_p:
    new_p = untransformed_p['p']
    std_q = ((1 / pm.find_hessian(mean_q, vars=[new_p])) ** 0.5)[0]

print(f"  Mean, Standard deviation\np {mean_q['p']:.2}, {std_q[0]:.2}")
#   Mean, Standard deviation
# p 0.67, 0.16