I have been scouring CRAN and Google for a function (that I wouldn't have to code myself) that would calculate the sample size needed for a pre-post design with a dichotomous outcome - to no avail. If I'm wrong, please let me know!

I came across an R script from a university course and was wondering if someone wouldn't mind double-checking it for me - I've revised it a bit. (the URL is: http://www.statistik.lmu.de/institut/lehrstuhl/semwiso/bm-sose2009/CaCo/v8_4.pdf)

samsize.mcnemar <- function(pi.01, pi.10, alpha, beta, sided) 
pi.d <- (pi.01 + pi.10)
N <- (qnorm(1 - alpha/sided) * sqrt(pi.d) + qnorm(1 - beta) *
    sqrt(pi.d - (pi.01 - pi.10)^2))^2/(pi.01 - pi.10)^2
# in my case, I am assuming that the 0 to 1 change will be 0.13 and that no 
# one will change from 1 to 0 

samsize.mcnemar(pi.01 = 0.13, pi.10 = 0, alpha = 0.05, beta = 0.2, sided = 2)

First, does this look correct?

Second, since this is not a matched-pairs design, I am not assuming that the intervention will cause people to revert back (if they are already performing the healthy behaviour). Should I be more conservative?


  • $\begingroup$ Hi, i think G*Power 3 provides power analysis for McNemar test too. You can take a look at it here. $\endgroup$ – Yulong Aug 1 '14 at 2:05

I compared the results I get with my function with this quick look-up table I found from StatsToDo (https://www.statstodo.com/SSizMcNemar_Tab.php#). I didn't try all combinations, but for the handful I did try, the sample size estimates were the exact same. I am pretty confident that the function is correct. Feel free though to add further comments

| cite | improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.