redistF <- function(y, d, Fdist) { n <- length(d) if ( length(y) != n ) stop("length of y and d must agree") if ( any((d != 0) & (d !=1)) ) stop("d must be either 0 or 1") if ( length(Fdist) != n ) stop("Fdist must have length n") # Fdist must be a probability distribution # the time vector is the ysort, and the prob mass is in Fdist yorder <- order(y, -d) ysort <- y[yorder] dsort <- d[yorder] WeightMat <- diag( rep(1, n) ) for (i in 1:(n-1)) if ( dsort[i] == 0 ) { WeightMat[i, (i+1):n] <- Fdist[(i+1):n]/sum(Fdist[(i+1):n]) WeightMat[i,i] <- 0 } list(y=ysort, d=dsort, weight=WeightMat, ordY=yorder) }