File: epi.sscomps.R

package info (click to toggle)
r-cran-epir 2.0.80%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,332 kB
  • sloc: makefile: 5
file content (64 lines) | stat: -rw-r--r-- 2,225 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"epi.sscomps" <- function(treat, control, n, power, r = 1, design = 1, sided.test = 2, nfractional = FALSE, conf.level = 0.95) {
   
   alpha.new <- (1 - conf.level) / sided.test
   z.alpha <- qnorm(1 - alpha.new, mean = 0, sd = 1)
 
   if(!is.na(treat) & !is.na(control) & is.na(n) & !is.na(power)){
     # From: Therneau TM and Grambsch PM 2000. Modelling Survival Data - Extending the Cox Model. Springer, London, p 61 - 65.
     z.beta <- qnorm(power, mean = 0, sd = 1)
     p <- r / (r + 1); q <- 1 - p
     # p <- 0.5; q <- 1 - p
     exp.beta <- log(treat) / log(control)
     n <- ((z.alpha + z.beta)^2) / (p * q * log(exp.beta)^2)
  
     # Account for the design effect:
     n <- n * design
  
     if(nfractional == TRUE){
       n.crude <- n
       n.treat <- (n / (r + 1)) * r
       n.control <- (n / (r + 1)) * 1
       n.total <- n.treat + n.control
     }
     
     if(nfractional == FALSE){
       n.crude <- ceiling(n)
       n.treat <- ceiling(n / (r + 1)) * r
       n.control <- ceiling(n / (r + 1)) * 1
       n.total <- n.treat + n.control
     }
     

     rval <- list(n.crude = n.crude, n.total = n.total, n.treat = n.treat, n.control = n.control)
     }

   else 
   if(!is.na(treat) & !is.na(control) & !is.na(n) & is.na(power)){
     # From: Therneau TM and Grambsch PM 2000. Modelling Survival Data - Extending the Cox Model. Springer, London, p 61 - 65. 
     beta <- log(treat / control)
     p <- r / (r + 1); q <- 1 - p
  
     # Account for the design effect:
     n <- n / design
  
     z.beta <- sqrt(n * p * q * beta^2) - z.alpha
     power <- pnorm(z.beta, mean = 0, sd = 1)
     rval <- list(power = power)
     }
  
   else 
   if(is.na(treat) & is.na(control) & !is.na(n) & !is.na(power)){
     # From: Therneau TM and Grambsch PM 2000. Modelling Survival Data - Extending the Cox Model. Springer, London, p 61 - 65. 
     p <- r / (r + 1); q <- 1 - p
     z.beta <- qnorm(power, mean = 0, sd = 1) 
  
     # Account for the design effect:
     n <- n / design
  
     beta <- sqrt(((z.alpha + z.beta)^2) / (n * p * q))
     delta <- exp(beta)
     rval <- list(hazard = sort(c(delta, 1/delta)))
     }

   rval
}