CI.diff.two.correlated.proportions <- function(A, B, C, D, alpha = 0.05) { ## Purpose: CI of the difference between two correlated proportions (McNemar Test) ## Arguments: ## A, B, C, D: the 2x2 incidence count table for the matched pairs. ## A = both positive; ## B = treatment positive, control negative; ## C = treatment negative; control positive; ## D = both negative; ## alpha: type I error. Default to 0.05 (for two-sided CI). ## Return: 95% Confidence Interval of the Difference ## Author: Feiming Chen ## Method: Wald Z Method with Continuity Correction ## Reference: Newcombe (1998c), page 2638. ## ________________________________________________ N <- A + B + C + D # total number of matched pairs Delta <- (B - C) / N sw <- sqrt(((A + D) * (B + C) + 4 * B * C) / N^3) z <- qnorm(1 - alpha / 2) # default: 1.96 corr.term <- 1 / N # continuity correction L <- Delta - z * sw - corr.term U <- Delta + z * sw + corr.term x <- matrix(c(A, B, C, D), 2, 2, byrow = TRUE, dimnames = list(c("Test.POS", "Test.NEG"), c("Control.POS", "Control.NEG"))) cat("Raw Data (x):\n") print(x) cat("\nData Converted to Proportions:\n") print(round(x/N, 2)) cat("\nDifference of Two Paired Proportions =", round(Delta, 3), "\n") p.discordant <- (B+C) / N cat("Proportion of Discordant Pairs =", round(p.discordant, 3), "\n") N.future <- sample.size.for.two.correlated.proportions.test(Delta, p.discordant) cat("\nCurrent Sample Size =", N, "\n") cat("Future Sample Size =", N.future, "\n") print(mcnemar.test(x)) cat("\nConfidence Interval = (", round(L, 4), ",", round(U, 4), ")\n\n") } if (F) { # Unit Test CI.diff.two.correlated.proportions(12, 9, 2, 21) ## Confidence Interval = ( -0.0037 , 0.3219 ) CI.diff.two.correlated.proportions(25, 20, 5, 25) ## Raw Data (x): ## Control.POS Control.NEG ## Test.POS 25 20 ## Test.NEG 5 25 ## Data Converted to Proportions: ## Control.POS Control.NEG ## Test.POS 0.33 0.27 ## Test.NEG 0.07 0.33 ## Difference of Two Paired Proportions = 0.2 ## Proportion of Discordant Pairs = 0.333 ## Current Sample Size = 75 ## Future Sample Size = 63 ## McNemar's Chi-squared test with continuity correction ## data: x ## McNemar's chi-squared = 7.84, df = 1, p-value = 0.00511 ## Confidence Interval = ( 0.0641 , 0.3359 ) }
Thursday, February 18, 2021
Confidence Interval of the Difference between Two Correlated Proportions (McNemar Test)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment