The sure data are and
for Moderna [2]
and
and
for Pfizer [6].
As far as the number of individual subject to the trials
there were certainly some information in the press releases,
but, fortunately, as we shall see, the exact number is not critical
at all in regard to the value of efficacy and we can even change it
by orders of magnitudes without affecting
the results of interest.
Then, there was the question of how to relate the numbers
of infected to the numbers of the participants in the trial.
This depends in fact from several variables, like the
prevalence of the virus in the population(s) of the involved people,
their life-style, behavior, and so on, and, hopefully, from the fact
that a person has been vaccinated or not. We simplified
the model defining an assault probability, , a
catch-all term embedding the many real life variables, apart
being vaccinated or not. Nodes
and
represent them the number of `assaulted individuals'
in each group, and they are modeled according to a
binomials distributions, that is
The `assaulted individuals' of the placebo group
are then assumed to be all infected, and hence the
deterministic link with dashed arrow relating the node
to the node
(in fact the two numbers are
the same, and we make this graphical distinction
only for symmetry with respect to the vaccine group).
Instead, the `assaulted individuals' of the other group
are `shielded' by the vaccine, with probability of
being infected equal to
, where
is the efficacy:
The nice thing using such a tool is that we have to take
care only to describe the model, with
instructions whose meaning is rather transparent.
Then we have to provide the data, in our case
,
,
and
.
The program samples the space of possibilities
and returns lists of numbers (a `chain') for each `monitored variable'
such that the frequency of the values in each list is proportional
to the probability of that values of the variable
(Bernoulli's theorem). Here is, verbatim, the model:
model { nP.I ~ dbin(pA, nP) # 1. nV.A ~ dbin(pA, nV) # 2. pA ~ dbeta(1,1) # 3. nV.I ~ dbin(ffe, nV.A) # 4. [ ffe = 1 - eff ] ffe ~ dbeta(1,1) # 5. eff <- 1 - ffe # 6. }We easily recognize in lines 1. and 2. of the code Eqs. (1) and (2), while line 4. stands for Eq. (3). Line 6. is simply the transformation of `