File: ie.setup.s

package info (click to toggle)
design 2.0.12-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 1,408 kB
  • ctags: 1,283
  • sloc: asm: 13,945; fortran: 626; sh: 22; makefile: 12
file content (55 lines) | stat: -rw-r--r-- 1,443 bytes parent folder | download | duplicates (4)
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
ie.setup <- function(failure.time, event, ie.time, break.ties=FALSE) {

s <- !is.na(ie.time)
if(all(s)) warning('every subject had an intervening event')
if(!any(s)) stop('no intervening events')
if(any(ie.time[s] > failure.time[s])) 
  stop('an ie.time was after a failure.time')
if(break.ties) {
	mindif <-
      min(diff(sort(unique(failure.time[!is.na(failure.time)]))))
    ## 8Nov01 Thanks: Josh Betcher
	k <- s & (ie.time==failure.time)
	if(sum(k)==0) warning('break.times=T but no ties found')
	ie.time[k] <- ie.time[k] - runif(sum(k),0,mindif)
}
 
if(any(ie.time[s]==failure.time[s])) 
  stop('ie.times not allowed to equal failure.times')

n <- length(failure.time)
reps <- ifelse(is.na(ie.time), 1, 2)
subs <- rep(1:n, reps)

start <- end <- ev <- ie.status <- vector('list', n)
start[]     <- 0
end[]       <- failure.time
ev[]        <- event
ie.status[] <- 0
for(i in seq(along=s)[s]) {
  start[[i]]  <- c(0, ie.time[i])
  end[[i]]    <- c(ie.time[i], failure.time[i])
  ev[[i]]     <- c(0, event[i])
  ie.status[[i]] <- c(0, 1)
}

start     <- unlist(start)
end       <- unlist(end)
ev        <- unlist(ev)
ie.status <- unlist(ie.status)

u <- units(failure.time)
units(end) <- if(u=='')'Day' else u

s <- !is.na(start+end) & (end <= start)
if(any(s)) {
  cat('stop time <= start time:\n')
  print(cbind(start=start[s], end=end[s]))
  stop()
}

S <- Surv(start, end, ev)

list(S=S, ie.status=ie.status, subs=subs, reps=reps)
}