## power.t.test: Power
power.t.test(n=3, delta=3, sd=1)

## power.t.test: Sample size
power.t.test(power=0.9, delta=3, sd=1)

## power.t.test: Minimum detectable difference
power.t.test(power=0.9, n=2, sd=1)

## Power curve
n <- 2:20
Power <- power.t.test(n=n, delta=2, sd=2)$power
plot(n, Power, type="l")

## Sample size, checking against uniroot
power.t.test(power=0.9, delta=5, sd=2)$n
f <- function(n) {qt(0.975, 2*n-2) - qt(0.1, 2*n-2, 5/(2*sqrt(2/n)))}
uniroot(f, c(2, 100))$root

## z-test calculation
2*((qnorm(0.975)+qnorm(0.9))/(5/2))^2

## Paired t-tests
power.t.test(n=6, delta=3, sd=2, type="paired")
power.t.test(n=6, delta=3, sd=2)

## power.prop.test
power.prop.test(n=50, p1=.4, p2=.2)
power.prop.test(power=0.8, p1=.4, p2=.2)

## Power curve, constant difference in proportion
p1 <- seq(0.05, 0.85, len=99)
Power <- power.prop.test(n=100, p1=p1, p2=p1+0.1)$power
plot(p1, Power, type="l", ylim=0:1)

## Power curve, constant ratio of proportions
p1 <- seq(0.01, 0.6, len=99)
Power <- power.prop.test(n=100, p1=p1, p2=p1*1.5)$power
plot(p1, Power, type="l", ylim=0:1)

## bpower: Binomial test with unequal sample size
require(Hmisc)
bpower(n1=50, n2=100, p1=.4, p2=.2)

## A power curve where we vary the allocation
n1 <- 50:100
Power <- bpower(n1=n1, n2=150-n1, , p1=.4, p2=.2)
plot(n1, Power, type="l")
n1[which.max(Power)]

## bsamsize
## fraction: Fraction in group 1
bsamsize(p1=.4, p2=.2, power=0.8, fraction=1/3)

## tpower and tsamsize
source("http://myweb.uiowa.edu/pbreheny/571/f14/labs/tpower.R")
tpower(n1=6, n2=6, delta=3, sd=2) ## Same as before
tpower(n1=6, n2=12, delta=3, sd=2)
## w: Sampling weight for each group
tsamsize(delta=3, sd=4, power=0.8, w=c(3,1))

