我有以下模型。
with basic_model:
lambda1 = pm.Gamma("lambda1", alpha=0.001, beta=0.001)
p = pm.Beta('p', 1, 1,)
z = [0.0] * len(x['Length'].values)
Y_obs = [0.0] * len(x['Length'].values)
for i in range(len(x['Length'].values)):
z[i] = pm.Bernoulli('z[i]',p)
Y_obs[i] = pm.Poisson("Y_obs[i]", mu=lambda1*z[i]*x['Length'].values+0.001, observed=x['Count'].values[i])
trace = pm.sample(7000, tune=2000, cores=1, return_inferencedata=True)
它正在为名称Y_obs[i]
和z[i]
. 我知道我不能更改对变量使用相同的名称,但我不知道如何更改Y_obs[i]
每次迭代的速率。在稍后阶段,我还将使用 if-else 条件更改费率。如何为每个数据点定义不同的平均值?