【发布时间】:2021-03-06 16:01:05
【问题描述】:
有人知道在标准 Python 3 函数中存储pymc3 模型的方法吗?
我希望将此函数存储在本地,以便在 Jupyter 环境中多次调用,其功能旨在在模型实例化后返回视觉效果。该函数接受一个控制和实验条件,并在执行建模之前将它们转换为numpy 数组和MCMC:
def bayesian_ab_test(x ,y):
y1 = x
y2 = y
data = pd.DataFrame(dict(value=np.r_[y1, y2], group=np.r_[['y2']*len(y2),
['y1']*len(y1)]))
μ_m = data.value.mean()
μ_s = data.value.std() * 2
σ_low = sd_low
σ_high = sd_high
group1_std = pm.Uniform('group1_std', lower=σ_low, upper=σ_high)
group2_std = pm.Uniform('group2_std', lower=σ_low, upper=σ_high)
ν = pm.Exponential('ν_minus_one', 1/29.) + 1
λ1 = group1_std**-2
λ2 = group2_std**-2
group1 = pm.StudentT('Control_1', nu=ν, mu=group1_mean, lam=λ1, observed=y1)
group2 = pm.StudentT('NBA', nu=ν, mu=group2_mean, lam=λ2, observed=y2)
diff_of_means = pm.Deterministic('difference of means', group2_mean - group1_mean)
diff_of_stds = pm.Deterministic('difference of stds', group2_std - group1_std)
effect_size = pm.Deterministic('effect size', diff_of_means / np.sqrt((group1_std**2 +
group2_std**2) / 2))
trace = pm.sample(1000)
return trace
我得到的错误是:
TypeError: No model on context stack, which is needed to instantiate distributions. Add variable inside a 'with model:' block, or use the '.dist' syntax for a standalone distribution.
【问题讨论】:
标签: python function modeling pymc