`There exists r such that: \sum_{i=r}^{n}{\left(\frac{n!}{i!(n-i)!}\right)\left(\pi_0^i\right){(1-\pi_0)}^{\left(n-i\right)}\le\alpha} \sum_{i=r}^{n}{\left(\frac{n!}{i!(n-i)!}\right)\left(\pi_1^i\right){(1-\pi_1)}^{\left(n-i\right)}\geq\left(1-\beta\right)}
write a basic R function to find the sample size using the exact test for this scenario: {(\pi}_0,\pi_1)=(0.23,0.36),(\alpha,\beta)=(0.05,0.15) What is the minimum sample size? `
I use the following code:
sample_size <- function(pi0, pi1, alpha, beta) {
n <- 1 # set a high initial value for n
r <- 0 # set an initial value for r
while (TRUE) {
sum1 <- 0
sum2 <- 0
for (i in r:n) {
sum1 <- sum1 + factorial(n)/(factorial(i)*factorial(n-i))*pi0^i*(1-pi0)^(n-i)
sum2 <- sum2 + factorial(n)/(factorial(i)*factorial(n-i))*pi1^i*(1-pi1)^(n-i)
}
if (sum1 <= alpha && sum2 >= 1 - beta) {
return(n)
} else {
n <- n + 1
}
if (n >= 1e6) {
return(NA) # return NA if sample size is too large
}
}
}
sample_size(pi0 = 0.23, pi1 = 0.36, alpha = 0.05, beta = 0.15)
but getting an error:
Error in if (sum1 <= alpha && sum2 >= 1 - beta) { : missing value where TRUE/FALSE needed