# Modelling the probability that any one of a set of unseen events occurs

I have a set of True/False observations. Each of those observations is the result of a process that generates a set of items, and yields True if any of those individual items is true. Which of the items that are in the set changes for each observation.

I have modelled this with something that looks like:

``````data {

// Which sub_items were present for observation i:
int<lower=0, upper=1> item_occurences[n_observations, n_items]
...
}

parameters {
// Individual sub_item probabilities for each sub-item:
real<lower=0, upper=1> item_probabilities[n_items]
}

model {
real p;

for (i in 1:n_observations) {

// Probability that at least 1 item is true
// i.e. probability that all items are not false
// sub_items holds the individual success
// probabilities for each observation
p = 1 - prod(1 - (item_occurences[i] .* item_probabilities));

observation[i] ~ bernoulli(p);
}
}
``````

However, this is struggling (failing) to recover parameters in a simulation test.

Is there a better way to do this?