sample.size.for.two.correlated.proportions.test <- function(p.diff = 0.1, p.discordant = 0.2, alpha = 0.025, beta = 0.2) { ## Purpose: Sample Size for Two Correlated Proportions Test based on McNemar Test ## H0: p2 <= p1 ## H1: p2 > p1 ## (Application: tests of sensitivity, specificity with three-way, matched-pairs study) ## Arguments: ## p.diff: Effect size for the difference between two correlated proportions. Default to 10%. ## p.discordant: Proportion of pairs for which the responses differed. Default to 20%. ## alpha: type I error. Default to 0.025 (for one-sided test). ## beta: type II error (1 - power). Default to 0.2 (so power is 80%). ## Return: ## Sample Size ## Author: Feiming Chen ## Reference: Machin, Campbell, Fayers, and Pinol (1997). ## ________________________________________________ p10 <- (p.discordant + p.diff) / 2 # with default, p10 = 0.15 p01 <- (p.discordant - p.diff) / 2 # default: p01 = 0.05 OR <- p10 / p01 # default: OR = 3 OR.plus.one <- OR + 1 # default: 4 OR.minus.one <- OR - 1 # default: 2 N = (qnorm(1 - alpha) * OR.plus.one + qnorm(1 - beta) * sqrt(OR.plus.one^2 - OR.minus.one^2 * p.discordant))^2 / (OR.minus.one^2 * p.discordant) ceiling(N) } if (F) { # Unit Test sample.size.for.two.correlated.proportions.test() # 155 (PASS output: 155 under normal approx.) }
Thursday, February 18, 2021
Sample Size for Two Correlated Proportions Based on McNemar Test
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment