| power.two.grp.random.a0 {BayesPPD} | R Documentation | 
Power/type I error calculation for two groups (treatment and control group, no covariates) with random a0
Description
Power/type I error calculation using normalized power priors for two groups (treatment and control group, no covariates) with random a_0
Usage
power.two.grp.random.a0(
  data.type,
  n.t,
  n.c,
  historical,
  nullspace.ineq = ">",
  samp.prior.mu.t,
  samp.prior.mu.c,
  samp.prior.var.t = 0,
  samp.prior.var.c = 0,
  prior.mu.t.shape1 = 1,
  prior.mu.t.shape2 = 1,
  prior.mu.c.shape1 = 1,
  prior.mu.c.shape2 = 1,
  prior.a0.shape1 = rep(1, 10),
  prior.a0.shape2 = rep(1, 10),
  lower.limits = rep(0, 10),
  upper.limits = rep(1, 10),
  slice.widths = rep(0.1, 10),
  delta = 0,
  gamma = 0.95,
  nMC = 10000,
  nBI = 250,
  N = 10000
)
Arguments
| data.type | Character string specifying the type of response. The options are "Normal", "Bernoulli", "Poisson" and "Exponential". | 
| n.t | Sample size of the treatment group for the simulated datasets. | 
| n.c | Sample size of the control group for the simulated datasets. | 
| historical | Matrix of historical dataset(s). If  
 For all other data types,  
 Each row represents a historical dataset. | 
| nullspace.ineq | Character string specifying the inequality of the null hypothesis. The options are ">" and "<". If ">" is specified, the null hypothesis (for non-exponential data) is  | 
| samp.prior.mu.t | Vector of possible values of  | 
| samp.prior.mu.c | Vector of possible values of  | 
| samp.prior.var.t | Vector of possible values of  | 
| samp.prior.var.c | Vector of possible values of  | 
| prior.mu.t.shape1 | First hyperparameter of the initial prior for  | 
| prior.mu.t.shape2 | Second hyperparameter of the initial prior for  | 
| prior.mu.c.shape1 | First hyperparameter of the initial prior for  | 
| prior.mu.c.shape2 | Second hyperparameter of the initial prior for  | 
| prior.a0.shape1 | Vector of the first shape parameters of the independent beta priors for  | 
| prior.a0.shape2 | Vector of the second shape parameters of the independent beta priors for  | 
| lower.limits | Vector of lower limits for parameters to be used by the slice sampler. The length of the vector should be equal to the number of historical datasets. The default is 0 for all parameters (may not be appropriate for all situations). | 
| upper.limits | Vector of upper limits for parameters to be used by the slice sampler. The length of the vector should be equal to the number of historical datasets. The default is 1 for all parameters (may not be appropriate for all situations). | 
| slice.widths | Vector of initial slice widths used by the slice sampler. The length of the vector should be equal to the number of historical datasets. The default is 0.1 for all parameter (may not be appropriate for all situations). | 
| delta | Prespecified constant that defines the boundary of the null hypothesis. The default is zero. | 
| gamma | Posterior probability threshold for rejecting the null. The null hypothesis is rejected if posterior probability is greater  | 
| nMC | Number of iterations (excluding burn-in samples) for the slice sampler or Gibbs sampler. The default is 10,000. | 
| nBI | Number of burn-in samples for the slice sampler or Gibbs sampler. The default is 250. | 
| N | Number of simulated datasets to generate. The default is 10,000. | 
Details
If data.type is "Bernoulli", "Poisson" or "Exponential", a single response from the treatment group is assumed to follow Bern(\mu_t), Pois(\mu_t) or Exp(rate=\mu_t), respectively,
where \mu_t is the mean of responses for the treatment group. If data.type is "Normal", a single response from the treatment group is assumed to follow N(\mu_t, \tau^{-1})
where \tau is the precision parameter.
The distributional assumptions for the control group data are analogous.
samp.prior.mu.t and samp.prior.mu.c can be generated using the sampling priors (see example).
If data.type is "Bernoulli", the initial prior for \mu_t is beta(prior.mu.t.shape1, prior.mu.t.shape2).
If data.type is "Poisson", the initial prior for \mu_t is Gamma(prior.mu.t.shape1, rate=prior.mu.t.shape2).
If data.type is "Exponential", the initial prior for \mu_t is Gamma(prior.mu.t.shape1, rate=prior.mu.t.shape2).
The initial priors used for the control group data are analogous.
If data.type is "Normal", historical datasets are assumed to have the same precision parameter as the current dataset for computational simplicity.
The initial prior for \tau is the Jeffery's prior, \tau^{-1}. The initial prior for the \mu_c is the uniform improper prior.
Posterior samples of \mu_c and \tau are obtained through Gibbs sampling.
Independent beta(prior.a0.shape1,prior.a0.shape1) priors are used for a_0. Posterior samples of a_0 are obtained through slice sampling. The default lower limits for the parameters are 0. The default upper limits
for the parameters are 1.  The default slice widths for the parameters are 0.1.
The defaults may not be appropriate for all situations, and the user can specify the appropriate limits
and slice width for each parameter.
If a sampling prior with support in the null space is used, the value returned is a Bayesian type I error rate. If a sampling prior with support in the alternative space is used, the value returned is a Bayesian power.
Value
The function returns a S3 object with a summary method. Power or type I error is returned, depending on the sampling prior used.
The posterior probabilities of the alternative hypothesis are returned.
Average posterior means of \mu_t and \mu_c and their corresponding biases are returned.
The average posterior mean of a_0 is returned.
If data.type is "Normal", the average posterior mean of \tau is also returned.
References
Chen, Ming-Hui, et al. "Bayesian design of noninferiority trials for medical devices using historical data." Biometrics 67.3 (2011): 1163-1170.
Neal, Radford M. Slice sampling. Ann. Statist. 31 (2003), no. 3, 705–767.
See Also
Examples
data.type <- "Bernoulli"
n.t <- 100
n.c <- 100
# Simulate three historical datasets
historical <- matrix(0, ncol=2, nrow=3)
historical[1,] <- c(70, 100)
historical[2,] <- c(60, 100)
historical[3,] <- c(50, 100)
# Generate sampling priors
set.seed(1)
b_st1 <- b_st2 <- 1
b_sc1 <- b_sc2 <- 1
samp.prior.mu.t <- rbeta(50000, b_st1, b_st2)
samp.prior.mu.c <- rbeta(50000, b_st1, b_st2)
# The null hypothesis here is H0: mu_t - mu_c >= 0. To calculate power,
# we can provide samples of mu.t and mu.c such that the mass of mu_t - mu_c < 0.
# To calculate type I error, we can provide samples of mu.t and mu.c such that
# the mass of mu_t - mu_c >= 0.
sub_ind <- which(samp.prior.mu.t < samp.prior.mu.c)
# Here, mass is put on the alternative region, so power is calculated.
samp.prior.mu.t <- samp.prior.mu.t[sub_ind]
samp.prior.mu.c <- samp.prior.mu.c[sub_ind]
N <- 10 # N should be larger in practice
result <- power.two.grp.random.a0(data.type=data.type, n.t=n.t, n.c=n.c, historical=historical,
                                  samp.prior.mu.t=samp.prior.mu.t, samp.prior.mu.c=samp.prior.mu.c,
                                  delta=0, nMC=10000, nBI=250, N=N)
summary(result)