## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 7,
  fig.height = 4.5,
  fig.align = "center"
)

## ----load---------------------------------------------------------------------
library(bbssr)

## ----plan---------------------------------------------------------------------
Delta.A <- 0.25
plan <- BinarySampleSize(p1 = 0.45, p2 = 0.20, r = 1, alpha = 0.025,
                         tar.power = 0.8, Test = 'Z-pool')
plan

## ----sensitivity--------------------------------------------------------------
pooled <- seq(0.20, 0.45, by = 0.05)
sens <- data.frame(
  pooled = pooled,
  p1 = pooled + Delta.A / 2,
  p2 = pooled - Delta.A / 2
)
sens$N <- vapply(seq_len(nrow(sens)), function(i) {
  BinarySampleSize(sens$p1[i], sens$p2[i], 1, 0.025, 0.8, 'Chisq')$N
}, numeric(1))
sens

## ----evaluate-----------------------------------------------------------------
design <- BinaryPowerBSSR(
  p = seq(0.20, 0.45, by = 0.05),
  Delta.A = Delta.A, Delta.T = Delta.A,
  N1 = plan$N1, N2 = plan$N2, omega = 0.5, r = 1,
  alpha = 0.025, tar.power = 0.8, Test = 'Chisq',
  restricted = TRUE
)
design

## ----evaluate-plot------------------------------------------------------------
plot(design)

## ----interim-data-------------------------------------------------------------
n1 <- ceiling(plan$N1 / 2)
n2 <- ceiling(plan$N2 / 2)
S <- round(0.40 * (n1 + n2))
data.frame(n1 = n1, n2 = n2, S = S, pooled.rate = round(S / (n1 + n2), 3))

## ----reestimate---------------------------------------------------------------
re <- BinaryBSSR(
  n1 = n1, n2 = n2, S = S,
  Delta.A = Delta.A, r = 1,
  alpha = 0.025, tar.power = 0.8, Test = 'Z-pool',
  restricted = TRUE, N1 = plan$N1, N2 = plan$N2
)
re

## ----decision-curve-----------------------------------------------------------
S.grid <- round(seq(0.15, 0.55, by = 0.05) * (n1 + n2))
decision <- data.frame(S = S.grid, pooled = round(S.grid / (n1 + n2), 3))
decision$N.restricted <- vapply(S.grid, function(s) {
  BinaryBSSR(n1, n2, s, Delta.A, 1, 0.025, 0.8, 'Chisq',
             restricted = TRUE, N1 = plan$N1, N2 = plan$N2)$N.final
}, numeric(1))
decision$N.unrestricted <- vapply(S.grid, function(s) {
  BinaryBSSR(n1, n2, s, Delta.A, 1, 0.025, 0.8, 'Chisq')$N.final
}, numeric(1))
decision

## ----truncation---------------------------------------------------------------
edge <- BinaryBSSR(n1 = 20, n2 = 20, S = 2, Delta.A = 0.4, r = 1,
                   alpha = 0.025, tar.power = 0.8, Test = 'Chisq')
data.frame(hat.p = edge$hat.p, hat.p1 = edge$hat.p1,
           hat.p2 = edge$hat.p2, N.re = edge$N.re)

## ----allocation---------------------------------------------------------------
BinaryBSSR(n1 = 40, n2 = 20, S = 18, Delta.A = 0.25, r = 2,
           alpha = 0.025, tar.power = 0.8, Test = 'Chisq')

## ----type1-check--------------------------------------------------------------
null <- BinaryPowerBSSR(
  p = seq(0.02, 0.98, by = 0.02),
  Delta.A = Delta.A, Delta.T = 0,
  N1 = plan$N1, N2 = plan$N2, omega = 0.5, r = 1,
  alpha = 0.025, tar.power = 0.8, Test = 'Chisq', restricted = TRUE
)
data.frame(
  largest.type1.BSSR = round(max(null$power.BSSR), 5),
  attained.at.p = null$p[which.max(null$power.BSSR)],
  largest.type1.fixed = round(max(null$power.TRAD), 5)
)

