Evaluates and plots the posterior density for pi, the probability of a success in a Bernoulli trial, with binomial sampling and a general continuous prior on pi
binogcp( x, n, density = c("uniform","beta","exp","normal","user"), params = c(0,1), n.pi =1000, pi =NULL, pi.prior =NULL,...)
Arguments
x: the number of observed successes in the binomial experiment.
n: the number of trials in the binomial experiment.
density: may be one of "beta", "exp", "normal", "student", "uniform" or "user"
params: if density is one of the parameteric forms then then a vector of parameters must be supplied. beta: a, b exp: rate normal: mean, sd uniform: min, max
n.pi: the number of possible pi values in the prior
pi: a vector of possibilities for the probability of success in a single trial. This must be set if density = "user".
pi.prior: the associated prior probability mass. This must be set if density = "user".
...: additional arguments that are passed to Bolstad.control
Returns
A list will be returned with the following components: - likelihood: the scaled likelihood function for pi given x and n - posterior: the posterior probability of pi given x and n - pi: the vector of possible pi values used in the prior - pi.prior: the associated probability mass for the values in pi
Examples
## simplest call with 6 successes observed in 8 trials and a continuous## uniform priorbinogcp(6,8)## 6 successes, 8 trials and a Beta(2, 2) priorbinogcp(6,8,density ="beta", params = c(2,2))## 5 successes, 10 trials and a N(0.5, 0.25) priorbinogcp(5,10, density ="normal", params = c(0.5,0.25))## 4 successes, 12 trials with a user specified triangular continuous priorpi = seq(0,1,by =0.001)pi.prior = rep(0, length(pi))priorFun = createPrior(x = c(0,0.5,1), wt = c(0,2,0))pi.prior = priorFun(pi)results = binogcp(4,12,"user", pi = pi, pi.prior = pi.prior)## find the posterior CDF using the previous example and Simpson's rulemyCdf = cdf(results)plot(myCdf, type ="l", xlab = expression(pi[0]), ylab = expression(Pr(pi <= pi[0])))## use the quantile function to find the 95% credible region.qtls = quantile(results, probs = c(0.025,0.975))cat(paste("Approximate 95% credible interval : [", round(qtls[1],4)," ", round(qtls,4),"]\n", sep =""))## find the posterior mean, variance and std. deviation## using the output from the previous examplepost.mean = mean(results)post.var = var(results)post.sd = sd(results)# calculate an approximate 95% credible region using the posterior mean and# std. deviationlb = post.mean - qnorm(0.975)* post.sd
ub = post.mean + qnorm(0.975)* post.sd
cat(paste("Approximate 95% credible interval : [", round(lb,4)," ", round(ub,4),"]\n", sep =""))