gpt4 book ai didi

bayesian - 如何在pymc中设置确定性变量的键

转载 作者:太空宇宙 更新时间:2023-11-03 18:14:36 24 4
gpt4 key购买 nike

我正在尝试绘制两个变量之间的差异。我正在遵循示例集 here (搜索true_p_A,它将在右侧部分)

这是我的代码

def cool(test):

n_data_points = len(test)
alpha = 1.0/np.mean(test)
lambda_1 = pm.Exponential("lambda_1", alpha) # prior on first behaviour
lambda_2 = pm.Exponential("lambda_2", alpha) # prior on second behaviour
tau = pm.DiscreteUniform("tau", lower=0, upper=len(test)) # prior on behaviour change

"""
The below deterministic functions map an assignment, in this case 0 or 1,
to a set of parameters, located in the (1,2) arrays `taus` and `centers`.
"""

@pm.deterministic
def lambda_(tau=tau, lambda_1=lambda_1, lambda_2=lambda_2):
out = np.zeros(n_data_points)
out[:tau] = lambda_1 # lambda before tau is lambda1
out[tau:] = lambda_2 # lambda after tau is lambda2
return out

def delta(p_A=lambda_1, p_B=lambda_2):
return p_A - p_B
obs = pm.Poisson("obs", lambda_, value=test, observed=True)

model = pm.Model([obs, lambda_, lambda_1, lambda_2, tau,delta])

mcmc = pm.MCMC(model)
mcmc.sample(5000, 1000, 1)

return mcmc,5000,1

def main_plotter(stats,test):
mcmc,N,bin = stats

n_count_data = len(test)

lambda_1_samples = mcmc.trace('lambda_1')[:]
lambda_2_samples = mcmc.trace('lambda_2')[:]
tau_samples = mcmc.trace('tau')[:]
delta_samples = mcmc.trace('delta')
print(delta_samples)

data = [1,2,1,2.2,5,5.5,6,5.4]
main_plotter( cool(data),data)

在该示例中,没有为增量创建变量,因此没有插入键值。每当我运行此代码时,它都会告诉我找不到 key 。我的问题是我需要做什么才能访问增量后验数据?

最佳答案

您在delta函数定义之前缺少确定性装饰器。如果你从第 21 行开始进行更改,它就会起作用:

@pm.deterministic
def delta(p_A=lambda_1, p_B=lambda_2):
return p_A - p_B

关于bayesian - 如何在pymc中设置确定性变量的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25191195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com