https://github.com/cran/epiR
Raw File
Tip revision: 828129479cfe576ab5b39426faec1df42a72f19f authored by Mark Stevenson on 08 April 2013, 07:22:08 UTC
version 0.9-48
Tip revision: 8281294
epi.cluster2size.R
"epi.cluster2size" <- function(nbar, R = NA, n, mean, sigma2.x, sigma2.y = NA, sigma2.xy = NA, epsilon.r, method = "mean", conf.level = 0.95){
    N. <- 1 - ((1 - conf.level) / 2)
    z <- qnorm(N., mean = 0, sd = 1)
    
    if (method == "total") {
        if (length(n) != 2) 
           stop("Error: n must be of length 2")
        if (length(mean) != 2) 
           stop("Error: mean must be of length 2")
        if (length(sigma2.x) != 2) 
           stop("Error: sigma2.x must be of length 2")
        
        sigma2.1x <- sigma2.x[1]; sigma2.2x <- sigma2.x[2]
        M <- n[1]; N <- n[2]
        Xbar <- mean[1]; xbar <- mean[2]
        
        # Equation 10.6, page 292 Levy and Lemeshow:
        numerator <- (sigma2.1x / Xbar^2) * (M / (M - 1)) + (1 / nbar) * (sigma2.2x / xbar^2) * ((N - nbar) / (N - 1))
        denominator <- (epsilon.r^2 / z^2) + (sigma2.1x / (Xbar^2 * (M - 1)))
        rval <- round(numerator/denominator, digits = 0)
        }
    
    if (method == "mean") {
        if (length(n) != 2) 
           stop("Error: n must be of length 2")
        if (length(mean) != 2) 
           stop("Error: mean must be of length 2")
        if (length(sigma2.x) != 2) 
           stop("Error: sigma2.x must be of length 2")
           
        sigma2.1x <- sigma2.x[1]; sigma2.2x <- sigma2.x[2]
        M <- n[1]; N <- n[2]
        Xbar <- mean[1]; xbar <- mean[2]

        # Equation 10.6, page 292 Levy and Lemeshow:
        numerator <- ((sigma2.1x / Xbar^2) * (M / (M - 1))) + ((1 / nbar) * (sigma2.2x / xbar^2) * ((N - nbar) / (N - 1)))
        denominator <- (epsilon.r^2 / z^2) + (sigma2.1x / (Xbar^2 * (M - 1)))
        rval <- round(numerator/denominator, digits = 0)
        }
       
    if (method == "proportion") {
      if (length(n) != 2) 
        stop("Error: n must be of length 2")
      if (length(mean) != 2) 
        stop("Error: mean must be of length 2")
      if (length(sigma2.x) != 2) 
        stop("Error: sigma2.x must be of length 2")
      if (length(sigma2.y) != 2) 
        stop("Error: sigma2.y must be of length 2")
      if (length(sigma2.xy) != 2) 
        stop("Error: sigma2.xy must be of length 2")
      
      sigma2.1x <- sigma2.x[1]; sigma2.2x <- sigma2.x[2]
      sigma2.1y <- sigma2.y[1]; sigma2.2y <- sigma2.y[2]
      sigma.1xy <- sigma2.xy[1]; sigma.2xy <- sigma2.xy[2]
      M <- n[1]; N <- n[2]
      Xbar <- mean[1]; xbar <- mean[2]
      
      sigmasq.r1 <- sigma2.1y + (R^2 * sigma2.1x) - (2 * R * sigma.1xy)
      sigmasq.r2 <- sigma2.2y + (R^2 * sigma2.2x) - (2 * R * sigma.2xy)
      
      # Equation 10.7, page 292 Levy and Lemeshow:
      numerator <- ((sigmasq.r1 / Xbar^2) * (M / (M - 1))) + ((1 / nbar) * (sigmasq.r2 / xbar^2) * ((N - nbar) / (N - 1)))
      denominator <- (epsilon.r^2 / z^2) + (sigmasq.r1 / (Xbar^2 * (M - 1)))
      rval <- round(numerator/denominator, digits = 0)
       }
    return(rval)
}
back to top