File: zARscore.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 (42 lines) | stat: -rw-r--r-- 999 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
zARscore <- function(dat, conf.level, units){
  N. <- 1 - ((1 - conf.level) / 2)
  z <- qnorm(N., mean = 0, sd = 1)
  
  a <- dat[1]; b <- dat[3]; c <- dat[2]; d <- dat[4]
  N1 <- a + b; N0 <- c + d
  
  sARisk.p <- ((a / N1) - (c / N0))       
  px = a / N1
  py = c / N0
  z = qchisq(conf.level, 1)
  proot = px - py
  dp = 1 - proot
  niter = 1
  while(niter <= 50){
    dp = 0.5 * dp
    up2 = proot + dp
    score = zz2stat(px, N1, py, N0, up2)
    if(score < z){proot = up2}
    niter = niter + 1
    if((dp < 0.0000001) || (abs(z - score) < 0.000001)){
      niter = 51
      ul = up2
    }
  } 
  
  proot = px - py
  dp = 1 + proot
  niter = 1
  while(niter <= 50){
    dp = 0.5 * dp
    low2 = proot - dp
    score = zz2stat(px, N1, py, N0, low2)
    if(score < z){proot = low2}
    niter = niter + 1
    if((dp < 0.0000001) || (abs(z - score) < 0.000001)){
      ll = low2
      niter = 51
    }
  }
  c(sARisk.p * units, ll * units, ul * units)
}