Description Usage Arguments Details Methods (by class) Supported Conjugate PriorLikelihood Pairs References Examples
Calculates the posterior distribution for data data
given a prior
priormix
, where the prior is a mixture of conjugate distributions.
The posterior is then also a mixture of conjugate distributions.
1 2 3 4 5 6 7 8 9 10 
priormix 
prior (mixture of conjugate distributions). 
data 
individual data. If the individual data is not given, then summary data has to be provided (see below). 
... 
includes arguments which depend on the specific case, see description below. 
n 
sample size. 
r 
Number of successes. 
m 
Sample mean. 
se 
Sample standard error. 
A conjugate priorlikelihood pair has the convenient property that the posterior is in the same distributional class as the prior. This property also applies to mixtures of conjugate priors. Let
p(θ;w,a,b)
denote a conjugate mixture prior density for data
yθ ~ f(yθ),
where f(yθ) is the likelihood. Then the posterior is again a mixture with each component k equal to the respective posterior of the kth prior component and updated weights w'_k,
p(θ;w',a',b'y) = ∑_{k=1}^K w'_k * p(θ;a'_k,b'_ky).
The weight w'_k for kth component is determined by the marginal likelihood of the new data y under the kth prior distribution which is given by the predictive distribution of the kth component,
w'_k \propto w_k \int p_k(u;a_k,b_k) f(yu) du = w^*_k .
The final weight w'_k is then given by appropriate normalization, w'_k = w^*_k / ∑_{k=1}^K w^*_k. In other words, the weight of component k is proportional to the likelihood that data y is generated from the respective component, i.e. the marginal probability; for details, see for example Schmidli et al., 2015.
Note: The prior weights w_k are fixed, but the posterior weights w'_k \neq w_k still change due to the changing normalization.
The data y can either be given as individual data or as summary data (sufficient statistics). See below for details for the implemented conjugate mixture prior densities.
betaMix
: Calculates the posterior beta mixture
distribution. The individual data vector is expected to be a vector
of 0 and 1, i.e. a series of Bernoulli experiments. Alternatively,
the sufficient statistics n
and r
can be given,
i.e. number of trials and successes, respectively.
normMix
: Calculates the posterior normal mixture
distribution with the sampling likelihood being a normal with fixed
standard deviation. Either an individual data vector data
can be given or the sufficient statistics which are the standard
error se
and sample mean m
. If the sample size
n
is used instead of the sample standard error, then the
reference scale of the prior is used to calculate the standard
error. Should standard error se
and sample size n
be
given, then the reference scale of the prior is updated; however it
is recommended to use the command sigma
to set the
reference standard deviation.
gammaMix
: Calculates the posterior gamma mixture
distribution for Poisson and exponential likelihoods. Only the
Poisson case is supported in this version.
Prior/Posterior  Likelihood  Predictive  Summaries 
Beta  Binomial  BetaBinomial  n , r 
Normal  Normal (fixed σ)  Normal  n , m , se 
Gamma  Poisson  GammaPoisson  n , m 
Gamma  Exponential  GammaExp (not supported)  n , m

Schmidli H, Gsteiger S, Roychoudhury S, O'Hagan A, Spiegelhalter D, Neuenschwander B. Robust metaanalyticpredictive priors in clinical trials with historical control information. Biometrics 2014;70(4):10231032.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26  # binary example with individual data (1=event,0=no event), uniform prior
prior.unif < mixbeta(c(1, 1, 1))
data.indiv < c(1,0,1,1,0,1)
posterior.indiv < postmix(prior.unif, data.indiv)
print(posterior.indiv)
# or with summary data (number of events and number of patients)
r < sum(data.indiv); n < length(data.indiv)
posterior.sum < postmix(prior.unif, n=n, r=r)
print(posterior.sum)
# binary example with robust informative prior and conflicting data
prior.rob < mixbeta(c(0.5,4,10),c(0.5,1,1))
posterior.rob < postmix(prior.rob, n=20, r=18)
print(posterior.rob)
# normal example with individual data
sigma < 88
prior.mean < 49
prior.se < sigma/sqrt(20)
prior < mixnorm(c(1,prior.mean,prior.se),sigma=sigma)
data.indiv < c(46,227,41,65,103,22,7,169,69,90)
posterior.indiv < postmix(prior, data.indiv)
# or with summary data (mean and number of patients)
mn < mean(data.indiv); n < length(data.indiv)
posterior.sum < postmix(prior, m=mn, n=n)
print(posterior.sum)

Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.