Самый компактный способ, которым я могу придумать для захвата взаимосвязи, предполагая, что c
является общим значением, - это уменьшить до одной вероятности для a_4
.То есть что-то вроде этого:
import pymc3 as pm
import theano.tensor as tt
with pm.Model() as model:
# prior probabilities
q = pm.Beta('q', alpha=1, beta=1)
c = pm.Beta('c', alpha=1, beta=1)
u = pm.Beta('u', alpha=1, beta=1)
# input nodes
a_i = pm.Bernoulli('a_i', p=q, shape=3)
# prob for a_4
p = pm.math.switch(tt.any(a_i), 1.0 - (1.0 - c)**tt.sum(a_i), u)
# output node
a_4 = pm.Bernoulli('a_4', p=p)
prior = pm.sample_prior_predictive(samples=1000)
, где, если любой из a_i
успешен, тогда мы вычисляем вероятность любого успеха в sum(a_i)
попытках (то есть 1-(1-c)^sum(a_i)
), в противном случаепросто используйте u
.
Очевидно, что предыдущие вероятности могут быть фиксированными или независимыми по мере необходимости (например, может быть, вы хотите получить независимые значения q
, что будет сделано путем добавления shape=3
).
Если это не то, что вы ищете, то, возможно, добавьте некоторые уточнения к вопросу.