Binomial sampling with a discrete prior

Share:

Description

Evaluates and plots the posterior density for pi, the probability of a success in a Bernoulli trial, with binomial sampling and a discrete prior on pi

Usage

1
2
binodp(x, n, pi = NULL, pi.prior = NULL, n.pi = 10, plot = TRUE,
  suppressOutput = FALSE)

Arguments

x

the number of observed successes in the binomial experiment.

n

the number of trials in the binomial experiment.

pi

a vector of possibilities for the probability of success in a single trial. if pi is NULL then a discrete uniform prior for pi will be used.

pi.prior

the associated prior probability mass.

n.pi

the number of possible pi values in the prior

plot

if TRUE then a plot showing the prior and the posterior will be produced

suppressOutput

if TRUE then none of the output is printed to console

Value

A list will be returned with the following components:

pi

the vector of possible pi values used in the prior

pi.prior

the associated probability mass for the values in pi

likelihood

the scaled likelihood function for pi given x and n

posterior

the posterior probability of pi given x and n

f.cond

the conditional distribution of x given pi and n

f.joint

the joint distribution of x and pi given n

f.marg

the marginal distribution of x

See Also

binobp binogcp

Examples

 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
## simplest call with 6 successes observed in 8 trials and a uniform prior
binodp(6,8)

## same as previous example but with more possibilities for pi
binodp(6, 8, n.pi = 100)

## 6 successes, 8 trials and a non-uniform discrete prior
pi = seq(0, 1, by = 0.01)
pi.prior = runif(101)
pi.prior = sort(pi.prior / sum(pi.prior))
binodp(6, 8, pi, pi.prior)

## 5 successes, 6 trials, non-uniform prior
pi = c(0.3, 0.4, 0.5)
pi.prior = c(0.2, 0.3, 0.5)
results = binodp(5, 6, pi, pi.prior)

## plot the results from the previous example using a side-by-side barplot
results.matrix = rbind(results$pi.prior,results$posterior)
colnames(results.matrix) = pi
barplot(results.matrix, col = c("red", "blue"), beside = TRUE,
	      xlab = expression(pi), ylab=expression(Probability(pi)))
box()
legend("topleft", bty = "n", cex = 0.7, 
       legend = c("Prior", "Posterior"), fill = c("red", "blue"))

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.