pbsize                  package:gap                  R Documentation

_P_o_w_e_r _f_o_r _p_o_p_u_l_a_t_i_o_n-_b_a_s_e_d _a_s_s_o_c_i_a_t_i_o_n _d_e_s_i_g_n

_D_e_s_c_r_i_p_t_i_o_n:

     This function implements Long et al. (1997) statistics for
     population-based association design

_U_s_a_g_e:

     pbsize(gamma=4.5, p=0.15, kp, x2alpha=29.72, zalpha=5.45, z1beta=-0.84)

_A_r_g_u_m_e_n_t_s:

   gamma: genotype relative risk assuming multiplicative model

       p: frequency of disease allele

      kp: population disease prevalence

 x2alpha: normal z-deviate

  zalpha: normal z-deviate

  z1beta: normal z-deviate

_V_a_l_u_e:

     The returned value is scaler containing the required sample size

_R_e_f_e_r_e_n_c_e_s:

     Scott, W. K., M. A. Pericak-Vance, et al. (1997). Genetic analysis
     of complex  diseases. Science 275: 1327.

     Long, A. D. and C. H. Langley (1997). Genetic analysis of complex
     traits. Science 275: 1328.

_N_o_t_e:

     extracted from rm.c

_A_u_t_h_o_r(_s):

     Jing Hua Zhao

_S_e_e _A_l_s_o:

     'fbsize'

_E_x_a_m_p_l_e_s:

     ## Not run: 
     models <- matrix(c(
         4.0, 0.01,
         4.0, 0.10,
         4.0, 0.50, 
         4.0, 0.80,
         2.0, 0.01,
         2.0, 0.10,
         2.0, 0.50,
         2.0, 0.80,
         1.5, 0.01,    
         1.5, 0.10,
         1.5, 0.50,
         1.5, 0.80), ncol=2, byrow=TRUE)
         
     g <- 4.5
     p <- 0.15
     cat("\nAlzheimer's:\n\n")
      
     zalpha <- 5.45   # 5.4513104
     z1beta <- -0.84

     q <- 1-p
     pi <- 0.065      # 0.07 generates 163, equivalent to ASP
     k <- pi*(g*p+q)^2
     s <- (1-pi*g^2)*p^2+(1-pi*g)*2*p*q+(1-pi)*q^2
     # LGL formula
     lambda <- pi*(g^2*p+q-(g*p+q)^2)/(1-pi*(g*p+q)^2)
     # my own
     lambda <- pi*p*q*(g-1)^2/(1-pi*(g*p+q)^2)
     # not sure about +/-!
     n <- (z1beta+zalpha)^2/lambda

     # may be used to correct for population prevalence
     cat("\nThe population-based result: Kp=",k, "Kq=",s, "n=",ceiling(n),"\n")

     # population-based sample size
     strlen <- function(x) length(unlist(strsplit(as.character(x),split="")))
     kp <- c(0.01,0.05,0.10)
     cat("\nRandom ascertainment with disease prevalence\n")
     cat("\n          1%          5%         10%\n\n")
     for(i in 1:12) {
       g <- models[i,1]
       p <- models[i,2]
       q <- 1-p
       for(j in 1:3) {
         n <- pbsize(g,p,kp[j])
         cat(rep("",12-strlen(ceiling(n))),format(ceiling(n)))
       }
       cat("\n")
       if(i%%4==0) cat("\n")
     } 
     cat("This is only an approximation, a more accurate result\n")
     cat("can be obtained by Fisher's exact test\n")
     ## End(Not run)

