From 99eb0ca983dc71f659957c3570074869f377f9ee Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Thu, 21 Sep 2023 18:01:08 +0200 Subject: [PATCH 01/57] Extensions to right-censored data --- conformalInference/R/check.R | 23 +- conformalInference/R/ipcw.R | 67 +++ conformalInference/R/loco.R | 269 +++++++++ conformalInference/R/loco.roo.R | 190 +++++++ conformalInference/R/rmst.pred.R | 445 +++++++++++++++ conformalInference/R/roo.R | 195 +++++++ conformalInference/R/split.R | 178 ++++++ cwiling23/fig.loco.surv.R | 921 +++++++++++++++++++++++++++++++ 8 files changed, 2287 insertions(+), 1 deletion(-) create mode 100644 conformalInference/R/ipcw.R create mode 100644 conformalInference/R/rmst.pred.R create mode 100644 cwiling23/fig.loco.surv.R diff --git a/conformalInference/R/check.R b/conformalInference/R/check.R index 2759360..0391d5d 100644 --- a/conformalInference/R/check.R +++ b/conformalInference/R/check.R @@ -23,6 +23,27 @@ check.args = function(x=NULL, y=NULL, x0=NULL, alpha=NULL, stop("special.fun must be a function") } +check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, + cens.model=NULL, alpha=NULL, train.fun=NULL, predict.fun=NULL, + mad.train.fun=NULL, mad.predict.fun=NULL, special.fun=NULL) { + + if (is.null(x) || !is.numeric(x)) stop("x must be a numeric matrix") + if (is.null(t) || !is.numeric(t)) stop("t must be a numeric vector") + if (nrow(x) != length(t)) stop("nrow(x) and length(t) must match") + if (is.null(d) || !is.numeric(d)) stop("d must be a binary (0/1) vector") + if (length(d[d!=0 & d!=1]) != 0) stop("d must be a binary (0/1) vector") + if (length(d) != length(t)) stop("length(d) and length(t) must match") + if (!is.null(w) && !is.numeric(w)) stop("w must be NULL or a numeric vector") + if (!is.null(w) && length(w) != length(t)) + stop("length(w) and length(t) must match") + if (!(cens.model %in% c("km","rsf","cox"))) + stop("cens.model must be km, rsf or cox") + check.pos.num(tau) + check.num.01(alpha) + check.args = function(x, t, x0, alpha, train.fun, + predict.fun, mad.train.fun, mad.predict.fun, special.fun) +} + check.bool = function(b) { if (is.null(b) || length(b)!=1 || !is.logical(b)) stop(paste(deparse(substitute(b)),"must be a Boolean")) @@ -51,4 +72,4 @@ check.pos.int = function(i) { check.num.01 = function(a) { if (is.null(a) || length(a)!= 1 || !is.numeric(a) || a<0 || a>1) stop(paste(deparse(substitute(a)),"must be a number between 0 and 1")) -} +} \ No newline at end of file diff --git a/conformalInference/R/ipcw.R b/conformalInference/R/ipcw.R new file mode 100644 index 0000000..6921bb0 --- /dev/null +++ b/conformalInference/R/ipcw.R @@ -0,0 +1,67 @@ +#' Computation of Inverse Probability Censoring Weights. The censoring survival +#' function can either be estimated with Kaplan-Meier, Cox or Random Survival +#' Forests. +#' +#' @param x Matrix of variables, of dimension (say) n x p. +#' @param t Vector of responses (observed times), of length (say) n. +#' @param d Vector of responses (censoring indicator), of length (say) n. +#' @param tau Horizon of time. +#' @param cens.model Model used to estimate the censoring survival function. +#' This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +#' Random Survival Forests or Cox). Default is "km". +#' +#' @return A vector of length n containing the censoring weights. +#' +#' @export ipcw + +ipcw = function(t,d,x,tau,cens.model = "km"){ + if(!is.null(x)){ x = as.matrix(x) } + if(!cens.model %in% c("km","cox","rsf")) stop("cens.model must be either km, + cox or rsf") + + if(cens.model == "km"){ + return(ipcw.km(t,d,x,tau)) + }else if(cens.model == "cox"){ + return(ipcw.cox(t,d,x,tau)) + }else if(cens.model == "rsf"){ + return(ipcw.rfsrc(t,d,x,tau)) + } +} + +ipcw.km = function(t,d,x,tau){ + n = length(t) + df = data.frame(t=t,d=1-d) + fit = survfit(Surv(t, d) ~ 1, data=df) + censfct = stepfun(fit$time,c(1,fit$surv)) + G.hat.tau = censfct(tau) + w = as.double(lapply(1:n, function(s) + (t[s] <= tau)*d[s]/ifelse(d[s],censfct(t[s]),1) + + (t[s] > tau)/G.hat.tau ) + ) + return(w) +} + +ipcw.cox = function(t,d,x,tau){ + n = length(t) + df = data.frame(t=t,d=1-d,x) + fit = survfit(coxph(Surv(t, d) ~ ., data=df), newdata=data.frame(x)) + censfct = sapply(1:n,function(j) stepfun(fit$time,c(1,fit$surv[,j]))) + w = as.double(lapply(1:n, function(s) + (t[s] <= tau)*d[s]/ifelse(d[s],censfct[[s]](t[s]),1) + + (t[s] > tau)/censfct[[s]](tau) ) + ) + + return(w) +} + +ipcw.rfsrc = function(t,d,x,tau){ + n = length(t) + df = data.frame(t=t,d=1-d,x) + fit = rfsrc(Surv(t, d) ~ ., data=df) + censfct = sapply(1:n,function(j) stepfun(fit$time.interest,c(1,fit$survival[j,]))) + w = as.double(lapply(1:n, function(s) + (t[s] <= tau)*d[s]/ifelse(d[s],censfct[[s]](t[s]),1) + + (t[s] > tau)/censfct[[s]](tau) ) + ) + return(w) +} \ No newline at end of file diff --git a/conformalInference/R/loco.R b/conformalInference/R/loco.R index 295113e..5a7c0f1 100644 --- a/conformalInference/R/loco.R +++ b/conformalInference/R/loco.R @@ -306,4 +306,273 @@ get.signif.code = function(v) { return(code) } +############################################################################### +#' Variable importance via median excess test error +#' +#' Compute confidence intervals for median excess test error due to +#' dropping a variable. Extension to estimators of the restricted mean +#' survival time with right-censored data. +#' +#' @param x Matrix of features, of dimension (say) n x p. +#' @param t Vector of responses (observed times), of length (say) n. +#' @param d Vector of responses (censoring indicator), of length (say) n. +#' @param tau Horizon of time. +#' @param train.fun A function to perform model training, i.e., to produce an +#' estimator of E(min(T*,tau)|X), the conditional expectation of the true +#' event time T* given features X. Its input arguments should be x: matrix of +#' features, t: vector of observed times, d: vector of censoring indicators +#' and tau: horizon of time. train.fun can be a function performing model +#' training for several (say m) regression models. +#' @param predict.fun A function to perform prediction for the (mean of the) +#' responses at new feature values. Its input arguments should be out: output +#' produced by train.fun, and newx: feature values at which we want to make +#' predictions. +#' @param w Censoring weights. This should be a vector of length n. +#' Default is NULL, in which case censoring weights are computed using the +#' Kaplan-Meier model. +#' @param active.fun A function which takes the output of train.fun, and reports +#' which features are active for each fitted model contained in this output. +#' Its only input argument should be out: output produced by train.fun. +#' @param vars A list specifying the variables (indices between 1 and p) +#' for which variable importance should be investigated. Alternatively, if +#' set equal to 0, the default, then all variables are investigated. If both +#' vars and active.fun are passed, the latter takes priority and the former +#' is ignored. +#' @param alpha Miscoverage level for the confidence intervals, i.e., intervals +#' with coverage 1-alpha are formed. Default for alpha is 0.1. +#' @param bonf.correct Should a Bonferroni correction be applied to the p-values +#' and confidence intervals? Default is FALSE. +#' @param split Indices that define the data-split to be used (i.e., the indices +#' define the first half of the data-split, on which the model is trained). +#' Default is NULL, in which case the split is chosen randomly. +#' @param seed Integer to be passed to set.seed before defining the random +#' data-split to be used. Default is NULL, which effectively sets no seed. +#' If both split and seed are passed, the former takes priority and the latter +#' is ignored. +#' @param verbose Should intermediate progress be printed out? Default is FALSE. +#' +#' @return A list with the following components: inf.sign, active, master, +#' bonf.correct. The first is a list, containing the results of LOCO inference +#' with the sign text adapted to right-censored data. This list has one +#' element per regression model the training and prediction functions, +#' train.fun and predict.fun. The inherent to second returned component active +#' is a list, with one element per tuning step, that reports which features +#' are active (or at least investigated) in the corresponding fitted model. +#' The third returned component master collects all active (or investigated) +#' features across all regression models, for easy reference. The last +#' component signals whether a Bonferroni correction has been applied. +#' +#' @details The sign test adapted to right-censored data is asymptotically valid +#' if the Kaplan-Meier model is used to estimate the censoring survival +#' function in the censoring weights, under the assumption of independent +#' censoring. +#' +#' @references "Distribution-Free Predictive Inference for Regression" by Lei, +#' G'Sell, Rinaldo, Tibshirani, Wasserman (2018). See also "A Comprehensive +#' Framework for Evaluating Time to Event Predictions using the Restricted +#' Mean Survival Time" by Cwiling, Perduca, Bouaziz (2023) for the extension +#' to right-censored data. +#' @export loco.surv + +loco.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, + active.fun=NULL, vars=0, alpha=0.1, rho=0.5, bonf.correct=FALSE, split=NULL, + seed=NULL, verbose=FALSE) { + + # Set up data + x = as.matrix(x) + t = as.numeric(t) + d = as.numeric(d) + if(!is.null(w)) w = as.numeric(w) + n = nrow(x) + p = ncol(x) + + # Check input arguments + check.args.surv(x=x,t=t,d=d,tau=tau,x0=x,w=w,cens.model="km", + alpha=alpha,train.fun=train.fun,predict.fun=predict.fun) + + # Users may pass in a string for the verbose argument + if (verbose == TRUE) txt = "" + if (verbose != TRUE && verbose != FALSE) { + txt = verbose + verbose = TRUE + } + + # If the user passed indices for the split, use them + if (!is.null(split)) i1 = split + # Otherwise make a random split + else { + if (!is.null(seed)) set.seed(seed) + i1 = sample(1:n,floor(n*rho)) + } + i2 = (1:n)[-i1] + n1 = length(i1) + n2 = length(i2) + + if (verbose) { + cat(sprintf("%sSplitting data into parts of size %i and %i ...\n", + txt,n1,n2)) + cat(sprintf("%sInitial training on first part ...\n",txt)) + } + + # Censoring weights + if(is.null(w)){ + if (verbose) cat(sprintf("%sComputing censoring weights ...\n",txt)) + w = ipcw(t,d,x,tau,cens.model="km") + } + + # Train on first part + out = train.fun(x[i1,,drop=F],t[i1],d[i1],tau) + + # Which variables to try dropping? + if(is.null(active.fun)){ + if (length(vars) == 1 && vars == 0) vars = 1:p + else { + if (is.null(vars) || !is.numeric(vars) || min(vars) < 1 || + max(vars) > p || vars != round(vars)) { + stop("vars must be a list of integers between 1 and p") + } + vars = unique(vars) + } + active = purrr::map(1:length(out), ~ vars) + }else{ + active = active.fun(out) + } + + master = unique(unlist(active)) + m = length(active) + J = length(master) + + that2 = matrix(predict.fun(out,x[i2,,drop=F],tau),nrow=n2) + + if (verbose) { + cat(sprintf("%sInitial residuals on second part ...\n",txt)) + } + + # Get residuals on second + res = abs(pmin(t[i2],tau) - that2) + res.drop = vector(mode="list",length=J) + + + # Re-fit after dropping each feature in the master list + for (j in Seq(1,J)) { + if (verbose) { + cat(sprintf(paste("\r%sRe-fitting after dropping feature %i (%i of %i", + "considered) ..."),txt,master[j],j,J)) + flush.console() + } + + # Train on the first part, without variable + out.j = train.fun(x[i1,-master[j],drop=F],t[i1],d[i1],tau) + + # Get predictions on the other, without variable + pred.j = matrix(predict.fun(out.j,x[i2,-master[j],drop=F],tau),nrow=n2) + res.drop[[j]] = abs(pmin(t[i2],tau) - pred.j) + } + if (verbose) cat("\n") + + # Compute p-values and confidence intervals at each tuning step + inf.sign = vector(mode="list",length=m) + + for (l in 1:m) { + if (verbose) { + if (m>1) { + cat(sprintf(paste("\r%sPerforming LOCO analysis at tuning step %i", + "(of %i) ..."),txt,l,m)) + flush.console() + } + else cat(sprintf("%sPerforming LOCO analysis ...",txt)) + } + + k = length(active[[l]]) + inf.sign[[l]] = matrix(0,k,3) + for (j in Seq(1,k)) { + j.master = which(master == active[[l]][j]) + z = res.drop[[j.master]][,l] - res[,l] + inf.sign[[l]][j,] = my.surv.sign.test(t[i2],d[i2],w[i2],z, + tau,alpha,k,bonf.correct) + } + + rownames(inf.sign[[l]]) = active[[l]] + colnames(inf.sign[[l]]) = c("P-value", "LowConfPt", "UpConfPt") + } + if (verbose) cat("\n") + + out = list(inf.sign=inf.sign, + active=active, master=master, bonf.correct=bonf.correct) + class(out) = "loco.surv" + return(out) +} + + +#' Print function for loco.surv object. +#' +#' @param x The loco.surv object. +#' @param digits Number of digits to display. Default is 3. +#' @param ... Other arguments (currently not used). +#' +#' @export + +print.loco.surv = function(x, digits=3, ...) { + + cat(paste("\nDisplaying results of LOCO analysis. Notes:\n", + "\n- P-values are from a one-sided test of the target parameter", + "\n (mean or median excess test error) being equal to zero versus", + "\n greater than zero.", + "\n- Confidence intervals are from inverting the two-sided version", + "\n of this test.", + "\n- Bonferonni correction:", + ifelse(x$bonf.correct, "yes.", "no."), "\n")) + + m = length(x$inf.sign) + for (i in 1:m) { + if (m>1) cat(sprintf("\n------- Tuning step %i -------\n",i)) + + cat("\nSign test results:\n\n") + tab = round(x$inf.sign[[i]],digits=digits) + code = get.signif.code(x$inf.sign[[i]][,1]) + tab = cbind(rownames(tab),tab,code) + colnames(tab)[1] = "Var" + colnames(tab)[5] = "" + rownames(tab) = rep("",nrow(tab)) + print(tab,quote=FALSE) + + cat("\nSignificance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n") + } +} + + + +# Median inference: one-sided p-value but a two-sided confidence interval, +# for right-censored data +my.surv.sign.test = function(t, d, w, z, tau, alpha, k, bonf.correct=TRUE){ + n = length(t) + phi = (z>0)*1 + (z==0)*rbinom(n,1,0.5) + w[t > tau] = 0 + + fit = survfit(Surv(t, d) ~ 1, data=data.frame(t,d)) + S.tau = fit$surv[max(which(fit$time<=tau))] + + df.sort = arrange(data.frame(t, d, w, phi),t) %>% + mutate(Y.Ti = (n-1:n+1)/n, + phi.w = phi*w, + phi.bar = rev(cumsum(rev(phi.w)))/n, + squared.diff = (phi.w - d*phi.bar/Y.Ti - (t<=tau)*d*S.tau/(1-S.tau)*mean(phi*w)/Y.Ti)**2 + ) + + V = mean(df.sort$squared.diff)/(1-S.tau)**2 + + tn2 <- sqrt(n/V)*(mean(df.sort$phi.w)/(1-S.tau) - 0.5) + pval <- 1-pnorm(tn2) + + # Apply Bonferroni correction for k tests + if (bonf.correct) { + pval = min(k*pval,1) + alpha = alpha/k + } + + left = mean(df.sort$phi.w)/(1-S.tau) - sqrt(V/n)*qnorm(1-alpha/2) + right = mean(df.sort$phi.w)/(1-S.tau) + sqrt(V/n)*qnorm(1-alpha/2) + + return(c(pval,left,right)) +} \ No newline at end of file diff --git a/conformalInference/R/loco.roo.R b/conformalInference/R/loco.roo.R index 6635437..fea089d 100644 --- a/conformalInference/R/loco.roo.R +++ b/conformalInference/R/loco.roo.R @@ -193,3 +193,193 @@ conformal.diff.int = function(mu1, mu2, lo, up) { return(list(lo=v.lo,up=v.up)) } + +############################################################################### + +#' Compute prediction intervals for the excess test error due to dropping a +#' variable, measured in-sample and having asymptotically valid in-sample +#' coverage. Extension to estimators of the restricted mean survival time with +#' right-censored data. +#' +#' @param x Matrix of variables, of dimension (say) n x p. +#' @param t Vector of responses (observed times), of length (say) n. +#' @param d Vector of responses (censoring indicator), of length (say) n. +#' @param tau Horizon of time. +#' @param train.fun A function to perform model training, i.e., to produce an +#' estimator of E(min(T*,tau)|X), the conditional expectation of the true +#' event time T* given features X. Its input arguments should be x: matrix of +#' features, t: vector of observed times, d: vector of censoring indicators +#' and tau: horizon of time. train.fun can be a function performing model +#' training for several (say m) regression models. +#' @param predict.fun A function to perform prediction for the (mean of the) +#' responses at new feature values. Its input arguments should be out: output +#' produced by train.fun, and newx: feature values at which we want to make +#' predictions. +#' @param w Censoring weights. This should be a vector of length n. Default is +#' NULL, in which case censoring weights are computed using the censoring +#' model specified by the parameter cens.model, or by default with the +#' Kaplan-Meier model. +#' @param cens.model Model used to estimate the censoring survival function. +#' This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +#' Random Survival Forests or Cox). Default is "km". +#' @param vars A list specifying the variables (indices between 1 and p) +#' for which variable importance should be investigated. Alternatively, if +#' set equal to 0, the default, then all variables are investigated. +#' @param alpha Miscoverage level for the prediction intervals, i.e., intervals +#' with coverage 1-alpha are formed. Default for alpha is 0.1. +#' @param mad.train.fun A function to perform training on the observed absolute +#' residuals R = |min(T,tau) - m(X)| and their associated censoring weights, +#' where m denotes the estimator produced by train.fun, to estimate E(R*|X) +#' for the true absolute residual denoted R*. +#' This is used to scale the conformal score, to produce a prediction interval +#' with varying local width. The input arguments to mad.train.fun should be +#' x: matrix of features, y: vector of observed absolute residuals, and w: +#' censoring weights. The default for mad.train.fun is NULL, which means that +#' no training is done on the absolute residuals, and the usual (unscaled) +#' conformal score is used. Note that if mad.train.fun is non-NULL, then so +#' must be mad.predict.fun (see next). +#' @param mad.predict.fun A function to perform prediction for the (mean of the) +#' absolute residuals at new feature values. Its input arguments should be +#' out: output produced by mad.train.fun, and newx: feature values at which we +#' want to make predictions. The default for mad.predict.fun is NULL, which +#' means that no local scaling is done for the conformal score, i.e., the +#' usual (unscaled) conformal score is used. +#' @param split Indices that define the data-split to be used (i.e., the indices +#' define the first half of the data-split). Note that this split is common +#' both to conformal.pred.roo.surv (whether already run, or to be run inter- +#' nally, see below) and the excess error intervals computed by this function. +#' Default is NULL, in which case the split is chosen randomly. +#' @param seed Integer to be passed to set.seed before defining the random +#' data-split to be used. Default is NULL, which effectively sets no seed. +#' If both split and seed are passed, the former takes priority and the latter +#' is ignored. +#' @param out.roo.surv Output from running conformal.pred.roo.surv on the given +#' data set; default is NULL, which means that conformal.pred.roo.surv will be +#' run internally in order to compute in-sample prediction intervals. If +#' is NULL, then the data-split common to conformal.pred.roo.surv and this +#' out.roo.surv function will be determined by the split or seed arguments. If +#' non-NULL, then the common data-split will be determined by that recorded in +#' out.roo.surv, and the split and seed arguments will be (silently) ignored. +#' @param verbose Should intermediate progress be printed out? Default is FALSE. +#' +#' @return A list with the following components: lo, up, vars, split, +#' out.roo. The third component is a list of variables that were tested (i.e., +#' dropped one at a time, to compute excess error). The first two are arrays +# of dimension n x length(vars) x m. +#' The indices used for the half of the data-split are +#' returned in split. Finally, for convenience, the output from running +#' conformal.pred.roo.surv is stored in out.roo. +#' +#' @references "Distribution-Free Predictive Inference for Regression" by Lei, +#' G'Sell, Rinaldo, Tibshirani, Wasserman (2018). See also "A Comprehensive +#' Framework for Evaluating Time to Event Predictions using the Restricted +#' Mean Survival Time" by Cwiling, Perduca, Bouaziz (2023) for the extension +#' to right-censored data. +#' @export loco.roo.surv + +loco.roo.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, + cens.model="km", vars=0, alpha=0.1, mad.train.fun=NULL, mad.predict.fun=NULL, + split=NULL, seed=NULL, out.roo.surv=NULL, verbose=FALSE) { + + # Set up data + x = as.matrix(x) + t = as.numeric(t) + d = as.numeric(d) + if(!is.null(w)) w = as.numeric(w) + n = nrow(x) + p = ncol(x) + + # Check input arguments + check.args.surv(x=x,t=t,d=d,tau=tau,x0=x,w=w,cens.model=cens.model, + alpha=alpha,train.fun=train.fun,predict.fun=predict.fun, + mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun) + + # Users may pass in a string for the verbose argument + if (verbose == TRUE) txt = "" + if (verbose != TRUE && verbose != FALSE) { + txt = verbose + verbose = TRUE + } + + inds = vector(mode="list",length=2) + + # Compute in-sample rank-one-out intervals ourselves + if (is.null(out.roo.surv)) { + # If the user passed indices for the split, use them + if (!is.null(split)) inds[[1]] = split + # Otherwise make a random split + else inds[[1]] = sample(1:n,floor(n/2)) + + if (verbose) { + cat(sprintf(paste("%sComputing in-sample rank-one-out conformal", + "prediction intervals ...\n"),txt)) + } + + out.roo.surv = conformal.pred.roo.surv(x,t,d,tau,train.fun,predict.fun,alpha=alpha, + mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun, split=inds[[1]], + w=w, cens.model=cens.model,verbose=ifelse(verbose,paste0(txt,"\t"),FALSE)) + } + # These have already been computed + else { + if (verbose) { + cat(sprintf(paste("%sUsing given in-sample rank-one-out conformal", + "prediction intervals ...\n"),txt)) + cat(sprintf("%sSplitting data into parts of size %i and %i ...\n",txt, + floor(n/2),ceiling(n/2))) + } + inds[[1]] = out.roo.surv$split + } + + inds[[2]] = (1:n)[-inds[[1]]] + pred = out.roo.surv$pred + m = ncol(pred) + + # Which variables to try dropping? + if (length(vars) == 1 && vars == 0) vars = 1:p + else { + if (is.null(vars) || !is.numeric(vars) || min(vars) < 1 || + max(vars) > p || vars != round(vars)) { + stop("vars must be a list of integers between 1 and p") + } + vars = unique(vars) + } + nv = length(vars) + lo = up = array(0,dim=c(n,nv,m)) + + # Train dropped variable models on one part, get residuals on the other + for (k in 1:2) { + i1 = inds[[k]]; n1 = length(i1) + i2 = inds[[3-k]]; n2 = length(i2) + + if (verbose) { + cat(sprintf("%sHandling %s part of the data-split ...\n", + txt,ifelse(k==1,"first","second"))) + } + + for (j in 1:nv) { + if (verbose) { + cat(sprintf("\r%sDropping variable %i (%i of %i considered) ...", + txt,vars[j],j,nv)) + flush.console() + } + + # Train on the first part, without variable + out.j = train.fun(x[i1,-vars[j],drop=F],t[i1],d[i1],tau) + + # Get predictions on the other, without variable + pred.j = matrix(predict.fun(out.j,x[i2,-vars[j],drop=F],tau),nrow=n2) + preds[i2,j,] = pred.j + + # Get the conformal intervals for differences in the residuals + a = conformal.diff.int(pred[i2,,drop=F],pred.j, + out.roo.surv$lo[i2,,drop=F],out.roo.surv$up[i2,,drop=F]) + lo[i2,j,] = a$lo + up[i2,j,] = a$up + } + + if (verbose) cat("\n") + } + + return(list(lo=lo,up=up,vars=vars,split=inds[[1]], + out.roo.surv=out.roo.surv)) +} diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R new file mode 100644 index 0000000..06bbded --- /dev/null +++ b/conformalInference/R/rmst.pred.R @@ -0,0 +1,445 @@ +#' Estimation of the restricted mean survival time, estimation of the mean +#' squared error, computation of prediction intervals and evaluation of (local +#' and global) variable importance. +#' +#' The bias of computing residuals on observed censored times is corrected by +#' using censoring weights. Convergence guarantees for global variable +#' importance currently hold only if the Kaplan-Meier estimator is used to +#' compute censoring weights. +#' +#' @param x Matrix of variables, of dimension (say) n x p. +#' @param t Vector of responses (observed times), of length (say) n. +#' @param d Vector of responses (censoring indicator), of length (say) n. +#' @param tau Horizon of time. +#' @param train.fun A function to perform model training, i.e., to produce an +#' estimator of E(min(T*,tau)|X), the conditional expectation of the true +#' event time T* given features X. Its input arguments should be x: matrix of +#' features, t: vector of observed times, d: vector of censoring indicators +#' and tau: horizon of time. train.fun can be a function performing model +#' training for several (say m) learning models. +#' @param predict.fun A function to perform prediction for the (mean of the) +#' responses at new feature values. Its input arguments should be out: output +#' produced by train.fun, and newx: feature values at which we want to make +#' predictions. +#' @param w Censoring weights. This should be a vector of length n. Default is +#' NULL, in which case censoring weights are computed using the censoring +#' model specified by the parameter cens.model, or by default with the +#' Kaplan-Meier model. +#' @param cens.model Model used to estimate the censoring survival function. +#' This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +#' Random Survival Forests or Cox). Default is "km". +#' @param n.folds The number of folds for the cross-validated estimation of the +#' mean squared error. If n.folds = 1 then the whole data set is used both to +#' train the estimator and to compute the mean squared error. The default +#' number is 10 folds. +#' @param active.fun A function which takes the output of train.fun, and reports +#' which features are active for each fitted model contained in this output. +#' Its only input argument should be out: output produced by train.fun. +#' @param alpha Miscoverage level for the prediction intervals, i.e., intervals +#' with coverage 1-alpha are formed. Default for alpha is 0.1. +#' @param vars A list specifying the variables (indices between 1 and p) +#' for which variable importance should be investigated. Alternatively, if +#' set equal to 0, the default, then all variables are investigated. +#' @param bonf.correct Should a Bonferroni correction be applied to the p-values +#' and confidence intervals? Default is FALSE. +#' @param mad.train.fun A function to perform training on the observed absolute +#' residuals R = |min(T,tau) - m(X)| and their associated censoring weights, +#' where m denotes the estimator produced by train.fun, to estimate E(R*|X) +#' for the true absolute residual denoted R*. +#' This is used to scale the conformal score, to produce a prediction interval +#' with varying local width. The input arguments to mad.train.fun should be +#' x: matrix of features, y: vector of observed absolute residuals, and w: +#' censoring weights. The default for mad.train.fun is NULL, which means that +#' no training is done on the absolute residuals, and the usual (unscaled) +#' conformal score is used. Note that if mad.train.fun is non-NULL, then so +#' must be mad.predict.fun (see next). +#' @param mad.predict.fun A function to perform prediction for the (mean of the) +#' absolute residuals at new feature values. Its input arguments should be +#' out: output produced by mad.train.fun, and newx: feature values at which we +#' want to make predictions. The default for mad.predict.fun is NULL, which +#' means that no local scaling is done for the conformal score, i.e., the +#' usual (unscaled) conformal score is used. +#' @param split Indices that define the data-split to be used (i.e., the indices +#' define the first half of the data-split). Note that this split is common +#' to conformal.pred.roo.surv (whether already run, or to be run inter- +#' nally, see below), loco.roo.surv and loco.surv. +#' Default is NULL, in which case the split is chosen randomly. +#' @param seed Integer to be passed to set.seed. Default is NULL, which +#' effectively sets no seed. +#' @param out.roo.surv Output from running conformal.pred.roo.surv on the given +#' data set; default is NULL, which means that conformal.pred.roo.surv will be +#' run internally in order to compute in-sample prediction intervals. If +#' is NULL, then the data-split common to conformal.pred.roo.surv and this +#' out.roo.surv function will be determined by the split or seed arguments. If +#' non-NULL, then the common data-split will be determined by that recorded in +#' out.roo.surv, and the split argument will be (silently) ignored. +#' @param verbose Should intermediate progress be printed out? Default is FALSE. +#' @param error Boolean indicating whether or not to estimate the mean squared +#' error. Default is TRUE. +#' @param roo Boolean indicating whether or not to compute in-sample rank-one- +#' out prediction intervals. Default is TRUE. +#' @param vimpL Boolean indicating whether or not to compute local variable +#' importance. Default is TRUE. +#' @param vimpG Boolean indicating whether or not to compute global variable +#' importance. Default is TRUE. +#' +#' @return A list with the following components: x, split, mse, out.roo.surv, +#' out.loco.roo.surv, out.loco.surv. The matrix of variables x is returned in +#' x. The indices used for the half of the data-split are returned in split. +#' mse is a matrix of dimension n.folds x m containing the estimation of the +#' mean squared error using censoring weights on each fold and for each +#' learning model. The last three components are the outputs of respectively +#' roo.surv, loco.roo.surv and loco.surv. +#' +#' @details Analysis framework of one or more restricted mean survival time +#' estimation model(s). Details are given in the descriptions of functions +#' roo.surv, loco.roo.surv and loco.surv. +#' +#' @references See "Distribution-Free Predictive Inference for Regression" by +#' Lei, G'Sell, Rinaldo, Tibshirani, Wasserman (2018) as a reference for +#' conformal prediction. See "A Comprehensive Framework for Evaluating Time to +#' Event Predictions using the Restricted Mean Survival Time" by Cwiling, +#' Perduca, Bouaziz (2023) for the extension to right-censored data. +#' @export rmst.pred + +rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, + cens.model="km", n.folds=10, active.fun=NULL, alpha=0.1, rho=0.5, vars=0, + bonf.correct=FALSE, mad.train.fun=NULL, mad.predict.fun=NULL, + split=NULL, seed=NULL, out.roo.surv=NULL, verbose=FALSE, + error=T,roo=T,vimpL=T,vimpG=T) { + + # Set up data + x = as.matrix(x) + t = as.numeric(t) + d = as.numeric(d) + if(!is.null(w)) w = as.numeric(w) + n = nrow(x) + p = ncol(x) + + # Check input arguments + check.args.surv(x=x,t=t,d=d,tau=tau,x0=x,w=w,cens.model=cens.model, + alpha=alpha,train.fun=train.fun,predict.fun=predict.fun, + mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun) + + if (is.null(n.folds) || !is.numeric(n.folds) || length(n.folds) > 1 || + n.folds < 1 || n.folds > n || n.folds != round(n.folds)) { + stop("n.folds must be an integer between 1 and n") + } + + # List of elements to return + out = list(m=NULL,x=x,split=NULL,mse=NULL,out.roo.surv=NULL, + out.loco.roo.surv=NULL, out.loco.surv=NULL) + + # Users may pass in a string for the verbose argument + if (verbose == TRUE) txt = "" + if (verbose != TRUE && verbose != FALSE) { + txt = verbose + verbose = TRUE + } + + # Seed + if (!is.null(seed)) set.seed(seed) + + # Censoring weights + if(is.null(w)){ + if (verbose) cat(sprintf("%sComputing censoring weights ...\n",txt)) + w = ipcw(t,d,x,tau,cens.model) + } + + if(error){ + # Estimate the mean squared error + if (verbose) { + cat(sprintf(paste("%sComputing mean squared error ...\n"),txt)) + } + mse = wrss(x,t,d,tau,train.fun,predict.fun,n.folds=n.folds,w=w) + out$mse = mse + out$m = ifelse(is.null(nrow(mse)),length(mse),ncol(mse)) + } + + + # Compute in-sample rank-one-out intervals ourselves + if (is.null(out.roo.surv)) { + # If the user passed indices for the split, use them, + # otherwise make a random split + if (is.null(split)) split = sample(1:n,floor(n*rho)) + + if(roo){ + if (verbose) { + cat(sprintf(paste("%sComputing in-sample rank-one-out conformal", + "prediction intervals ...\n"),txt)) + } + + out.roo.surv = conformal.pred.roo.surv(x,t,d,tau,train.fun,predict.fun, + alpha=alpha,mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun, + split=split,w=w, cens.model=cens.model,verbose=F) + out$out.roo.surv=out.roo.surv + out$m = ncol(out.roo.surv$pred) + } + } + # These have already been computed + else { + split = out.roo.surv$split + } + out$split = split + + + if(vimpL){ + # Local variable importance + if (verbose) { + cat(sprintf(paste("%sComputing local variable importance ...\n"),txt)) + } + out.loco.roo.surv = loco.roo.surv(x, t, d, tau, train.fun, predict.fun, + vars=vars, alpha=alpha, out.roo.surv=out.roo.surv, verbose=F) + out$out.loco.roo.surv=out.loco.roo.surv + out$m = ncol(out.loco.roo.surv$out.roo.surv$pred) + } + + if(vimpG){ + # Global variable importance + if (verbose) { + cat(sprintf(paste("%sComputing global variable importance ...\n"),txt)) + } + out.loco.surv = loco.surv(x, t, d, tau, train.fun, predict.fun, + active.fun=active.fun, vars=vars, alpha=alpha, bonf.correct=bonf.correct, + split=split, verbose=F) + out$out.loco.surv=out.loco.surv + out$m = length(out.loco.surv$active) + } + + + class(out) = "rmst.pred" + return(out) +} + + +#' Print function for rmst.pred object. +#' +#' @param x The rmst.pred object. +#' @param elements Selection among "mse", "range", "vimp", or "all", describing +#' which elements of the analysis to show. If "mse", then the results on the +#' estimation of the mean squared error are displayed; if "range", then +#' information on the range of the prediction intervals are displayed; if +#' "vimp", then results of global variable importance are displayed. If +#' "all", then the results from all elements are displayed. Default is "all". +#' @param digits Number of digits to display. Default is 3. +#' @param model.names Names given to the different learning models given to +#' train.fun. Default is NULL. +#' @param var.names Names given to the different variables used in the +#' regression. Default is NULL. +#' @param ... Other arguments (currently not used). +#' +#' @export + +print.rmst.pred = function(x,elements=c("all"),digits=3, + model.names=NULL, var.names=NULL, ...) { + + n.folds = ifelse(is.null(nrow(x$mse)),1,nrow(x$mse)) + if(is.null(x$m)) stop("Nothing to print") + m = x$m + if(is.null(model.names)){model.names = paste("Model",1:m)} + if(!is.character(model.names) || length(model.names)!=m) + stop("model.names must be a vector of strings of size m") + if(!("mse" %in% elements) && !("range" %in% elements) && + !("vimp" %in% elements) && !("all" %in% elements)) + stop("elements must contain at least mse, range, vimp or all") + + if(("mse" %in% elements || "all" %in% elements) && !is.null(x$mse)){ + if(n.folds==1){ + cat("\n*Estimation of the mean squared error on the training set.\n") + mse.disp = paste(round(x$mse,digits=digits)) + }else{ + cat(paste("\n*Estimation of the mean squared error on",nrow(x$mse),"folds:", + "\n Mean and quantiles are computed and displayed as follows:", + "\n Mean [0.1-quantile, 0.9-quantile]\n")) + mse.disp = paste(round(apply(x$mse,2,mean),digits=digits),"[", + round(apply(x$mse,2,function(s)quantile(s,0.1)),digits=digits),",", + round(apply(x$mse,2,function(s)quantile(s,0.9)),digits=digits),"]") + } + } + + + if(("range" %in% elements || "all" %in% elements) && !is.null(x$out.roo.surv)){ + d = x$out.roo.surv$up - x$out.roo.surv$lo + + if(sum(apply(d,2,function(s)length(unique(s)))) == m){ + cat("\n*Range of the prediction intervals (centered on the predictions).\n") + d.disp = paste(round(apply(d,2,mean),digits=digits)) + }else{ + cat("\n*Mean and quantiles of the range of the prediction intervals", + "\n (centered on the predictions) displayed as follows:", + "\n Mean [0.1-quantile, 0.9-quantile]\n") + + d.disp = paste(round(apply(d,2,mean),digits=digits),"[", + round(apply(d,2,function(s)quantile(s,0.1)),digits=digits),",", + round(apply(d,2,function(s)quantile(s,0.9)),digits=digits),"]") + } + } + + + if(("vimp" %in% elements || "all" %in% elements) && !is.null(x$out.loco.surv)){ + cat(paste("\n*Displaying results of LOCO analysis. Notes:\n", + "\n - P-values are from a one-sided test of the target parameter", + "\n (mean or median excess test error) being equal to zero versus", + "\n greater than zero.", + "\n - Confidence intervals are from inverting the two-sided version", + "\n of this test.", + "\n - Bonferonni correction:", + ifelse(x$out.loco.surv$bonf.correct, "yes.", "no."), "\n")) + } + + + + for (i in 1:m) { + if (m>1) cat(sprintf("\n------- %s -------\n",model.names[i])) + + if(("mse" %in% elements || "all" %in% elements) && !is.null(x$mse)){ + cat("\nMean squared error estimation:\n") + cat(sprintf("\n %s \n", mse.disp[i])) + } + + if(("range" %in% elements || "all" %in% elements) && !is.null(x$out.roo.surv)){ + cat("\nRange of the prediction interval around the prediction:\n") + cat(sprintf("\n %s \n", d.disp[i])) + } + + if(("vimp" %in% elements || "all" %in% elements) && !is.null(x$out.loco.surv)){ + cat("\nSign test results:\n\n") + tab = round(x$out.loco.surv$inf.sign[[i]],digits=digits) + if(!is.null(var.names)) rownames(tab) = var.names + code = get.signif.code(x$out.loco.surv$inf.sign[[i]][,1]) + tab = cbind(rownames(tab),tab,code) + colnames(tab)[1] = "Var" + colnames(tab)[5] = "" + rownames(tab) = rep("",nrow(tab)) + print(tab,quote=FALSE) + + cat("\nSignificance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n") + } + } +} + + +#' Plot function for rmst.pred object. +#' +#' @param x The rmst.pred object. +#' @param elements Selection among "mse", "range", "vimpL", "vimpG" or "all" +#' describing which elements of the analysis to show. If "mse" then the +#' results on the estimation of the mean squared error are displayed; if +#' "vimpL" then results of local variable importance are displayed; if "vimpG" +#' then results of global variable importance are displayed. If "all" then the +#' results from all elements are displayed. Default is "all". +#' @param model.names Names given to the different learning models given to +#' train.fun. Default is NULL. +#' @param varsL A list specifying the variables (indices between 1 and p) +#' for which local variable importance should be plotted. Alternatively, if +#' set equal to 0, the default, then local variable importance is plotted for +#' all variables. +#' @param ... Other arguments (currently not used). +#' +#' @export + +plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, varsL=0, ...) { + + n.folds = ifelse(is.null(nrow(x$mse)),1,nrow(x$mse)) + if(is.null(x$m)) stop("Nothing to plot") + m = x$m + if(is.null(model.names)){model.names = paste("Model",1:m)} + if(!is.character(model.names) || length(model.names)!=m) + stop("model.names must be a vector of strings of size m") + if(!("mse" %in% elements) && !("range" %in% elements) && + !("vimpL" %in% elements) && !("vimpG" %in% elements) + && !("all" %in% elements)) + stop("elements must contain at least mse, range, vimpL, vimpG or all") + + if(("mse" %in% elements || "all" %in% elements) && !is.null(x$mse)){ + V = nrow(x$mse) + tab = data.frame(rep=1:V,x$mse) + colnames(tab) = c("rep",model.names) + tab = reshape::melt(tab,id="rep") + colnames(tab) = c("rep","model","mse") + plot = tab %>% + ggplot(aes(x = as.factor(model), y = mse)) + + geom_boxplot(lwd=0.3,outlier.size = 0.3, fatten=1) + + theme_bw() + + theme(axis.text.x = element_text(angle = 90), + panel.grid.major = element_blank(), + panel.grid.minor = element_blank()) + + labs(x = 'Learning model', y = 'Estimated mean squared error') + print(plot) + } + + if(("vimpL" %in% elements || "all" %in% elements) && !is.null(x$out.loco.roo.surv)){ + if (length(varsL) == 1 && varsL == 0){varsL = x$out.loco.roo.surv$vars} + for (i in 1:m){ + for (j in varsL){ + plot(x$x[,j],x$x[,j],ylim=range(c(x$out.loco.roo.surv$lo, + x$out.loco.roo.surv$up)),xlab="Location",ylab="Interval", + main=paste(model.names[i], "- Var.",j),col=NA) + cols = ifelse(x$out.loco.roo.surv$lo[,j,i] <= 0, 1, 3) + segments(x$x[,j],x$out.loco.roo.surv$lo[,j,i], + x$x[,j],x$out.loco.roo.surv$up[,j,i], + col=cols,lwd=1) + abline(h=0, lty=2, lwd=2, col=2) + } + } + } + + if(("vimpG" %in% elements || "all" %in% elements) && !is.null(x$out.loco.surv)){ + ylim = range(unlist(map(x$out.loco.surv$inf.sign,~range(.[,2:3])))) + for (i in 1:m){ + p = length(x$out.loco.surv$active[[i]]) + plot(c(), c(), xlim=c(1,p), ylim=ylim, xaxt="n", + main=model.names[i], + xlab="Variable", ylab="Confidence interval") + axis(side=1, at=1:p, labels=FALSE) + for (j in 1:p) { + axis(side=1, at=j, labels=x$out.loco.surv$active[[i]][j], cex.axis=0.75, + line=0.5*j%%2) + } + abline(h=0.5) + segments(1:p, x$out.loco.surv$inf.sign[[i]][,2], + 1:p, x$out.loco.surv$inf.sign[[i]][,3], + col="red", lwd=2) + points(1:p,(x$out.loco.surv$inf.sign[[i]][,3]+x$out.loco.surv$inf.sign[[i]][,2])/2, + col="red",pch=23) + } + } + +} + + +# Function to compute the WRSS estimator of the mean squared error. +# If n.folds > 1 then the estimator is computed n.folds times using cross- +# validation. +wrss = function(x,t,d,tau,train.fun,predict.fun,n.folds=1, + w=NULL,t0=NULL,d0=NULL,x0=NULL,w0=NULL,cens.model="km"){ + if((is.null(t0) && !is.null(x0)) || (!is.null(t0) && is.null(x0)) || + (!is.null(t0) && is.null(d0) && is.null(w0))) + stop("t0 and x0 are requested to estimate the error. Additionally, + d0 must be given if w0 is not.") + if(is.null(x0)){ + n = length(t) + if(is.null(w)){w = ipcw(t,d,x,tau,cens.model)} + if(n.folds==1){ + # Train and fit on full data set + out.all = train.fun(x,t,d,tau) + fit.all = matrix(predict.fun(out.all,x,tau),nrow=n) + mse = apply(w*(pmin(t,tau) - fit.all)**2,2,sum)/n + }else{ + # Cross-validation + folds = sample(cut(1:n,breaks=n.folds,labels=FALSE)) + folds = purrr::map(1:n.folds, ~ which(folds==.,arr.ind=TRUE)) + trainings = purrr::map(folds, ~ train.fun(x[-.,],t[-.],d[-.],tau)) + fits = purrr::map2(folds,trainings, ~ matrix(predict.fun(.y,x[.x,],tau),nrow=length(.x))) + mse = purrr::map2(folds,fits, ~ apply(w[.x]*(pmin(t[.x],tau) - .y)**2,2,sum)/length(w[.x])) + mse = matrix(unlist(mse),nrow=n.folds,byrow=T) + } + }else{ + if(is.null(w0)){w0 = ipcw(t0,d0,x0,tau,cens.model)} + # Train on full data set and fit on new data set + out.all = train.fun(x,t,d,tau) + fit.all = matrix(predict.fun(out.all,x0,tau),nrow=nrow(x0)) + mse = apply(w0*(pmin(t0,tau) - fit.all)**2,2,sum)/length(w0) + } + return(mse) +} diff --git a/conformalInference/R/roo.R b/conformalInference/R/roo.R index cb5c0d0..af310a2 100644 --- a/conformalInference/R/roo.R +++ b/conformalInference/R/roo.R @@ -176,3 +176,198 @@ conformal.pred.roo = function(x, y, train.fun, predict.fun, alpha=0.1, return(list(pred=pred,lo=lo,up=up,fit=fit,split=inds[[1]], fit.all=fit.all,out.all=out.all)) } + + +#' In-sample IPCW split conformal prediction intervals. +#' +#' Compute prediction intervals for predictions of the restricted time-to-event, +#' having asymptotically valid in-sample coverage, using rank-one-out (ROO) +#' split conformal inference. +#' +#' @param x Matrix of features, of dimension (say) n x p. +#' @param t Vector of responses (observed times), of length (say) n. +#' @param d Vector of responses (censoring indicator), of length (say) n. +#' @param tau Horizon of time. +#' @param train.fun A function to perform model training, i.e., to produce an +#' estimator of E(min(T*,tau)|X), the conditional expectation of the true +#' event time T* given features X. Its input arguments should be x: matrix of +#' features, t: vector of observed times, d: vector of censoring indicators +#' and tau: horizon of time. train.fun can be a function performing model +#' training for several (say m) regression models. +#' @param predict.fun A function to perform prediction for the (mean of the) +#' responses at new feature values. Its input arguments should be out: output +#' produced by train.fun, and newx: feature values at which we want to make +#' predictions. +#' @param w Censoring weights. This should be a vector of length n. Default is +#' NULL, in which case censoring weights are computed using the censoring +#' model specified by the parameter cens.model, or by default with the +#' Kaplan-Meier model. +#' @param cens.model Model used to estimate the censoring survival function. +#' This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +#' Random Survival Forests or Cox). Default is "km". +#' @param alpha Miscoverage level for the prediction intervals, i.e., intervals +#' with coverage 1-alpha are formed. One or several values can be passed for +#' which to compute intervals. Default for alpha is 0.1. +#' @param mad.train.fun A function to perform training on the observed absolute +#' residuals R = |min(T,tau) - m(X)| and their associated censoring weights, +#' where m denotes the estimator produced by train.fun, to estimate E(R*|X) +#' for the true absolute residual denoted R*. +#' This is used to scale the conformal score, to produce a prediction interval +#' with varying local width. The input arguments to mad.train.fun should be +#' x: matrix of features, y: vector of observed absolute residuals, and w: +#' censoring weights. The default for mad.train.fun is NULL, which means that +#' no training is done on the absolute residuals, and the usual (unscaled) +#' conformal score is used. Note that if mad.train.fun is non-NULL, then so +#' must be mad.predict.fun (see next). +#' @param mad.predict.fun A function to perform prediction for the (mean of the) +#' absolute residuals at new feature values. Its input arguments should be +#' out: output produced by mad.train.fun, and newx: feature values at which we +#' want to make predictions. The default for mad.predict.fun is NULL, which +#' means that no local scaling is done for the conformal score, i.e., the +#' usual (unscaled) conformal score is used. +#' @param split Indices that define the data-split to be used (i.e., the indices +#' define the first half of the data-split). Default is NULL, in which case +#' the split is chosen randomly. +#' @param seed Integer to be passed to set.seed before defining the random +#' data-split to be used. Default is NULL, which effectively sets no seed. +#' If both split and seed are passed, the former takes priority and the latter +#' is ignored. +#' @param verbose Should intermediate progress be printed out? Default is FALSE. +#' +#' @return A list with the following components: pred, lo, up, fit, split, +#' fit.all, out.all. pred and fit are matrices of dimension n x m. lo and up +#' are arrays of dimension n x m x a. Recall that n0 is the number of +#' rows of x0, m is the number of regression models and a is the number of +#' values passed to alpha. Hence, the rows of the matrices pred, lo, up give +#' the predicted value, and lower and upper confidence limits (from rank-one- +#' out split conformal inference), respectively, for the response at the n +#' points given in x. The rows of the matrix fit give the fitted values for +#' the n points given in x. The indices used for the half of the data-split +#' are returned in split. Finally, for convenience, the output from running +#' train.out on the entire (unsplit) data set x,y is stored in out.all, and +#' fit.all is an n x m matrix whose rows store the fitted values from out.all. +#' +#' @seealso \code{\link{conformal.pred}}, +#' \code{\link{conformal.pred.roo}}, \code{\link{conformal.pred.split.surv}} +#' @references "Distribution-Free Predictive Inference for Regression" by Lei, +#' G'Sell, Rinaldo, Tibshirani, Wasserman (2018). See also "A Comprehensive +#' Framework for Evaluating Time to Event Predictions using the Restricted +#' Mean Survival Time" by Cwiling, Perduca, Bouaziz (2023) for the extension +#' to right-censored data. +#' @export conformal.pred.roo.surv + + +conformal.pred.roo.surv = function(x, t, d, tau, train.fun, predict.fun, + w=NULL,cens.model="km", alpha=0.1, mad.train.fun=NULL, mad.predict.fun=NULL, + split=NULL, seed=NULL, verbose=FALSE) { + + # Set up data + x = as.matrix(x) + t = as.numeric(t) + d = as.numeric(d) + if(!is.null(w)) w = as.numeric(w) + n = nrow(x) + p = ncol(x) + + #Check input arguments + check.args.surv(x=x,t=t,d=d,tau=tau,x0=x,w=w,cens.model=cens.model, + alpha=0.1,train.fun=train.fun,predict.fun=predict.fun, + mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun) + + # Check alpha + if (is.null(alpha) || !is.numeric(alpha) || alpha<0 || alpha>1) + stop("alpha must be a vector of numbers between 0 and 1") + alpha = unique(alpha) + + # Users may pass in a string for the verbose argument + if (verbose == TRUE) txt = "" + if (verbose != TRUE && verbose != FALSE) { + txt = verbose + verbose = TRUE + } + + if (verbose) cat(sprintf("%sInitial training on full data set ...\n",txt)) + + # Train and fit on full data set + out.all = train.fun(x,t,d,tau) + fit.all = matrix(predict.fun(out.all,x,tau),nrow=n) + m = ncol(fit.all) + pred = fit = matrix(0,n,m) + lo = up = array(data=0, dim=c(n,m,length(alpha))) + + # Censoring weights + if(is.null(w)){ + if (verbose) cat(sprintf("%sComputing censoring weights ...\n",txt)) + w = ipcw(t,d,x,tau,cens.model) + } + + # If the user passed indices for the split, use them + inds = vector(mode="list",length=2) + if (!is.null(split)) inds[[1]] = split + # Otherwise make a random split + else { + if (!is.null(seed)) set.seed(seed) + inds[[1]] = sample(1:n,floor(n/2)) + } + inds[[2]] = (1:n)[-inds[[1]]] + + if (verbose) { + cat(sprintf("%sSplitting data into parts of size %i and %i ...\n",txt, + floor(n/2),ceiling(n/2))) + } + + # Train one split, and get residuals on the other + for (k in 1:2) { + i1 = inds[[k]]; n1 = length(i1) + i2 = inds[[3-k]]; n2 = length(i2) + + if (verbose) { + cat(sprintf("%sTraining on %s part ...\n",txt, + ifelse(k==1,"first","second"))) + } + + # Train on first part + out = train.fun(x[i1,,drop=F],t[i1],d[i1],tau) + that1 = matrix(predict.fun(out,x[i1,,drop=F],tau),nrow=n1) + that2 = matrix(predict.fun(out,x[i2,,drop=F],tau),nrow=n2) + fit[i1,] = that1 + pred[i2,] = that2 + + if (verbose) { + cat(sprintf("%sComputing residuals and quantiles on %s part ...\n", + txt,ifelse(k==1,"first","second"))) + } + + # Get residuals and quantiles on second + res = abs(pmin(t[i2],tau) - that2) + w2 = w[i2] + + for (l in 1:m) { + # Local scoring? + if (!is.null(mad.train.fun) && !is.null(mad.predict.fun)) { + res.train = abs(pmin(t[i1],tau) - that1[,l]) + w1 = w[i1] + mad.out = mad.train.fun(x[i1,,drop=F],res.train,w1) + mad.x2 = mad.predict.fun(mad.out,x[i2,,drop=F]) + res = res[,l] / mad.x2 + } + else { + mad.x2 = rep(1,n2) + } + + # Sort once, update cleverly + o = order(res[,l]); r = res[o,l]; w2.o = w2[o]; oo = order(o) + for (i in 1:n2) { + for(a in 1:length(alpha)){ + q = weighted.quantile(r[-oo[i]],1-alpha[a],w=w2.o[-oo[i]],sorted=TRUE) + lo[i2[i],l,a] = pred[i2[i],l] - q * mad.x2[i] + up[i2[i],l,a] = pred[i2[i],l] + q * mad.x2[i] + } + } + } + } + + return(list(pred=pred,lo=lo,up=up,fit=fit,split=inds[[1]], + fit.all=fit.all,out.all=out.all,w=w)) +} + diff --git a/conformalInference/R/split.R b/conformalInference/R/split.R index cb5f1f8..043451c 100644 --- a/conformalInference/R/split.R +++ b/conformalInference/R/split.R @@ -162,3 +162,181 @@ conformal.pred.split = function(x, y, x0, train.fun, predict.fun, alpha=0.1, return(list(pred=pred,lo=lo,up=up,fit=fit,split=i1)) } + + +#' Split conformal prediction intervals for right-censored data. +#' +#' Compute prediction intervals for predictions of the restricted time-to-event +#' using IPCW split conformal inference. +#' +#' @param x Matrix of features, of dimension (say) n x p. +#' @param t Vector of responses (observed times), of length (say) n. +#' @param d Vector of responses (censoring indicator), of length (say) n. +#' @param tau Horizon of time. +#' @param x0 Matrix of features, each row being a point at which we want to +#' form a prediction interval, of dimension (say) n0 x p. +#' @param train.fun A function to perform model training, i.e., to produce an +#' estimator of E(min(T*,tau)|X), the conditional expectation of the true +#' event time T* given features X. Its input arguments should be x: matrix of +#' features, t: vector of observed times, d: vector of censoring indicators +#' and tau: horizon of time. train.fun can be a function performing model +#' training for several (say m) regression models. +#' @param predict.fun A function to perform prediction for the (mean of the) +#' responses at new feature values. Its input arguments should be out: output +#' produced by train.fun, and newx: feature values at which we want to make +#' predictions. +#' @param w Censoring weights. This should be a vector of length n. Default is +#' NULL, in which case censoring weights are computed using the censoring +#' model specified by the parameter cens.model, or by default with the +#' Kaplan-Meier model. +#' @param cens.model Model used to estimate the censoring survival function. +#' This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +#' Random Survival Forests or Cox). Default is "km". +#' @param alpha Miscoverage level for the prediction intervals, i.e., intervals +#' with coverage 1-alpha are formed. One or several values can be passed for +#' which to compute intervals. Default for alpha is 0.1. +#' @param rho Fraction of observations to use in the training set. This is +#' rounded to the nearest integer below, and defaults to 0.5. +#' @param mad.train.fun A function to perform training on the observed absolute +#' residuals R = |min(T,tau) - m(X)| and their associated censoring weights, +#' where m denotes the estimator produced by train.fun, to estimate E(R*|X) +#' for the true absolute residual denoted R*. +#' This is used to scale the conformal score, to produce a prediction interval +#' with varying local width. The input arguments to mad.train.fun should be +#' x: matrix of features, y: vector of observed absolute residuals, and w: +#' censoring weights. The default for mad.train.fun is NULL, which means that +#' no training is done on the absolute residuals, and the usual (unscaled) +#' conformal score is used. Note that if mad.train.fun is non-NULL, then so +#' must be mad.predict.fun (see next). +#' @param mad.predict.fun A function to perform prediction for the (mean of the) +#' absolute residuals at new feature values. Its input arguments should be +#' out: output produced by mad.train.fun, and newx: feature values at which we +#' want to make predictions. The default for mad.predict.fun is NULL, which +#' means that no local scaling is done for the conformal score, i.e., the +#' usual (unscaled) conformal score is used. +#' @param split Indices that define the data-split to be used (i.e., the indices +#' define the first half of the data-split, on which the model is trained). +#' Default is NULL, in which case the split is chosen randomly. +#' @param seed Integer to be passed to set.seed before defining the random +#' data-split to be used. Default is NULL, which effectively sets no seed. +#' If both split and seed are passed, the former takes priority and the latter +#' is ignored. +#' @param verbose Should intermediate progress be printed out? Default is FALSE. +#' +#' @return A list with the following components: pred, lo, up, fit, split. pred +#' is a matrice of dimension n0 x m. lo and up are arrays of dimension n0 x m +#' x a. fit is a matrix of dimension n x m. Recall that n0 is the number of +#' rows of x0, m is the number of regression models and a is the number of +#' values passed to alpha. Hence, the rows of the matrices pred, lo, up give +#' the predicted value, and lower and upper confidence limits (from split +#' conformal inference), respectively, for the response at the n0 points +#' given in x0. The rows of fit give the fitted values for the n points given +#' in x. Finally, split contains the indices used for the first half of the +#' data-split. +#' +#' @seealso \code{\link{conformal.pred}}, +#' \code{\link{conformal.pred.split}}, \code{\link{conformal.pred.roo.surv}} +#' @references "Distribution-Free Predictive Inference for Regression" by Lei, +#' G'Sell, Rinaldo, Tibshirani, Wasserman (2018). See also "A Comprehensive +#' Framework for Evaluating Time to Event Predictions using the Restricted +#' Mean Survival Time" by Cwiling, Perduca, Bouaziz (2023) for the extension +#' to right-censored data. +#' @export conformal.pred.split.surv + +conformal.pred.split.surv = function(x, t, d, tau, x0, train.fun, predict.fun, + w=NULL, cens.model="km", alpha=0.1, rho=0.5, mad.train.fun=NULL, + mad.predict.fun=NULL, split=NULL, seed=NULL, verbose=FALSE) { + + # Set up data + x = as.matrix(x) + t = as.numeric(t) + d = as.numeric(d) + if(!is.null(w)) w = as.numeric(w) + n = nrow(x) + p = ncol(x) + x0 = matrix(x0,ncol=p) + n0 = nrow(x0) + + # Check input arguments + check.args.surv(x=x,t=t,d=d,tau=tau,x0=x0,w=w,cens.model=cens.model, + alpha=0.1,train.fun=train.fun,predict.fun=predict.fun, + mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun) + + # Check alpha + if (is.null(alpha) || !is.numeric(alpha) || alpha<0 || alpha>1) + stop("alpha must be a vector of numbers between 0 and 1") + alpha = unique(alpha) + + # Check rho + if (is.null(rho) || length(rho)!= 1 || !is.numeric(rho) || rho<=0 || rho>=1) + stop("rho must be a number in between 0 and 1") + + # Users may pass in a string for the verbose argument + if (verbose == TRUE) txt = "" + if (verbose != TRUE && verbose != FALSE) { + txt = verbose + verbose = TRUE + } + + # Censoring weights + if(is.null(w)){ + if (verbose) cat(sprintf("%sComputing censoring weights ...\n",txt)) + w = ipcw(t,d,x,tau,cens.model) + } + + # If the user passed indices for the split, use them + if (!is.null(split)) i1 = split + # Otherwise make a random split + else { + if (!is.null(seed)) set.seed(seed) + i1 = sample(1:n,floor(n*rho)) + } + i2 = (1:n)[-i1] + n1 = length(i1) + n2 = length(i2) + + if (verbose) { + cat(sprintf("%sSplitting data into parts of size %i and %i ...\n", + txt,n1,n2)) + cat(sprintf("%sTraining on first part ...\n",txt)) + } + + # Train on first part + out = train.fun(x[i1,,drop=F],t[i1],d[i1],tau) + fit = matrix(predict.fun(out,x,tau),nrow=n) + pred = matrix(predict.fun(out,x0,tau),nrow=n0) + m = ncol(pred) + + if (verbose) { + cat(sprintf("%sComputing residuals and quantiles on second part ...\n",txt)) + } + + # Get residuals and quantiles on second + res = abs(pmin(t[i2],tau) - matrix(predict.fun(out,x[i2,,drop=F],tau),nrow=n2)) + w2 = w[i2] + lo = up = array(data=0, dim=c(n0,m,length(alpha))) + + for (l in 1:m) { + # Local scoring? + if (!is.null(mad.train.fun) && !is.null(mad.predict.fun)) { + res.train = abs(pmin(t[i1],tau) - fit[i1,l]) + w1 = w[i1] + mad.out = mad.train.fun(x[i1,,drop=F],res.train,w1) + mad.x2 = mad.predict.fun(mad.out,x[i2,,drop=F]) + mad.x0 = mad.predict.fun(mad.out,x0) + res[,l] = res[,l] / mad.x2 + } + else { + mad.x0 = rep(1,n0) + } + + o = order(res[,l]); r = res[o,l]; w2.o = w2[o] + for(a in 1:length(alpha)){ + q = weighted.quantile(r,1-alpha[a],w=w2.o,sorted=TRUE) + lo[,l,a] = pred[,l] - q * mad.x0 + up[,l,a] = pred[,l] + q * mad.x0 + } + } + + return(list(pred=pred,lo=lo,up=up,fit=fit,split=i1)) +} diff --git a/cwiling23/fig.loco.surv.R b/cwiling23/fig.loco.surv.R new file mode 100644 index 0000000..6076937 --- /dev/null +++ b/cwiling23/fig.loco.surv.R @@ -0,0 +1,921 @@ +############# +# LIBRARIES # +############# + +setwd("~/GitHub/RMST_predictor") +libraries_sources = function(){ + library(survival) + library(FastPseudo) + library(pseudo) + library(randomForest) + library(randomForestSRC) + library(tidyverse) + library(gridExtra) + library(haven) + library(devtools) + library(MIMICbook) + library(knitr) + library(Hmisc) + library(parallel) + source("RMSTpredictor/IPCW.R") + source("RMSTpredictor/check.surv.R") + source("RMSTpredictor/split.surv.R") + source("RMSTpredictor/roo.surv.R") + source("RMSTpredictor/loco.roo.surv.R") + source("RMSTpredictor/loco.surv.R") + source("RMSTpredictor/rmst.pred.R") + source("RMSTpredictor/glmnet.surv.R") + source("RMSTpredictor/common.R") +} +libraries_sources() + + +######################## +# SIMULATION FUNCTIONS # +######################## + +simulate.A = function(n,seed=NULL,p=2,a=3,beta_tilde0 = c(5.5,2.5,2.5), + beta0 = c(5.5,2.097,2.097,3.16), lambda=0.07, + C.indep.Z=T, k=12,nu=6,b=c(2,1)){ + if(!is.null(seed)){set.seed(seed)} + x = matrix(rbinom(n*p,1,0.5), nrow=n) + t = cbind(rep(1,n), x) %*% beta_tilde0 + runif(n,-a,a) + if(C.indep.Z){c = rexp(n,rate=lambda)} + else{c = k*(-log(1-runif(n))*exp(-as.double(x%*%b)))**(1/nu)} + tobs = pmin(t,c) + delta = (t <= c)*1 + mu_tau = cbind(rep(1,n),x[,1]*(1-x[,2]),x[,2]*(1-x[,1]),x[,1]*x[,2])%*% beta0 + return(list(t=t,c=c,tobs=tobs,delta=delta,x=x,mu_tau=mu_tau)) +} + + +simulate.B = function(n,seed=NULL,a=5,k=2,nu=6,p=3,b=c(2,1,0),lambda=0.3){ + if(!is.null(seed)){set.seed(seed)} + x = matrix(runif(n*p,-a,a),n,p) + u = runif(n) + t = k*(-log(1-u)*exp(-as.double(x%*%b)))**(1/nu) + c = rexp(n,lambda) + tobs = pmin(t,c) + delta = (t <= c)*1 + return(list(t=t,c=c,tobs=tobs,delta=delta,x=x)) +} + + +simulate.C = function(n,seed=NULL,a=5,k=2,nu=6,p.bin=6,p.cont=9,lambda=0.3){ + if(!is.null(seed)){set.seed(seed)} + xbin = matrix(rbinom(n*p.bin,1,prob=0.4),n,p.bin) + xcont = matrix(runif(n*p.cont,0,1),n,p.cont) + x = cbind(xcont[,1],xbin[,1],xcont[,2],xbin[,2],xcont[,3],xbin[,3],xcont[,c(4,5)],xbin[,4],xcont[,6],xbin[,-seq(1,4)],xcont[,-seq(1,6)]) + y = x[,3] - 3*x[,5] + 2*x[,1]*x[,10] + 4*x[,2]*x[,7] + 3*x[,4]*x[,5] - 5*x[,6]*x[,10] + 3*x[,8]*x[,9] + x[,1]*x[,4] - 2*x[,6]*x[,9] - 4*x[,3]*x[,4] - x[,7]*x[,8] + u = runif(n) + t = k*(-log(1-u)*exp(-as.double(y)))**(1/nu) + c = rexp(n,lambda) + tobs = pmin(t,c) + delta = (t <= c)*1 + return(list(t=t,c=c,tobs=tobs,delta=delta,x=x)) +} + + +############################### +# TRAIN AND PREDICT FUNCTIONS # +############################### + +integral = function(f,min=0,max){ + return(integrate(f,min,max,subdivisions=3000,rel.tol = 1e-5)$value) +} + +train.fun = function(x,t,d,tau,pred.models=c("all"),tstar=NULL) { + bincols = colMeans((x==1|x==0), na.rm=T) == 1 + for(i in 1:length(bincols)){ + # Turn the binary columns into factors + if(bincols[i]){x[[i]] = as.factor(x[[i]])} + } + datafr = data.frame(x) + + pred.list = list() + + # Kaplan-Meier + if("km" %in% pred.models || "all" %in% pred.models){ + pred.list$out.km = survfit(Surv(time=t,event=d)~1, data=datafr) + } + # Cox + if("cox" %in% pred.models || "all" %in% pred.models){ + pred.list$out.cox = coxph(Surv(time=t,event=d)~., data = datafr) + } + # Random Survival Forests + if("rsf" %in% pred.models || "all" %in% pred.models){ + pred.list$out.rsf = rfsrc(Surv(time=t,event=d)~.,data=data.frame(t=t,d=d,x), + importance=T, splitrule="bs.gradient", mtry=ncol(datafr)) + } + # Pseudo-observations + Linear Model + if("lm" %in% pred.models || "all" %in% pred.models){ + pobs = pseudoKM(t,as.logical(d),tau)$pseudoval + pred.list$out.lm = lm(pobs~.,data=datafr) + } + # True event times + Linear Model with interactions (for scheme A only) + if(("lm.oracle" %in% pred.models) && !is.null(tstar)){ + tstar.min.tau = pmin(tstar,tau) + dat = data.frame(X01=(x[,1]==0 & x[,2]==1), + X10=(x[,1]==1 & x[,2]==0), + X11=(x[,1]==1 & x[,2]==1)) + pred.list$out.lm.oracle = lm(tstar.min.tau~X01+X10+X11,data=dat) + } + # Cox with interactions (adapted to scheme C) + if("cox.oracle" %in% pred.models){ + fml = paste("Surv(time=t,event=d)~(",paste0("X",1:ncol(datafr),collapse = "+"),")^2") + pred.list$out.cox.oracle = coxph(as.formula(fml), data = datafr) + } + + return(pred.list) +} + +predict.fun = function(out,x0,tau,pred.models=c("all")) { + predictions = numeric(0) + + # Kaplan-Meier + if("km" %in% pred.models || "all" %in% pred.models){ + km.curve = stepfun(out$out.km$time,c(1,out$out.km$surv)) + predictions = c(predictions,rep(integral(km.curve,0,tau),nrow(x0))) + } + # Cox + if("cox" %in% pred.models || "all" %in% pred.models){ + surv.cox = survfit(out$out.cox,newdata=data.frame(x0)) + pred.cox = numeric(nrow(x0)) + for(i in 1:nrow(x0)){ + cox.curve = stepfun(surv.cox$time,c(1,surv.cox$surv[,i])) + pred.cox[i] = integral(cox.curve,0,tau) + } + predictions = c(predictions,pred.cox) + } + # Random Survival Forests + if("rsf" %in% pred.models || "all" %in% pred.models){ + obj.pred.rsf = predict(out$out.rsf,data.frame(x0)) + vals_list = split(obj.pred.rsf$survival, row(obj.pred.rsf$survival)) + surv.rsf = purrr::map(vals_list, ~ stepfun(obj.pred.rsf$time.interest,c(1,.),f=1)) + pred.rsf = purrr::map_dbl(surv.rsf, ~integral(.,0,tau)) + predictions = c(predictions,as.double(pred.rsf)) + } + # Pseudo-observations + Linear Model + if("lm" %in% pred.models || "all" %in% pred.models){ + predictions = c(predictions,as.double(predict(out$out.lm,data.frame(x0)))) + } + # True event times + Linear Model with interactions (for scheme A only) + if("lm.oracle" %in% pred.models){ + dat = data.frame(X01=(x0[,1]==0 & x0[,2]==1), + X10=(x0[,1]==1 & x0[,2]==0), + X11=(x0[,1]==1 & x0[,2]==1)) + predictions = c(predictions,as.double(predict(out$out.lm.oracle,dat))) + } + # Cox with interactions (adapted to scheme C) + if("cox.oracle" %in% pred.models){ + surv.cox = survfit(out$out.cox.oracle,newdata=data.frame(x0)) + pred.cox = numeric(nrow(x0)) + for(i in 1:nrow(x0)){ + cox.curve = stepfun(surv.cox$time,c(1,surv.cox$surv[,i])) + pred.cox[i] = integral(cox.curve,0,tau) + } + predictions = c(predictions,as.double(pred.cox)) + } + + return(predictions) +} + +################### +# PARALLELISATION # +################### + +parallelisation_init = function(){ + cl <<- makeCluster(getOption("cl.cores", detectCores())) + invisible(clusterEvalQ(cl, { + library(survival) + library(FastPseudo) + library(randomForest) + library(randomForestSRC) + library(tidyverse) + library(gridExtra) + library(haven) + library(devtools) + library(MIMICbook) + library(knitr) + library(Hmisc) + source("~/A Thèse/Code/IPCW.R") + source("~/GitHub/RMST_predictor/RMSTpredictor/check.surv.R") + source("~/GitHub/RMST_predictor/RMSTpredictor/split.surv.R") + source("~/GitHub/RMST_predictor/RMSTpredictor/roo.surv.R") + source("~/GitHub/RMST_predictor/RMSTpredictor/loco.roo.surv.R") + source("~/GitHub/RMST_predictor/RMSTpredictor/loco.surv.R") + source("~/GitHub/RMST_predictor/RMSTpredictor/rmst.pred.R") + source("~/GitHub/RMST_predictor/RMSTpredictor/glmnet.surv.R") + source("~/GitHub/RMST_predictor/RMSTpredictor/common.R") + })) + clusterExport(cl=cl,c("simulate.A","simulate.B","simulate.C", + "integral","train.fun","predict.fun")) +} + + +########################################### +# 1/WRSS: CONVERGENCE TO MSE(\Tilde{\mu}) # +########################################### + +mse = function(n,n0,models,cens.model="km"){ + # Data simulation + df = simulate(n+n0) + df$w = IPCW(df$tobs,df$delta,df$x,tau,cens.model) + #Training set + i1 = sample(1:(n+n0),n,replace=F) + df1 = list(t=df$t[i1],c=df$c[i1],tobs=df$tobs[i1],delta=df$delta[i1], + x=df$x[i1,],w=df$w[i1]) + #Test set + i0 = (1:(n+n0))[-i1] + df0 = list(t=df$t[i0],c=df$c[i0],tobs=df$tobs[i0],delta=df$delta[i0], + x=df$x[i0,],w=df$w[i0]) + # Train on full data set and fit on new data set + out = train.fun(df1$x,df1$tobs,df1$delta,tau,models,df1$t) + fit = matrix(predict.fun(out,df0$x,tau,models),nrow=n0) + WRSS = apply(df0$w*(pmin(df0$tobs,tau) - fit)**2,2,sum)/n0 + return(WRSS) +} + +mse.pll = function(x,cens.model="km"){ + set.seed(x) + return(purrr::cross_df(list(n=N)) %>% + mutate(WRSS = map(n, ~ mse(.,.,models,cens.model))) ) +} + + +############################################## +# 1.1/ CENSORING INDEPENDENT FROM COVARIATES # +############################################## + +#Schema A1 (Linear model with two covariates; accessible RMST; C, Z independent) +simulate = simulate.A; tau = 8.8 +models = c("lm","lm.oracle") +models.names = c("P.obs.+LM","Oracle") +m = length(models.names) +###### + +## Monte Carlo estimation of coefficients beta0 +# df1 = simulate(5e7,seed=0) +# b00 = mean(pmin(df1$t[df1$x[,1]==0 & df1$x[,2]==0],tau)) +# b10 = mean(pmin(df1$t[df1$x[,1]==1 & df1$x[,2]==0],tau)) - b00 +# b01 = mean(pmin(df1$t[df1$x[,1]==0 & df1$x[,2]==1],tau)) - b00 +# b11 = mean(pmin(df1$t[df1$x[,1]==1 & df1$x[,2]==1],tau)) - b00 +# c(b00,b01,b10,b11) +## + +## Monte Carlo estimation of the inseparability term +# inseparability.term = mean((pmin(df1$t,tau) - df1$mu_tau)**2) +inseparability.term = 1.5759 +## + +## Monte Carlo estimation of the imprecision term for the model P.obs.+LM +# train.fun.lm = function(x,t,d,tau) { +# pobs= pseudoKM(t,as.logical(d),tau)$pseudoval +# out.lm = lm(pobs~X1+X2,data=data.frame(x)) +# return(out.lm) +# } +# coeffs_A1 = sapply(1:20, function(i){ +# df = simulate(1e4,seed=i) +# return(train.fun.lm(df$x,df$tobs,df$delta,tau)$coefficients) +# }) +# beta_tilde_A1 = as.double(apply(coeffs_A1,1,median)) +# imprecision.term.A1 = mean((df1$mu_tau - cbind(rep(1,1e7), df1$x) %*% beta_tilde_A1)**2) +imprecision.term.A1 = 0.067 +## + +## Illustration of Theorem 1 +N = c(100,500,1000) +nb.repeat = 1000 + +parallelisation_init() +clusterExport(cl,c("simulate","tau","models","N","mse")) +mse.estimations.1 = parLapply(cl, X = 1:nb.repeat, fun = mse.pll) + +mse.estimations.1 = purrr::cross_df(list(model = models.names, n=N, + rep = 1:nb.repeat)) %>% + mutate(wrss = unlist(data.table::rbindlist(mse.estimations.1)$WRSS)) + +mse.estimations.1$model = factor(mse.estimations.1$model, levels=models.names) +stopCluster(cl) + +pdf(file="fig/WRSS.indep.pdf",w=4,h=2.5) +mse.estimations.1 %>% + ggplot(aes(x = as.factor(n), y = wrss)) + + geom_boxplot(lwd=0.2,outlier.size = 0.1) + + geom_hline(yintercept = inseparability.term, linetype = "dashed", + color = "red", lwd = 0.3)+ + geom_hline(data = mse.estimations.1 %>% filter(model == "P.obs.+LM"), + aes(yintercept = inseparability.term + imprecision.term.A1), + linetype="dashed", color = "blue", lwd = 0.3) + + labs(x = 'Train and test size', y = 'WRSS') + + facet_grid( . ~ fct_rev(model)) + + theme_bw() + + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +graphics.off() + + +############################################ +# 1.2/ CENSORING DEPENDENT FROM COVARIATES # +############################################ + +#Schema A2 (Linear model with two covariates;accessible RMST;C dependent from Z) +simulate = function(n,seed=NULL){simulate.A(n,seed=seed,C.indep.Z = F)}; tau = 8.8 +models = c("lm","lm.oracle") +models.names = c("P.obs.+LM","Oracle") +m = length(models.names) +###### + +## Monte Carlo estimation of the imprecision term for the model P.obs.+LM +# coeffs_A2 = sapply(1:20, function(i){ +# df = simulate(1e4,seed=i) +# return(train.fun.lm(df$x,df$tobs,df$delta,tau)$coefficients) +# }) +# beta_tilde_A2 = as.double(apply(coeffs_A2,1,median)) +# imprecision.term.A2 = mean((df1$mu_tau - cbind(rep(1,1e7), df1$x) %*% beta_tilde_A2)**2) +imprecision.term.A2 = 0.0835 +## + +## Illustration of Theorem 1 +N = c(100,500,1000) +nb.repeat = 1000 + +parallelisation_init() +clusterExport(cl,c("simulate","tau","models","N","mse","mse.pll")) +mse.estimations.km = parLapply(cl, X = 1:nb.repeat, + fun = function(x){mse.pll(x,cens.model="km")}) + +mse.estimations.cox = parLapply(cl, X = 1:nb.repeat, + fun = function(x){mse.pll(x,cens.model="cox")}) + +mse.estimations.rsf = parLapply(cl, X = 1:nb.repeat, + fun = function(x){mse.pll(x,cens.model="rsf")}) +stopCluster(cl) + +mse.estimations.2 = purrr::cross_df(list(model = models.names, n=N, + rep = 1:nb.repeat, + cens.model = c("KM","Cox","RSF"))) %>% + mutate(wrss = c(unlist(data.table::rbindlist(mse.estimations.km)$WRSS), + unlist(data.table::rbindlist(mse.estimations.cox)$WRSS), + unlist(data.table::rbindlist(mse.estimations.rsf)$WRSS))) + +mse.estimations.2$model = factor(mse.estimations.2$model, levels=models.names) +mse.estimations.2$cens.model = factor(mse.estimations.2$cens.model, levels=c("KM","Cox","RSF")) + + + +pdf(file="fig/WRSS.dep.pdf",w=5,h=4) +mse.estimations.2 %>% + ggplot(aes(x = as.factor(n), y = wrss)) + + scale_y_continuous(limits = c(1,3.5)) + + geom_boxplot(lwd=0.2,outlier.size = 0.1) + + geom_hline(yintercept = inseparability.term, linetype = "dashed", + color = "red", lwd = 0.3)+ + geom_hline(data = mse.estimations.2 %>% filter(model == "P.obs.+LM"), + aes(yintercept = inseparability.term + imprecision.term.A2), + linetype="dashed", color = "blue", lwd = 0.3) + + labs(x = 'Train and test size', y = 'WRSS') + + facet_grid( fct_rev(model) ~ cens.model) + + theme_bw() + + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +graphics.off() + + +##################### +# 2/SPLIT ALGORITHM # +##################### + +#Scheme B (Cox model, 3 covariates) +simulate = simulate.B; tau = 3.6; +models = c("km","cox","rsf","lm") +models.names = c("KM","Cox","RSF","P.obs.+LM") +m = length(models.names) +train.fun.2 = function(x,t,d,tau){train.fun(x,t,d,tau,pred.models=models)} +predict.fun.2 = function(out,x0,tau){predict.fun(out,x0,tau,pred.models=models)} +###### + +###################################### +# 2.1/ ILLUSTRATION OF THE INTERVALS # +###################################### + +# Validation sample +n0 = 10 +df0 = simulate(n0,seed=25) +df0$t.min.tau = pmin(df0$t,tau) + +# Training sample +n = 4000 +df = simulate(n,seed=40) + +# Split algorithm +set.seed(0) +out.split = conformal.pred.split.surv(df$x, df$tobs, df$delta, tau, df0$x, + train.fun.2, predict.fun.2, cens.model = "km", rho=0.5, verbose=T) + +res.split = data.frame(id = rep(LETTERS[1:n0],m), nb = rep(1:n0,m), + t = rep(df0$t.min.tau,m), + pred = as.double(out.split$pred), + lower = as.double(out.split$lo), + upper = as.double(out.split$up), + model = rep(models.names,each=n0)) +res.split$model = factor(res.split$model, levels = models.names) + + +pdf(file="fig/split_all.pdf",w=6,h=4) +res.split %>% + ggplot(aes(x=id,y=pred,shape=model,fill=model)) + + scale_shape_manual(values = c(23,22,21,24)) + + geom_point(colour="black", fill="black", size=1.1, + position=position_dodge(.5)) + + geom_hline(yintercept=tau, linetype="dashed", color = "grey") + + geom_errorbar(aes(ymin = lower, ymax = upper),position = position_dodge(.5), + width=0.6,size=0.3) + + geom_segment(aes(y = t, x = nb-0.35, yend = t, xend = nb+0.35), + colour="red",size=0.45) + + labs(x = "Validation set", + # title = "Predictions intervals", + y = "Time to event", shape = "Regression model") + + guides(shape = guide_legend(reverse = TRUE)) + + theme_bw() + + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) + + coord_flip() +graphics.off() + + + + +########################### +# 2.2/ EMPIRICAL COVERAGE # +########################### + +cover = function(n,n0=N0){ + df0 = simulate(n0) + df0$t.min.tau = pmin(df0$t,tau) + df = simulate(n) + out = conformal.pred.split.surv(df$x, df$tobs, df$delta, tau, df0$x, + train.fun.2, predict.fun.2, alpha = alpha, cens.model = "km", + rho=0.5, verbose=F) + return(lapply(1:length(alpha),function(a) + apply((df0$t.min.tau>=out$lo[,,a] & df0$t.min.tau<=out$up[,,a]),2,mean))) +} + +cover.pll = function(x){ + set.seed(x) + return(purrr::cross_df(list(n=N)) %>% mutate(coverage = map(n, ~ cover(.))) ) +} + +N = c(100,500,1000) +N0 = 500 +alpha = c(0.2,0.1,0.05) +nb.repeat = 200 + +parallelisation_init() +clusterExport(cl,c("simulate","tau","models","train.fun.2","predict.fun.2", + "N","N0","alpha","cover")) +coverage = parLapply(cl, X = 1:nb.repeat, fun = cover.pll) + +coverage = purrr::cross_df(list(model = models.names, alpha=alpha, n=N, rep = 1:nb.repeat)) %>% + mutate(coverage = unlist(data.table::rbindlist(coverage)$coverage)) + +coverage$model = factor(coverage$model, levels = models.names) + +stopCluster(cl) + + +### Plot ### + +#define custom color scale +myColors = c("#00364e","#006db5","#008bff") +names(myColors) = levels(coverage$n) +custom_colors = scale_colour_manual(values = myColors) + +pdf(file="fig/coverage_fig.pdf",w=7,h=3) +coverage %>% + ggplot(aes(x = as.factor(1-alpha), y = coverage)) + + coord_cartesian(ylim = c(0.585, 1)) + + geom_boxplot(aes(color=as.factor(n)),lwd=0.3,outlier.size = 0.3) + + geom_hline(yintercept=0.8, linetype="dashed", color = "grey",lwd=0.35) + + geom_hline(yintercept=0.9, linetype="dashed", color = "grey",lwd=0.35) + + geom_hline(yintercept=0.95, linetype="dashed", color = "grey",lwd=0.35) + + labs(x = 'Confidence level', y = 'Empirical coverage', color='Training size') + + custom_colors + + theme_bw() + + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) + + facet_grid( . ~ as.factor(model)) +graphics.off() + +### Tab ### + +split.tab = coverage %>% group_by(alpha,n,model) %>% + dplyr::summarise(mean = round(mean(coverage),3), + median = round(median(coverage),3), + Q1 = round(quantile(coverage,0.25),3), + Q3 = round(quantile(coverage,0.75),3)) + +pdf("fig/coverage_tab.pdf",h=nrow(split.tab)/3.5,w=6) +grid.table(split.tab) +dev.off() + + +########################## +# 3/ VARIABLE IMPORTANCE # +########################## + +#Scheme B (Cox model, 3 covariates) +simulate = simulate.B; tau = 3.6; p=3 +models = c("km","cox","rsf","lm") +models.names = c("KM","Cox","RSF","P.obs.+LM") +m = length(models.names) +train.fun.3 = function(x,t,d,tau){train.fun(x,t,d,tau,pred.models=models)} +predict.fun.3 = function(out,x0,tau){predict.fun(out,x0,tau,pred.models=models)} +###### + +vimpG.pvalues = function(n){ + D2 = simulate(n) + out.loco = loco.surv(rbind(D1$x,D2$x), c(D1$tobs,D2$tobs), c(D1$delta,D2$delta), + tau, train.fun.3, predict.fun.3, split=1:n, vars=0, + rho=0.5, bonf.correct=FALSE, seed=NULL, verbose=FALSE) + return(do.call(rbind,map(out.loco$inf.sign, ~ .[,"P-value"]))) +} + +vimpG.pvalues.pll = function(x){ + set.seed(x) + return(vimpG.pvalues(n)) +} + +###### + +n=500 +D1 = simulate(n,seed=0) + + +######################### +# 3.1/ ESTIMATION OF pk # +######################### + +# parallelisation_init() +# set.seed(10) +# n2=1e5 +# D2 = simulate(n2) +# mu = train.fun.3(D1$x,D1$tobs,D1$delta,tau) +# pred = matrix(predict.fun.3(mu,D2$x,tau),nrow=n2,ncol=m) +# res = abs(pmin(D2$t,tau)-pred) +# clusterExport(cl,c("tau","models","train.fun.3","predict.fun.3", +# "D2","D1","n2","m","res")) +# pk = parSapply(cl, X = 1:p, FUN = function(k){ +# set.seed(k) +# mu.k = train.fun.3(D1$x[,-k],D1$tobs,D1$delta,tau) +# pred.k = matrix(predict.fun.3(mu.k,D2$x[,-k],tau),nrow=n2,ncol=m) +# delta.k = abs(pmin(D2$t,tau)-pred.k) - res +# return(apply(delta.k,2,FUN=function(s){mean((s>=0)[D2$t<=tau])})) +# }) +# colnames(pk) = paste0("Z",1:3) +# rownames(pk) = models.names +# stopCluster(cl) + +pk = matrix(c(1.0000000, 1.0000000, 1.0000000, + 0.8710390, 0.7945491, 0.4876769, + 0.8154177, 0.7148376, 0.4360612, + 0.8436275, 0.6984591, 0.4578992),4,3,byrow=T) +colnames(pk) = paste0("Z",1:3) +rownames(pk) = models.names + +sink(file = "fig/pk.txt", type = "output") +print(round(pk,3)) +sink() + + +################################################## +# 3.2/ VARIABLE IMPORTANCE MEASURES ILLUSTRATION # +################################################## + +set.seed(3) +D2 = simulate(n) +out.D1 = rmst.pred(rbind(D1$x,D2$x), c(D1$tobs,D2$tobs), c(D1$delta,D2$delta), + tau, train.fun.3, predict.fun.3, split=1:n, vars=0, + rho=0.5, bonf.correct=FALSE, seed=NULL, verbose=TRUE, + error=F, roo=F,vimpL=T, vimpG=T) + +### Local variable importance ### + +pdf(file="fig/vimpLD1.pdf",w=7.5,h=6.5) +par(mfcol=c(p,m)) +plot(out.D1, model.names = models.names, elements = c("vimpL")) +graphics.off() + +### Global variable importance ### + +pdf(file="fig/vimpGD1.pdf",w=7,h=2.25) +par(mfrow=c(1,m)) +plot(out.D1, model.names = models.names, elements = c("vimpG")) +graphics.off() + + +########################### +# 3.3/ CALIBRATION SLOPES # +########################### +nb.repeat = 1000 + +parallelisation_init() +clusterExport(cl,c("simulate","tau","models","train.fun.3","predict.fun.3", + "n","D1","vimpG.pvalues")) +pvalues = parLapply(cl, X = 1:nb.repeat, fun = vimpG.pvalues.pll) + +pvalues = array(unlist(pvalues), dim = c(m,p,nb.repeat)) + +stopCluster(cl) + +pdf(file="fig/calibration.pdf",w=7.2,h=4.8) +par(mfcol=c(p,m)) +for(i in 1:m){ + for(j in 1:p){ + hist(pvalues[i,j,],probability = T, main = paste0(models.names[i],", variable ",j), + xlab = "P-value", ylab = "Density",xlim=c(0,1),breaks=seq(0,1,by=0.05)) + } +} +graphics.off() + +########################## +# 4/ RMST.PRED FRAMEWORK # +########################## + +integral = function(f,min=0,max){ + return(integrate(f,min,max,subdivisions=3000,rel.tol = 1e-4)$value) +} + +################# +# 4.1/ SCHEME B # +################# + +#Scheme B (Cox model, 3 covariates) +simulate = simulate.B; tau = 3.6; p=3 +models = c("km","cox","rsf","lm") +models.names = c("KM","Cox","RSF","P.obs.+LM") +m = length(models.names) +train.fun.4 = function(x,t,d,tau){train.fun(x,t,d,tau,pred.models=models)} +predict.fun.4 = function(out,x0,tau){predict.fun(out,x0,tau,pred.models=models)} +###### + +n = 4000 +df = simulate(n,seed=40) + +### Analysis framework ### + +V = 10 +out.fmw.B = rmst.pred(df$x, df$tobs, df$delta, tau, train.fun.4, predict.fun.4, + n.folds=V, cens.model="km", alpha=0.1, vars=0, + seed=60, verbose=TRUE, rho=0.5) + +### MSE ### + +pdf(file="fig/mseB.pdf",w=3.5,h=3.5) +par(mfrow=c(1,1)) +plot(out.fmw.B, model.names = models.names, elements = c("mse")) +graphics.off() + +### Local variable importance ### + +pdf(file="fig/vimpLB.pdf",w=7.5,h=6.5) +par(mfcol=c(p,m)) +plot(out.fmw.B, model.names = models.names, elements = c("vimpL")) +graphics.off() + +### Global variable importance ### + +## Test ## + +sink(file = "fig/testB.txt", type = "output") +print(out.fmw.B, model.names = models.names) +sink() + +## Display ## + +pdf(file="fig/vimpGB.pdf",w=7,h=2.25) +par(mfrow=c(1,m)) +plot(out.fmw.B, model.names = models.names, elements = c("vimpG")) +graphics.off() + + +################# +# 4.2/ SCHEME C # +################# + +#Scheme C (Cox model, 15 covariates) +simulate = simulate.C; tau = 2.8; p = 15 +models = c("km","cox","rsf","lm","cox.oracle") +models.names = c("KM","Cox","RSF","P.obs.+LM","Oracle") +m = length(models.names) +train.fun.4.2 = function(x,t,d,tau){train.fun(x,t,d,tau,pred.models=models)} +predict.fun.4.2 = function(out,x0,tau){predict.fun(out,x0,tau,pred.models=models)} +###### + +n = 1000 +df = simulate(n,seed=40) + +### Analysis framework ### + +V = 10 +out.fmw.C = rmst.pred(df$x, df$tobs, df$delta, tau, train.fun.4.2, predict.fun.4.2, + n.folds=V, cens.model="km", alpha=0.1, vars=0, + seed=0, verbose=TRUE, rho=0.5, vimpL = F) + +### MSE ### + +pdf(file="fig/mseC.pdf",w=3.5,h=3.5) +par(mfrow=c(1,1)) +plot(out.fmw.C, model.names = models.names, elements = c("mse")) +graphics.off() + +### Global variable importance ### + +## Test ## + +sink(file = "fig/testC.txt", type = "output") +print(out.fmw.C, model.names = models.names) +sink() + +## Display ## + +pdf(file="fig/vimpGC.pdf",w=9,h=2.25) +par(mfrow=c(1,m)) +plot(out.fmw.C, model.names = models.names, elements = c("vimpG")) +graphics.off() + +## Re-computation of global vimp with another seed +out.fmw.C2 = rmst.pred(df$x, df$tobs, df$delta, tau, train.fun.4.2, predict.fun.4.2, + n.folds=V, cens.model="km", alpha=0.1, vars=0, + seed=10, verbose=TRUE, rho=0.5, vimpL = F, error = F, roo=F) + +pdf(file="fig/vimpGC2.pdf",w=9,h=2.25) +par(mfrow=c(1,m)) +plot(out.fmw.C2, model.names = models.names, elements = c("vimpG")) +graphics.off() + + +###################### +# 5/ MULTIPLE SPLITS # +###################### + +#Scheme C (Cox model, 15 covariates) +simulate = simulate.C; tau = 2.8; p = 15 +models = c("km","cox","rsf","lm","cox.oracle") +models.names = c("KM","Cox","RSF","P.obs.+LM","Oracle") +m = length(models.names) +train.fun.5 = function(x,t,d,tau){train.fun(x,t,d,tau,pred.models=models)} +predict.fun.5 = function(out,x0,tau){predict.fun(out,x0,tau,pred.models=models)} +###### + +vars.active = 1:15 + +multiple.splits.pll = function(X){ + set.seed(X) + out = loco.surv(df$x, df$tobs, df$delta, tau, train.fun.5, predict.fun.5, + vars=vars.active,rho=0.5) + return(sapply(1:length(out$inf.sign), + FUN = function(l){out$inf.sign[[l]][,1]})) +} + +n = 1000 +df = simulate(n,seed=40) +N = 50 + +parallelisation_init() +clusterExport(cl,c("simulate","models","tau","train.fun.5","predict.fun.5", + "df","vars.active")) +multiple.C = parLapply(cl, X = 1:N, fun = multiple.splits.pll) + +multiple.C = array(unlist(multiple.C), dim = c(length(vars.active),m,N)) + +stopCluster(cl) + +save(multiple.C, file="fig/multiple.C.Rdata") + + +# Romano & DiCiccio 2019 procedure 2 +# twice the median p-value or twice the average p-value serves as a valid +# p-value for the overall test. + +pval.twice.med = round(apply(multiple.C,MARGIN=2, + function(x){apply(x,1,function(y){pmin(2*median(y),1)})}),3) + +tab.pval.twice.med = paste0("X",vars.active) +for(l in 1:m){ + tab = round(pval.twice.med[,l],digits=3) + code = get.signif.code(pval.twice.med[,l]) + tab = cbind(tab,code) + colnames(tab) = c("P-value",models.names[l]) + tab.pval.twice.med = cbind(tab.pval.twice.med,tab) +} +colnames(tab.pval.twice.med)[1] = "Var" + +sink(file = "fig/multi_testC2.txt", type = "output") +print(tab.pval.twice.med,quote=F) +print("Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1",quote=F) +sink() + + +########################### +# 6/ REAL DATA : BRCANCER # +########################### + +# The outcome of interest is the time to relapse, not the time to death +brcancer0 = read_dta(url("https://www.stata-press.com/data/r16/brcancer.dta")) +brcancer = as.data.frame(as.matrix(brcancer0)) +brcancer = brcancer %>% select(-id, -x4, -x4b, -x5e) +brcancer$x2 = brcancer$x2 - 1 + +# Events +tobs.brcancer = brcancer$rectime +delta.brcancer = brcancer$censrec +tau.brcancer = quantile(tobs.brcancer,0.9,names=F) +x.brcancer = brcancer %>% select(-rectime,-censrec) +p = dim(x.brcancer)[2] + + +##### +models = c("km","cox","rsf","lm") +models.names = c("KM","Cox","RSF","P.obs.+LM") +m = length(models.names) +train.fun.6 = function(x,t,d,tau){train.fun(x,t,d,tau,pred.models=models)} +predict.fun.6 = function(out,x0,tau){predict.fun(out,x0,tau,pred.models=models)} +###### + +out.brcancer = + rmst.pred(x.brcancer, tobs.brcancer, delta.brcancer, tau.brcancer, + train.fun.6, predict.fun.6, n.folds=20, cens.model="km", + alpha=0.1, vars=0, verbose=TRUE, seed=20, + error=T,roo=T,vimpL=T,vimpG=T,rho=0.5) + +### MSE ### + +pdf(file="fig/mse_brcancer.pdf",w=3.5,h=3.5) +par(mfrow=c(1,1)) +plot(out.brcancer, model.names = models.names, elements = c("mse")) +graphics.off() + + +### Local variable importance ### + +pdf(file="fig/vimpL_brcancer.pdf",w=9,h=6) +par(mfrow=c(m,5)) +plot(out.brcancer, model.names = models.names, elements = c("vimpL"), + varsL=c(2,4,5,6,7)) +graphics.off() + +### Global variable importance ### + +## Test ## + +sink(file = "fig/test_brcancer.txt", type = "output") +print(out.brcancer, model.names = models.names, var.names = colnames(x.brcancer)) +sink() + +## Display ## + +pdf(file="fig/vimpG_brcancer.pdf",w=12,h=3) +par(mfrow=c(1,m)) +plot(out.brcancer, model.names = models.names, elements = c("vimpG")) +graphics.off() + + +### Multiple splitting ### + +multiple.splits.br.pll = function(X){ + set.seed(X) + out = loco.surv(x.brcancer, tobs.brcancer, delta.brcancer, tau.brcancer, + train.fun.6, predict.fun.6, vars=0,rho=0.5) + return(sapply(1:length(out$inf.sign), + FUN = function(l){out$inf.sign[[l]][,1]})) +} + +N = 40 + +parallelisation_init() +clusterExport(cl,c("simulate","models","train.fun.6","predict.fun.6", + "x.brcancer","tobs.brcancer","delta.brcancer","tau.brcancer")) + +multiple.brcancer = parLapply(cl, X = 1:N, fun = multiple.splits.br.pll) + +multiple.brcancer = array(unlist(multiple.brcancer), dim = c(p,m,N)) + +stopCluster(cl) + + + +pval.twice.med.br = round(apply(multiple.brcancer,MARGIN=2, + function(x){apply(x,1,function(y){pmin(2*median(y),1)})}),3) + +tab.pval.twice.med.br = colnames(x.brcancer) +for(l in 1:m){ + tab = round(pval.twice.med.br[,l],digits=3) + code = get.signif.code(pval.twice.med.br[,l]) + tab = cbind(tab,code) + colnames(tab) = c("P-value",models.names[l]) + tab.pval.twice.med.br = cbind(tab.pval.twice.med.br,tab) +} +colnames(tab.pval.twice.med.br)[1] = "Var" + +sink(file = "fig/multi_test_brcancer.txt", type = "output") +print(tab.pval.twice.med.br,quote=F) +print("Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1",quote=F) +sink() + From b5a59ca5bf5ce4f1e1ad655e0401ad1d9b47800a Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Thu, 21 Sep 2023 18:08:33 +0200 Subject: [PATCH 02/57] Name repository --- {cwiling23 => cwiling2023}/fig.loco.surv.R | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {cwiling23 => cwiling2023}/fig.loco.surv.R (100%) diff --git a/cwiling23/fig.loco.surv.R b/cwiling2023/fig.loco.surv.R similarity index 100% rename from cwiling23/fig.loco.surv.R rename to cwiling2023/fig.loco.surv.R From 1a54547eb6613eb8103dcf97c7ed51928ae2b182 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Thu, 21 Sep 2023 18:11:52 +0200 Subject: [PATCH 03/57] Minor revisions --- conformalInference/R/loco.R | 2 ++ conformalInference/R/loco.roo.R | 2 ++ conformalInference/R/roo.R | 3 +++ conformalInference/R/split.R | 3 +++ 4 files changed, 10 insertions(+) diff --git a/conformalInference/R/loco.R b/conformalInference/R/loco.R index 5a7c0f1..916753e 100644 --- a/conformalInference/R/loco.R +++ b/conformalInference/R/loco.R @@ -308,6 +308,8 @@ get.signif.code = function(v) { ############################################################################### +#' Extension to right-censored data. +#' #' Variable importance via median excess test error #' #' Compute confidence intervals for median excess test error due to diff --git a/conformalInference/R/loco.roo.R b/conformalInference/R/loco.roo.R index fea089d..e0966b8 100644 --- a/conformalInference/R/loco.roo.R +++ b/conformalInference/R/loco.roo.R @@ -196,6 +196,8 @@ conformal.diff.int = function(mu1, mu2, lo, up) { ############################################################################### +#' Extension to right-censored data. +#' #' Compute prediction intervals for the excess test error due to dropping a #' variable, measured in-sample and having asymptotically valid in-sample #' coverage. Extension to estimators of the restricted mean survival time with diff --git a/conformalInference/R/roo.R b/conformalInference/R/roo.R index af310a2..de47644 100644 --- a/conformalInference/R/roo.R +++ b/conformalInference/R/roo.R @@ -177,7 +177,10 @@ conformal.pred.roo = function(x, y, train.fun, predict.fun, alpha=0.1, fit.all=fit.all,out.all=out.all)) } +############################################################################### +#' Extension to right-censored data. +#' #' In-sample IPCW split conformal prediction intervals. #' #' Compute prediction intervals for predictions of the restricted time-to-event, diff --git a/conformalInference/R/split.R b/conformalInference/R/split.R index 043451c..ca54e14 100644 --- a/conformalInference/R/split.R +++ b/conformalInference/R/split.R @@ -163,7 +163,10 @@ conformal.pred.split = function(x, y, x0, train.fun, predict.fun, alpha=0.1, return(list(pred=pred,lo=lo,up=up,fit=fit,split=i1)) } +############################################################################### +#' Extension to right-censored data. +#' #' Split conformal prediction intervals for right-censored data. #' #' Compute prediction intervals for predictions of the restricted time-to-event From f08789c99c7a4925f2a7e395fe81691495ed4ad4 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Thu, 21 Sep 2023 18:19:09 +0200 Subject: [PATCH 04/57] Update README.md --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eca0bea..5c5e5c9 100644 --- a/README.md +++ b/README.md @@ -15,11 +15,18 @@ The folder "lei2018" contains R code to reproduce all examples in the paper by Lei, G'Sell, Rinaldo, Tibshirani, Wasserman (2018). The folder "tibshirani2019" contains R code to reproduce all examples in the paper [Conformal Prediction Under Covariate Shift](http://www.stat.cmu.edu/~ryantibs/papers/weightedcp.pdf) -by Tibshirani, Barber, Candes, Ramdas (2019). This code all relies on the +by Tibshirani, Barber, Candes, Ramdas (2019). The folder "cwiling2023" +contains R code to reproduce all examples in the paper +[A Comprehensive Framework for Evaluating Time to Event +Predictions using the Restricted Mean Survival Time](https://arxiv.org/pdf/2306.16075.pdf) +by Cwiling, Perduca, Bouaziz (2023). This code all relies on the "conformalInference" R package. Relevant work (in reverse chronological order): +- [A Comprehensive Framework for Evaluating Time to Event + Predictions using the Restricted Mean Survival Time](https://arxiv.org/pdf/2306.16075.pdf) + by Ariane Cwiling, Vittorio Perduca, Olivier Bouaziz, arXiv preprint, 2023. - [Conformal Prediction Under Covariate Shift](http://www.stat.cmu.edu/~ryantibs/papers/weightedcp.pdf) by Ryan Tibshirani, Rina Barber, Emmanuel Candes, Aaditya Ramdas, Advances in Neural Information Processing Systems, 2019. From 8dee1eb024d78159e4bb898a38654c126e559965 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Thu, 21 Sep 2023 18:29:35 +0200 Subject: [PATCH 05/57] Update check.R --- conformalInference/R/check.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conformalInference/R/check.R b/conformalInference/R/check.R index 0391d5d..4d5b271 100644 --- a/conformalInference/R/check.R +++ b/conformalInference/R/check.R @@ -40,7 +40,7 @@ check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, stop("cens.model must be km, rsf or cox") check.pos.num(tau) check.num.01(alpha) - check.args = function(x, t, x0, alpha, train.fun, + check.args(x, t, x0, alpha, train.fun, predict.fun, mad.train.fun, mad.predict.fun, special.fun) } From c82f8c5be99e16f3f10679f39a064e6e0bd42ee4 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Thu, 21 Sep 2023 18:33:03 +0200 Subject: [PATCH 06/57] Test check --- conformalInference/R/check.R | 40 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/conformalInference/R/check.R b/conformalInference/R/check.R index 4d5b271..700adc2 100644 --- a/conformalInference/R/check.R +++ b/conformalInference/R/check.R @@ -23,26 +23,26 @@ check.args = function(x=NULL, y=NULL, x0=NULL, alpha=NULL, stop("special.fun must be a function") } -check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, - cens.model=NULL, alpha=NULL, train.fun=NULL, predict.fun=NULL, - mad.train.fun=NULL, mad.predict.fun=NULL, special.fun=NULL) { - - if (is.null(x) || !is.numeric(x)) stop("x must be a numeric matrix") - if (is.null(t) || !is.numeric(t)) stop("t must be a numeric vector") - if (nrow(x) != length(t)) stop("nrow(x) and length(t) must match") - if (is.null(d) || !is.numeric(d)) stop("d must be a binary (0/1) vector") - if (length(d[d!=0 & d!=1]) != 0) stop("d must be a binary (0/1) vector") - if (length(d) != length(t)) stop("length(d) and length(t) must match") - if (!is.null(w) && !is.numeric(w)) stop("w must be NULL or a numeric vector") - if (!is.null(w) && length(w) != length(t)) - stop("length(w) and length(t) must match") - if (!(cens.model %in% c("km","rsf","cox"))) - stop("cens.model must be km, rsf or cox") - check.pos.num(tau) - check.num.01(alpha) - check.args(x, t, x0, alpha, train.fun, - predict.fun, mad.train.fun, mad.predict.fun, special.fun) -} +# check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, +# cens.model=NULL, alpha=NULL, train.fun=NULL, predict.fun=NULL, +# mad.train.fun=NULL, mad.predict.fun=NULL, special.fun=NULL) { +# +# if (is.null(x) || !is.numeric(x)) stop("x must be a numeric matrix") +# if (is.null(t) || !is.numeric(t)) stop("t must be a numeric vector") +# if (nrow(x) != length(t)) stop("nrow(x) and length(t) must match") +# if (is.null(d) || !is.numeric(d)) stop("d must be a binary (0/1) vector") +# if (length(d[d!=0 & d!=1]) != 0) stop("d must be a binary (0/1) vector") +# if (length(d) != length(t)) stop("length(d) and length(t) must match") +# if (!is.null(w) && !is.numeric(w)) stop("w must be NULL or a numeric vector") +# if (!is.null(w) && length(w) != length(t)) +# stop("length(w) and length(t) must match") +# if (!(cens.model %in% c("km","rsf","cox"))) +# stop("cens.model must be km, rsf or cox") +# check.pos.num(tau) +# check.num.01(alpha) +# check.args(x, t, x0, alpha, train.fun, +# predict.fun, mad.train.fun, mad.predict.fun, special.fun) +# } check.bool = function(b) { if (is.null(b) || length(b)!=1 || !is.logical(b)) From 52b84f4191a9b37c1cc41a4a75a949c21804a199 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Thu, 21 Sep 2023 18:37:30 +0200 Subject: [PATCH 07/57] Test check --- conformalInference/R/check.R | 40 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/conformalInference/R/check.R b/conformalInference/R/check.R index 700adc2..e1183c5 100644 --- a/conformalInference/R/check.R +++ b/conformalInference/R/check.R @@ -23,26 +23,26 @@ check.args = function(x=NULL, y=NULL, x0=NULL, alpha=NULL, stop("special.fun must be a function") } -# check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, -# cens.model=NULL, alpha=NULL, train.fun=NULL, predict.fun=NULL, -# mad.train.fun=NULL, mad.predict.fun=NULL, special.fun=NULL) { -# -# if (is.null(x) || !is.numeric(x)) stop("x must be a numeric matrix") -# if (is.null(t) || !is.numeric(t)) stop("t must be a numeric vector") -# if (nrow(x) != length(t)) stop("nrow(x) and length(t) must match") -# if (is.null(d) || !is.numeric(d)) stop("d must be a binary (0/1) vector") -# if (length(d[d!=0 & d!=1]) != 0) stop("d must be a binary (0/1) vector") -# if (length(d) != length(t)) stop("length(d) and length(t) must match") -# if (!is.null(w) && !is.numeric(w)) stop("w must be NULL or a numeric vector") -# if (!is.null(w) && length(w) != length(t)) -# stop("length(w) and length(t) must match") -# if (!(cens.model %in% c("km","rsf","cox"))) -# stop("cens.model must be km, rsf or cox") -# check.pos.num(tau) -# check.num.01(alpha) -# check.args(x, t, x0, alpha, train.fun, -# predict.fun, mad.train.fun, mad.predict.fun, special.fun) -# } +check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, + cens.model=NULL, alpha=NULL, train.fun=NULL, predict.fun=NULL, + mad.train.fun=NULL, mad.predict.fun=NULL, special.fun=NULL) { + + if (is.null(x) || !is.numeric(x)) stop("x must be a numeric matrix") + if (is.null(t) || !is.numeric(t)) stop("t must be a numeric vector") + if (nrow(x) != length(t)) stop("nrow(x) and length(t) must match") + if (is.null(d) || !is.numeric(d)) stop("d must be a binary (0/1) vector") + if (length(d[d!=0 & d!=1]) != 0) stop("d must be a binary (0/1) vector") + if (length(d) != length(t)) stop("length(d) and length(t) must match") + if (!is.null(w) && !is.numeric(w)) stop("w must be NULL or a numeric vector") + if (!is.null(w) && length(w) != length(t)) + stop("length(w) and length(t) must match") + if (!(cens.model %in% c("km","rsf","cox"))) + stop("cens.model must be km, rsf or cox") + check.pos.num(tau) + check.num.01(alpha) + check.args(x, t, x0, alpha, train.fun, + predict.fun, mad.train.fun, mad.predict.fun, special.fun) +} check.bool = function(b) { if (is.null(b) || length(b)!=1 || !is.logical(b)) From b21e20d18d3263b55d7e824b3e7f6c770cbc544b Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 11:35:41 +0200 Subject: [PATCH 08/57] Export --- conformalInference/R/ipcw.R | 2 +- conformalInference/R/split.R | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/conformalInference/R/ipcw.R b/conformalInference/R/ipcw.R index 6921bb0..936b5b9 100644 --- a/conformalInference/R/ipcw.R +++ b/conformalInference/R/ipcw.R @@ -12,7 +12,7 @@ #' #' @return A vector of length n containing the censoring weights. #' -#' @export ipcw +#' @export ipcw = function(t,d,x,tau,cens.model = "km"){ if(!is.null(x)){ x = as.matrix(x) } diff --git a/conformalInference/R/split.R b/conformalInference/R/split.R index ca54e14..4a17911 100644 --- a/conformalInference/R/split.R +++ b/conformalInference/R/split.R @@ -75,7 +75,7 @@ #' G'Sell, Rinaldo, Tibshirani, Wasserman (2018) for another description; and #' "Conformal Prediction Under Covariate Shift" by Barber, Candes, Ramdas, #' Tibshirani (2019) for the weighted extension. -#' @export conformal.pred.split +#' @export conformal.pred.split = function(x, y, x0, train.fun, predict.fun, alpha=0.1, rho=0.5, w=NULL, mad.train.fun=NULL, mad.predict.fun=NULL, split=NULL, @@ -244,7 +244,7 @@ conformal.pred.split = function(x, y, x0, train.fun, predict.fun, alpha=0.1, #' Framework for Evaluating Time to Event Predictions using the Restricted #' Mean Survival Time" by Cwiling, Perduca, Bouaziz (2023) for the extension #' to right-censored data. -#' @export conformal.pred.split.surv +#' @export conformal.pred.split.surv = function(x, t, d, tau, x0, train.fun, predict.fun, w=NULL, cens.model="km", alpha=0.1, rho=0.5, mad.train.fun=NULL, From ee645a376bae281ba4701094b5e34ff581cf3724 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:02:34 +0200 Subject: [PATCH 09/57] Namespace modification --- conformalInference/DESCRIPTION | 2 +- conformalInference/NAMESPACE | 10 ++ conformalInference/R/ipcw.R | 2 +- conformalInference/R/split.R | 4 +- conformalInference/man/conformal.pred.Rd | 20 ++- .../man/conformal.pred.msplit.Rd | 121 +++++++++++++ .../man/conformal.pred.roo.surv.Rd | 120 +++++++++++++ .../man/conformal.pred.split.surv.Rd | 125 ++++++++++++++ .../man/conformalInference-package.Rd | 16 ++ conformalInference/man/interval.build.Rd | 20 +++ conformalInference/man/ipcw.Rd | 31 ++++ conformalInference/man/loco.roo.surv.Rd | 123 +++++++++++++ conformalInference/man/loco.surv.Rd | 108 ++++++++++++ conformalInference/man/plot.rmst.pred.Rd | 31 ++++ conformalInference/man/print.loco.surv.Rd | 18 ++ conformalInference/man/print.rmst.pred.Rd | 38 +++++ conformalInference/man/rmst.pred.Rd | 161 ++++++++++++++++++ 17 files changed, 941 insertions(+), 9 deletions(-) create mode 100644 conformalInference/man/conformal.pred.msplit.Rd create mode 100644 conformalInference/man/conformal.pred.roo.surv.Rd create mode 100644 conformalInference/man/conformal.pred.split.surv.Rd create mode 100644 conformalInference/man/interval.build.Rd create mode 100644 conformalInference/man/ipcw.Rd create mode 100644 conformalInference/man/loco.roo.surv.Rd create mode 100644 conformalInference/man/loco.surv.Rd create mode 100644 conformalInference/man/plot.rmst.pred.Rd create mode 100644 conformalInference/man/print.loco.surv.Rd create mode 100644 conformalInference/man/print.rmst.pred.Rd create mode 100644 conformalInference/man/rmst.pred.Rd diff --git a/conformalInference/DESCRIPTION b/conformalInference/DESCRIPTION index 17bf9d5..0bba545 100644 --- a/conformalInference/DESCRIPTION +++ b/conformalInference/DESCRIPTION @@ -23,4 +23,4 @@ Description: A collection of tools for distribution-free inference for regression problems using the theory of conformal prediction. License: GPL-2 Encoding: UTF-8 -RoxygenNote: 7.1.2 +RoxygenNote: 7.2.0 diff --git a/conformalInference/NAMESPACE b/conformalInference/NAMESPACE index f72f918..c0e097e 100644 --- a/conformalInference/NAMESPACE +++ b/conformalInference/NAMESPACE @@ -1,22 +1,32 @@ # Generated by roxygen2: do not edit by hand +S3method(plot,rmst.pred) S3method(plot,sim) S3method(print,loco) +S3method(print,loco.surv) +S3method(print,rmst.pred) S3method(print,sim) export(chol.solve) export(conformal.pred) export(conformal.pred.jack) +export(conformal.pred.msplit) export(conformal.pred.roo) +export(conformal.pred.roo.surv) export(conformal.pred.split) +export(conformal.pred.split.surv) export(elastic.funs) +export(ipcw) export(lars.funs) export(lasso.funs) export(lm.funs) export(loco) export(loco.roo) +export(loco.roo.surv) +export(loco.surv) export(print.tex) export(rf.funs) export(ridge.funs) +export(rmst.pred) export(sam.funs) export(sim.master) export(sim.xy) diff --git a/conformalInference/R/ipcw.R b/conformalInference/R/ipcw.R index 936b5b9..6921bb0 100644 --- a/conformalInference/R/ipcw.R +++ b/conformalInference/R/ipcw.R @@ -12,7 +12,7 @@ #' #' @return A vector of length n containing the censoring weights. #' -#' @export +#' @export ipcw ipcw = function(t,d,x,tau,cens.model = "km"){ if(!is.null(x)){ x = as.matrix(x) } diff --git a/conformalInference/R/split.R b/conformalInference/R/split.R index 4a17911..ca54e14 100644 --- a/conformalInference/R/split.R +++ b/conformalInference/R/split.R @@ -75,7 +75,7 @@ #' G'Sell, Rinaldo, Tibshirani, Wasserman (2018) for another description; and #' "Conformal Prediction Under Covariate Shift" by Barber, Candes, Ramdas, #' Tibshirani (2019) for the weighted extension. -#' @export +#' @export conformal.pred.split conformal.pred.split = function(x, y, x0, train.fun, predict.fun, alpha=0.1, rho=0.5, w=NULL, mad.train.fun=NULL, mad.predict.fun=NULL, split=NULL, @@ -244,7 +244,7 @@ conformal.pred.split = function(x, y, x0, train.fun, predict.fun, alpha=0.1, #' Framework for Evaluating Time to Event Predictions using the Restricted #' Mean Survival Time" by Cwiling, Perduca, Bouaziz (2023) for the extension #' to right-censored data. -#' @export +#' @export conformal.pred.split.surv conformal.pred.split.surv = function(x, t, d, tau, x0, train.fun, predict.fun, w=NULL, cens.model="km", alpha=0.1, rho=0.5, mad.train.fun=NULL, diff --git a/conformalInference/man/conformal.pred.Rd b/conformalInference/man/conformal.pred.Rd index 4c614e8..3665102 100644 --- a/conformalInference/man/conformal.pred.Rd +++ b/conformalInference/man/conformal.pred.Rd @@ -157,12 +157,15 @@ out.gnet = glmnet(x,y,nlambda=100,lambda.min.ratio=1e-3) lambda = out.gnet$lambda funs = lasso.funs(lambda=lambda) -# Conformal inference, and jacknife and split conformal versions +# Conformal inference, and jacknife (also jackknife+) and split conformal versions out.conf = conformal.pred(x, y, x0, alpha=0.1, train.fun=funs$train, predict.fun=funs$predict, verb=TRUE) out.jack = conformal.pred.jack(x, y, x0, alpha=0.1, - train.fun=funs$train, predict.fun=funs$predict) + train.fun=funs$train, predict.fun=funs$predict, plus=FALSE) + +out.jack.plus = conformal.pred.jack(x, y, x0, alpha=0.1, + train.fun=funs$train, predict.fun=funs$predict) out.split = conformal.pred.split(x, y, x0, alpha=0.1, seed=0, train.fun=funs$train, predict.fun=funs$predict) @@ -176,6 +179,10 @@ cov.jack = colMeans(out.jack$lo <= y0.mat & y0.mat <= out.jack$up) len.jack = colMeans(out.jack$up - out.jack$lo) err.jack = colMeans((y0.mat - out.jack$pred)^2) +cov.jack.plus = colMeans(out.jack.plus$lo <= y0.mat & y0.mat <= out.jack.plus$up) +len.jack.plus = colMeans(out.jack.plus$up - out.jack.plus$lo) +err.jack.plus = colMeans((y0.mat - out.jack.plus$pred)^2) + cov.split = colMeans(out.split$lo <= y0.mat & y0.mat <= out.split$up) len.split = colMeans(out.split$up - out.split$lo) err.split = colMeans((y0.mat - out.split$pred)^2) @@ -195,10 +202,11 @@ plot(log(lambda),cov.conf,type="o",pch=20,ylim=c(0,1), main=paste0("Conformal + lasso (fixed lambda sequence):", "\nAverage coverage")) points(log(lambda),cov.jack,type="o",pch=20,col=3) +points(log(lambda),cov.jack.plus,type="o",pch=20,col=5) points(log(lambda),cov.split,type="o",pch=20,col=4) abline(h=cov.orac,lty=2,col=2) legend("bottomleft",col=c(1,3,4,2),lty=c(1,1,1,2), - legend=c("Conformal","Jackknife conformal", + legend=c("Conformal","Jackknife conformal","Jackknife + Conformal", "Split conformal","Oracle")) # Plot average length @@ -208,10 +216,11 @@ plot(log(lambda),len.conf,type="o",pch=20, main=paste0("Conformal + lasso (fixed lambda sequence):", "\nAverage length")) points(log(lambda),len.jack,type="o",pch=20,col=3) +points(log(lambda),len.jack.plus,type="o",pch=20,col=5) points(log(lambda),len.split,type="o",pch=20,col=4) abline(h=len.orac,lty=2,col=2) legend("topleft",col=c(1,3,4,2),lty=c(1,1,1,2), - legend=c("Conformal","Jackknife conformal", + legend=c("Conformal","Jackknife conformal","Jackknife + Conformal", "Split conformal","Oracle")) # Plot test error @@ -221,10 +230,11 @@ plot(log(lambda),err.conf,type="o",pch=20, main=paste0("Conformal + lasso (fixed lambda sequence):", "\nTest error")) points(log(lambda),err.jack,type="o",pch=20,col=3) +points(log(lambda),err.jack.plus,type="o",pch=20,col=5) points(log(lambda),err.split,type="o",pch=20,col=4) abline(h=err.orac,lty=2,col=2) legend("topleft",col=c(1,3,4,2),lty=c(1,1,1,2), - legend=c("Conformal","Jackknife conformal", + legend=c("Conformal","Jackknife conformal","Jackknife + Conformal", "Split conformal","Oracle")) } diff --git a/conformalInference/man/conformal.pred.msplit.Rd b/conformalInference/man/conformal.pred.msplit.Rd new file mode 100644 index 0000000..e4fe68a --- /dev/null +++ b/conformalInference/man/conformal.pred.msplit.Rd @@ -0,0 +1,121 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/multisplit.R +\name{conformal.pred.msplit} +\alias{conformal.pred.msplit} +\title{Multi Split conformal prediction intervals.} +\usage{ +conformal.pred.msplit( + x, + y, + x0, + train.fun, + predict.fun, + alpha = 0.1, + rho = rep(0.5, B), + w = NULL, + mad.train.fun = NULL, + mad.predict.fun = NULL, + split = NULL, + seed = NULL, + B = 50, + lambda = 0.5, + tau = 1 - (B + 1)/(2 * B), + verbose = FALSE +) +} +\arguments{ +\item{x}{Matrix of features, of dimension (say) n x p.} + +\item{y}{Vector of responses, of length (say) n.} + +\item{x0}{Matrix of features, each row being a point at which we want to +form a prediction interval, of dimension (say) n0 x p.} + +\item{train.fun}{A function to perform model training, i.e., to produce an +estimator of E(Y|X), the conditional expectation of the response variable +Y given features X. Its input arguments should be x: matrix of features, +and y: vector of responses.} + +\item{predict.fun}{A function to perform prediction for the (mean of the) +responses at new feature values. Its input arguments should be out: output +produced by train.fun, and newx: feature values at which we want to make +predictions.} + +\item{alpha}{Miscoverage level for the prediction intervals, i.e., intervals +with coverage 1-alpha are formed. Default for alpha is 0.1.} + +\item{rho}{It is a vector of split proportions of length B. Default is NULL.} + +\item{w}{Weights, in the case of covariate shift. This should be a vector of +length n+n0, giving the weights (i.e., ratio of test to training feature +densities), at each of n+n0 the training and test points. Default is NULL, +which means that we take all weights to be 1.} + +\item{mad.train.fun}{A function to perform training on the absolute residuals +i.e., to produce an estimator of E(R|X) where R is the absolute residual +R = |Y - m(X)|, and m denotes the estimator produced by train.fun. +This is used to scale the conformal score, to produce a prediction interval +with varying local width. The input arguments to mad.train.fun should be +x: matrix of features, and y: vector of absolute residuals. The default for +mad.train.fun is NULL, which means that no training is done on the absolute +residuals, and the usual (unscaled) conformal score is used. Note that if +mad.train.fun is non-NULL, then so must be mad.predict.fun (see next).} + +\item{mad.predict.fun}{A function to perform prediction for the (mean of the) +absolute residuals at new feature values. Its input arguments should be +out: output produced by mad.train.fun, and newx: feature values at which we +want to make predictions. The default for mad.predict.fun is NULL, which +means that no local scaling is done for the conformal score, i.e., the +usual (unscaled) conformal score is used.} + +\item{split}{Indices that define the data-split to be used (i.e., the indices +define the first half of the data-split, on which the model is trained). +Default is NULL, in which case the split is chosen randomly.} + +\item{seed}{Integer to be passed to set.seed before defining the random +data-split to be used. Default is NULL, which effectively sets no seed. +If both split and seed are passed, the former takes priority and the latter +is ignored.} + +\item{B}{number of replications. Default is 50.} + +\item{lambda}{Smoothing parameter. Default is 0.} + +\item{tau}{It is a smoothing parameter, whose value affects the behavior of the + function joining the B intervals: + tau=1-1/B Bonferroni intersection method + tau=0 unadjusted intersection +Default is 1-(B+1)/(2*B).} + +\item{verbose}{Should intermediate progress be printed out? Default is FALSE.} +} +\value{ +A list with the following components: lo, up. They are matrices of + dimension n0 x m. Recall that n0 is the number of rows of x0, and m is the + number of tuning parameter values internal to predict.fun. In a sense, each + of the m columns really corresponds to a different prediction function; + see details below. +} +\description{ +Compute prediction intervals using multisplit conformal inference. +} +\details{ +For concreteness, suppose that we want to use the predictions from + forward stepwise regression at steps 1 through 5 in the path. In this case, + there are m = 5 internal tuning parameter values to predict.fun, in the + notation used above, and each of the returned matrices pred, lo, up, fit + will have 5 columns (one for each step of the forward stepwise path). + The code is structured in this way so that we may defined a single pair of + functions train.fun and predict.fun, over a set of m = 5 tuning parameter + values, instead of calling the conformal function separately m = 5 times. + + This function is based on the package \code{\link{future.apply}} to + perform parallelization. If this package is not installed, then the function + will proceed serially. +} +\references{ +"Multi Split Conformal Prediction" by Solari, Djordjilovic (2021). +} +\seealso{ +\code{\link{conformal.pred.split}} +} diff --git a/conformalInference/man/conformal.pred.roo.surv.Rd b/conformalInference/man/conformal.pred.roo.surv.Rd new file mode 100644 index 0000000..38ed880 --- /dev/null +++ b/conformalInference/man/conformal.pred.roo.surv.Rd @@ -0,0 +1,120 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/roo.R +\name{conformal.pred.roo.surv} +\alias{conformal.pred.roo.surv} +\title{Extension to right-censored data.} +\usage{ +conformal.pred.roo.surv( + x, + t, + d, + tau, + train.fun, + predict.fun, + w = NULL, + cens.model = "km", + alpha = 0.1, + mad.train.fun = NULL, + mad.predict.fun = NULL, + split = NULL, + seed = NULL, + verbose = FALSE +) +} +\arguments{ +\item{x}{Matrix of features, of dimension (say) n x p.} + +\item{t}{Vector of responses (observed times), of length (say) n.} + +\item{d}{Vector of responses (censoring indicator), of length (say) n.} + +\item{tau}{Horizon of time.} + +\item{train.fun}{A function to perform model training, i.e., to produce an +estimator of E(min(T*,tau)|X), the conditional expectation of the true +event time T* given features X. Its input arguments should be x: matrix of +features, t: vector of observed times, d: vector of censoring indicators +and tau: horizon of time. train.fun can be a function performing model +training for several (say m) regression models.} + +\item{predict.fun}{A function to perform prediction for the (mean of the) +responses at new feature values. Its input arguments should be out: output +produced by train.fun, and newx: feature values at which we want to make +predictions.} + +\item{w}{Censoring weights. This should be a vector of length n. Default is +NULL, in which case censoring weights are computed using the censoring +model specified by the parameter cens.model, or by default with the +Kaplan-Meier model.} + +\item{cens.model}{Model used to estimate the censoring survival function. +This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +Random Survival Forests or Cox). Default is "km".} + +\item{alpha}{Miscoverage level for the prediction intervals, i.e., intervals +with coverage 1-alpha are formed. One or several values can be passed for +which to compute intervals. Default for alpha is 0.1.} + +\item{mad.train.fun}{A function to perform training on the observed absolute +residuals R = |min(T,tau) - m(X)| and their associated censoring weights, +where m denotes the estimator produced by train.fun, to estimate E(R*|X) +for the true absolute residual denoted R*. +This is used to scale the conformal score, to produce a prediction interval +with varying local width. The input arguments to mad.train.fun should be +x: matrix of features, y: vector of observed absolute residuals, and w: +censoring weights. The default for mad.train.fun is NULL, which means that +no training is done on the absolute residuals, and the usual (unscaled) +conformal score is used. Note that if mad.train.fun is non-NULL, then so +must be mad.predict.fun (see next).} + +\item{mad.predict.fun}{A function to perform prediction for the (mean of the) +absolute residuals at new feature values. Its input arguments should be +out: output produced by mad.train.fun, and newx: feature values at which we +want to make predictions. The default for mad.predict.fun is NULL, which +means that no local scaling is done for the conformal score, i.e., the +usual (unscaled) conformal score is used.} + +\item{split}{Indices that define the data-split to be used (i.e., the indices +define the first half of the data-split). Default is NULL, in which case +the split is chosen randomly.} + +\item{seed}{Integer to be passed to set.seed before defining the random +data-split to be used. Default is NULL, which effectively sets no seed. +If both split and seed are passed, the former takes priority and the latter +is ignored.} + +\item{verbose}{Should intermediate progress be printed out? Default is FALSE.} +} +\value{ +A list with the following components: pred, lo, up, fit, split, + fit.all, out.all. pred and fit are matrices of dimension n x m. lo and up + are arrays of dimension n x m x a. Recall that n0 is the number of + rows of x0, m is the number of regression models and a is the number of + values passed to alpha. Hence, the rows of the matrices pred, lo, up give + the predicted value, and lower and upper confidence limits (from rank-one- + out split conformal inference), respectively, for the response at the n + points given in x. The rows of the matrix fit give the fitted values for + the n points given in x. The indices used for the half of the data-split + are returned in split. Finally, for convenience, the output from running + train.out on the entire (unsplit) data set x,y is stored in out.all, and + fit.all is an n x m matrix whose rows store the fitted values from out.all. +} +\description{ +In-sample IPCW split conformal prediction intervals. +} +\details{ +Compute prediction intervals for predictions of the restricted time-to-event, +having asymptotically valid in-sample coverage, using rank-one-out (ROO) +split conformal inference. +} +\references{ +"Distribution-Free Predictive Inference for Regression" by Lei, + G'Sell, Rinaldo, Tibshirani, Wasserman (2018). See also "A Comprehensive + Framework for Evaluating Time to Event Predictions using the Restricted + Mean Survival Time" by Cwiling, Perduca, Bouaziz (2023) for the extension + to right-censored data. +} +\seealso{ +\code{\link{conformal.pred}}, + \code{\link{conformal.pred.roo}}, \code{\link{conformal.pred.split.surv}} +} diff --git a/conformalInference/man/conformal.pred.split.surv.Rd b/conformalInference/man/conformal.pred.split.surv.Rd new file mode 100644 index 0000000..a4c0a37 --- /dev/null +++ b/conformalInference/man/conformal.pred.split.surv.Rd @@ -0,0 +1,125 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/split.R +\name{conformal.pred.split.surv} +\alias{conformal.pred.split.surv} +\title{Extension to right-censored data.} +\usage{ +conformal.pred.split.surv( + x, + t, + d, + tau, + x0, + train.fun, + predict.fun, + w = NULL, + cens.model = "km", + alpha = 0.1, + rho = 0.5, + mad.train.fun = NULL, + mad.predict.fun = NULL, + split = NULL, + seed = NULL, + verbose = FALSE +) +} +\arguments{ +\item{x}{Matrix of features, of dimension (say) n x p.} + +\item{t}{Vector of responses (observed times), of length (say) n.} + +\item{d}{Vector of responses (censoring indicator), of length (say) n.} + +\item{tau}{Horizon of time.} + +\item{x0}{Matrix of features, each row being a point at which we want to +form a prediction interval, of dimension (say) n0 x p.} + +\item{train.fun}{A function to perform model training, i.e., to produce an +estimator of E(min(T*,tau)|X), the conditional expectation of the true +event time T* given features X. Its input arguments should be x: matrix of +features, t: vector of observed times, d: vector of censoring indicators +and tau: horizon of time. train.fun can be a function performing model +training for several (say m) regression models.} + +\item{predict.fun}{A function to perform prediction for the (mean of the) +responses at new feature values. Its input arguments should be out: output +produced by train.fun, and newx: feature values at which we want to make +predictions.} + +\item{w}{Censoring weights. This should be a vector of length n. Default is +NULL, in which case censoring weights are computed using the censoring +model specified by the parameter cens.model, or by default with the +Kaplan-Meier model.} + +\item{cens.model}{Model used to estimate the censoring survival function. +This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +Random Survival Forests or Cox). Default is "km".} + +\item{alpha}{Miscoverage level for the prediction intervals, i.e., intervals +with coverage 1-alpha are formed. One or several values can be passed for +which to compute intervals. Default for alpha is 0.1.} + +\item{rho}{Fraction of observations to use in the training set. This is +rounded to the nearest integer below, and defaults to 0.5.} + +\item{mad.train.fun}{A function to perform training on the observed absolute +residuals R = |min(T,tau) - m(X)| and their associated censoring weights, +where m denotes the estimator produced by train.fun, to estimate E(R*|X) +for the true absolute residual denoted R*. +This is used to scale the conformal score, to produce a prediction interval +with varying local width. The input arguments to mad.train.fun should be +x: matrix of features, y: vector of observed absolute residuals, and w: +censoring weights. The default for mad.train.fun is NULL, which means that +no training is done on the absolute residuals, and the usual (unscaled) +conformal score is used. Note that if mad.train.fun is non-NULL, then so +must be mad.predict.fun (see next).} + +\item{mad.predict.fun}{A function to perform prediction for the (mean of the) +absolute residuals at new feature values. Its input arguments should be +out: output produced by mad.train.fun, and newx: feature values at which we +want to make predictions. The default for mad.predict.fun is NULL, which +means that no local scaling is done for the conformal score, i.e., the +usual (unscaled) conformal score is used.} + +\item{split}{Indices that define the data-split to be used (i.e., the indices +define the first half of the data-split, on which the model is trained). +Default is NULL, in which case the split is chosen randomly.} + +\item{seed}{Integer to be passed to set.seed before defining the random +data-split to be used. Default is NULL, which effectively sets no seed. +If both split and seed are passed, the former takes priority and the latter +is ignored.} + +\item{verbose}{Should intermediate progress be printed out? Default is FALSE.} +} +\value{ +A list with the following components: pred, lo, up, fit, split. pred + is a matrice of dimension n0 x m. lo and up are arrays of dimension n0 x m + x a. fit is a matrix of dimension n x m. Recall that n0 is the number of + rows of x0, m is the number of regression models and a is the number of + values passed to alpha. Hence, the rows of the matrices pred, lo, up give + the predicted value, and lower and upper confidence limits (from split + conformal inference), respectively, for the response at the n0 points + given in x0. The rows of fit give the fitted values for the n points given + in x. Finally, split contains the indices used for the first half of the + data-split. +} +\description{ +Split conformal prediction intervals for right-censored data. +} +\details{ +Compute prediction intervals for predictions of the restricted time-to-event +using IPCW split conformal inference. +} +\references{ +"Distribution-Free Predictive Inference for Regression" by Lei, + G'Sell, Rinaldo, Tibshirani, Wasserman (2018). See also "A Comprehensive + Framework for Evaluating Time to Event Predictions using the Restricted + Mean Survival Time" by Cwiling, Perduca, Bouaziz (2023) for the extension + to right-censored data. +} +\seealso{ +\code{\link{conformal.pred}}, + \code{\link{conformal.pred.split}}, \code{\link{conformal.pred.roo.surv}} +} diff --git a/conformalInference/man/conformalInference-package.Rd b/conformalInference/man/conformalInference-package.Rd index 6c5a029..1379289 100644 --- a/conformalInference/man/conformalInference-package.Rd +++ b/conformalInference/man/conformalInference-package.Rd @@ -19,3 +19,19 @@ Conformal inference is a framework for converting any pre-chosen estimator of \code{\link{conformal.pred.split}} (wider intervals, but much more efficient). } +\author{ +\strong{Maintainer}: Ryan Tibshirani \email{ryantibs@cmu.edu} + +Authors: +\itemize{ + \item Jacopo Diquigiovanni + \item Matteo Fontana + \item Paolo Vergottini +} + +Other contributors: +\itemize{ + \item Aldo Solari [contributor] +} + +} diff --git a/conformalInference/man/interval.build.Rd b/conformalInference/man/interval.build.Rd new file mode 100644 index 0000000..9dbae7d --- /dev/null +++ b/conformalInference/man/interval.build.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/common.R +\name{interval.build} +\alias{interval.build} +\title{Helper function to join each B prediction intervals in Multi Split +For each point in x0, it combines the simulated B intervals into one.} +\usage{ +interval.build(yyy, B, tr) +} +\arguments{ +\item{yyy}{column vector of B lower bounds and B upper bounds} + +\item{B}{number of replications} + +\item{tr}{truncation threshold for the algorithm} +} +\description{ +Helper function to join each B prediction intervals in Multi Split +For each point in x0, it combines the simulated B intervals into one. +} diff --git a/conformalInference/man/ipcw.Rd b/conformalInference/man/ipcw.Rd new file mode 100644 index 0000000..6dc37f7 --- /dev/null +++ b/conformalInference/man/ipcw.Rd @@ -0,0 +1,31 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ipcw.R +\name{ipcw} +\alias{ipcw} +\title{Computation of Inverse Probability Censoring Weights. The censoring survival +function can either be estimated with Kaplan-Meier, Cox or Random Survival +Forests.} +\usage{ +ipcw(t, d, x, tau, cens.model = "km") +} +\arguments{ +\item{t}{Vector of responses (observed times), of length (say) n.} + +\item{d}{Vector of responses (censoring indicator), of length (say) n.} + +\item{x}{Matrix of variables, of dimension (say) n x p.} + +\item{tau}{Horizon of time.} + +\item{cens.model}{Model used to estimate the censoring survival function. +This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +Random Survival Forests or Cox). Default is "km".} +} +\value{ +A vector of length n containing the censoring weights. +} +\description{ +Computation of Inverse Probability Censoring Weights. The censoring survival +function can either be estimated with Kaplan-Meier, Cox or Random Survival +Forests. +} diff --git a/conformalInference/man/loco.roo.surv.Rd b/conformalInference/man/loco.roo.surv.Rd new file mode 100644 index 0000000..2baf30b --- /dev/null +++ b/conformalInference/man/loco.roo.surv.Rd @@ -0,0 +1,123 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/loco.roo.R +\name{loco.roo.surv} +\alias{loco.roo.surv} +\title{Extension to right-censored data.} +\usage{ +loco.roo.surv( + x, + t, + d, + tau, + train.fun, + predict.fun, + w = NULL, + cens.model = "km", + vars = 0, + alpha = 0.1, + mad.train.fun = NULL, + mad.predict.fun = NULL, + split = NULL, + seed = NULL, + out.roo.surv = NULL, + verbose = FALSE +) +} +\arguments{ +\item{x}{Matrix of variables, of dimension (say) n x p.} + +\item{t}{Vector of responses (observed times), of length (say) n.} + +\item{d}{Vector of responses (censoring indicator), of length (say) n.} + +\item{tau}{Horizon of time.} + +\item{train.fun}{A function to perform model training, i.e., to produce an +estimator of E(min(T*,tau)|X), the conditional expectation of the true +event time T* given features X. Its input arguments should be x: matrix of +features, t: vector of observed times, d: vector of censoring indicators +and tau: horizon of time. train.fun can be a function performing model +training for several (say m) regression models.} + +\item{predict.fun}{A function to perform prediction for the (mean of the) +responses at new feature values. Its input arguments should be out: output +produced by train.fun, and newx: feature values at which we want to make +predictions.} + +\item{w}{Censoring weights. This should be a vector of length n. Default is +NULL, in which case censoring weights are computed using the censoring +model specified by the parameter cens.model, or by default with the +Kaplan-Meier model.} + +\item{cens.model}{Model used to estimate the censoring survival function. +This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +Random Survival Forests or Cox). Default is "km".} + +\item{vars}{A list specifying the variables (indices between 1 and p) +for which variable importance should be investigated. Alternatively, if +set equal to 0, the default, then all variables are investigated.} + +\item{alpha}{Miscoverage level for the prediction intervals, i.e., intervals +with coverage 1-alpha are formed. Default for alpha is 0.1.} + +\item{mad.train.fun}{A function to perform training on the observed absolute +residuals R = |min(T,tau) - m(X)| and their associated censoring weights, +where m denotes the estimator produced by train.fun, to estimate E(R*|X) +for the true absolute residual denoted R*. +This is used to scale the conformal score, to produce a prediction interval +with varying local width. The input arguments to mad.train.fun should be +x: matrix of features, y: vector of observed absolute residuals, and w: +censoring weights. The default for mad.train.fun is NULL, which means that +no training is done on the absolute residuals, and the usual (unscaled) +conformal score is used. Note that if mad.train.fun is non-NULL, then so +must be mad.predict.fun (see next).} + +\item{mad.predict.fun}{A function to perform prediction for the (mean of the) +absolute residuals at new feature values. Its input arguments should be +out: output produced by mad.train.fun, and newx: feature values at which we +want to make predictions. The default for mad.predict.fun is NULL, which +means that no local scaling is done for the conformal score, i.e., the +usual (unscaled) conformal score is used.} + +\item{split}{Indices that define the data-split to be used (i.e., the indices +define the first half of the data-split). Note that this split is common +both to conformal.pred.roo.surv (whether already run, or to be run inter- +nally, see below) and the excess error intervals computed by this function. +Default is NULL, in which case the split is chosen randomly.} + +\item{seed}{Integer to be passed to set.seed before defining the random +data-split to be used. Default is NULL, which effectively sets no seed. +If both split and seed are passed, the former takes priority and the latter +is ignored.} + +\item{out.roo.surv}{Output from running conformal.pred.roo.surv on the given +data set; default is NULL, which means that conformal.pred.roo.surv will be +run internally in order to compute in-sample prediction intervals. If +is NULL, then the data-split common to conformal.pred.roo.surv and this +out.roo.surv function will be determined by the split or seed arguments. If +non-NULL, then the common data-split will be determined by that recorded in +out.roo.surv, and the split and seed arguments will be (silently) ignored.} + +\item{verbose}{Should intermediate progress be printed out? Default is FALSE.} +} +\value{ +A list with the following components: lo, up, vars, split, + out.roo. The third component is a list of variables that were tested (i.e., + dropped one at a time, to compute excess error). The first two are arrays + The indices used for the half of the data-split are + returned in split. Finally, for convenience, the output from running + conformal.pred.roo.surv is stored in out.roo. +} +\description{ +Compute prediction intervals for the excess test error due to dropping a + variable, measured in-sample and having asymptotically valid in-sample + coverage. Extension to estimators of the restricted mean survival time with + right-censored data. +} +\references{ +"Distribution-Free Predictive Inference for Regression" by Lei, + G'Sell, Rinaldo, Tibshirani, Wasserman (2018). See also "A Comprehensive + Framework for Evaluating Time to Event Predictions using the Restricted + Mean Survival Time" by Cwiling, Perduca, Bouaziz (2023) for the extension + to right-censored data. +} diff --git a/conformalInference/man/loco.surv.Rd b/conformalInference/man/loco.surv.Rd new file mode 100644 index 0000000..af896ce --- /dev/null +++ b/conformalInference/man/loco.surv.Rd @@ -0,0 +1,108 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/loco.R +\name{loco.surv} +\alias{loco.surv} +\title{Extension to right-censored data.} +\usage{ +loco.surv( + x, + t, + d, + tau, + train.fun, + predict.fun, + w = NULL, + active.fun = NULL, + vars = 0, + alpha = 0.1, + rho = 0.5, + bonf.correct = FALSE, + split = NULL, + seed = NULL, + verbose = FALSE +) +} +\arguments{ +\item{x}{Matrix of features, of dimension (say) n x p.} + +\item{t}{Vector of responses (observed times), of length (say) n.} + +\item{d}{Vector of responses (censoring indicator), of length (say) n.} + +\item{tau}{Horizon of time.} + +\item{train.fun}{A function to perform model training, i.e., to produce an +estimator of E(min(T*,tau)|X), the conditional expectation of the true +event time T* given features X. Its input arguments should be x: matrix of +features, t: vector of observed times, d: vector of censoring indicators +and tau: horizon of time. train.fun can be a function performing model +training for several (say m) regression models.} + +\item{predict.fun}{A function to perform prediction for the (mean of the) +responses at new feature values. Its input arguments should be out: output +produced by train.fun, and newx: feature values at which we want to make +predictions.} + +\item{w}{Censoring weights. This should be a vector of length n. +Default is NULL, in which case censoring weights are computed using the +Kaplan-Meier model.} + +\item{active.fun}{A function which takes the output of train.fun, and reports +which features are active for each fitted model contained in this output. +Its only input argument should be out: output produced by train.fun.} + +\item{vars}{A list specifying the variables (indices between 1 and p) +for which variable importance should be investigated. Alternatively, if +set equal to 0, the default, then all variables are investigated. If both +vars and active.fun are passed, the latter takes priority and the former +is ignored.} + +\item{alpha}{Miscoverage level for the confidence intervals, i.e., intervals +with coverage 1-alpha are formed. Default for alpha is 0.1.} + +\item{bonf.correct}{Should a Bonferroni correction be applied to the p-values +and confidence intervals? Default is FALSE.} + +\item{split}{Indices that define the data-split to be used (i.e., the indices +define the first half of the data-split, on which the model is trained). +Default is NULL, in which case the split is chosen randomly.} + +\item{seed}{Integer to be passed to set.seed before defining the random +data-split to be used. Default is NULL, which effectively sets no seed. +If both split and seed are passed, the former takes priority and the latter +is ignored.} + +\item{verbose}{Should intermediate progress be printed out? Default is FALSE.} +} +\value{ +A list with the following components: inf.sign, active, master, + bonf.correct. The first is a list, containing the results of LOCO inference + with the sign text adapted to right-censored data. This list has one + element per regression model the training and prediction functions, + train.fun and predict.fun. The inherent to second returned component active + is a list, with one element per tuning step, that reports which features + are active (or at least investigated) in the corresponding fitted model. + The third returned component master collects all active (or investigated) + features across all regression models, for easy reference. The last + component signals whether a Bonferroni correction has been applied. +} +\description{ +Variable importance via median excess test error +} +\details{ +Compute confidence intervals for median excess test error due to + dropping a variable. Extension to estimators of the restricted mean + survival time with right-censored data. + +The sign test adapted to right-censored data is asymptotically valid + if the Kaplan-Meier model is used to estimate the censoring survival + function in the censoring weights, under the assumption of independent + censoring. +} +\references{ +"Distribution-Free Predictive Inference for Regression" by Lei, + G'Sell, Rinaldo, Tibshirani, Wasserman (2018). See also "A Comprehensive + Framework for Evaluating Time to Event Predictions using the Restricted + Mean Survival Time" by Cwiling, Perduca, Bouaziz (2023) for the extension + to right-censored data. +} diff --git a/conformalInference/man/plot.rmst.pred.Rd b/conformalInference/man/plot.rmst.pred.Rd new file mode 100644 index 0000000..eb432b8 --- /dev/null +++ b/conformalInference/man/plot.rmst.pred.Rd @@ -0,0 +1,31 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/rmst.pred.R +\name{plot.rmst.pred} +\alias{plot.rmst.pred} +\title{Plot function for rmst.pred object.} +\usage{ +\method{plot}{rmst.pred}(x, elements = c("all"), model.names = NULL, varsL = 0, ...) +} +\arguments{ +\item{x}{The rmst.pred object.} + +\item{elements}{Selection among "mse", "range", "vimpL", "vimpG" or "all" +describing which elements of the analysis to show. If "mse" then the +results on the estimation of the mean squared error are displayed; if +"vimpL" then results of local variable importance are displayed; if "vimpG" +then results of global variable importance are displayed. If "all" then the +results from all elements are displayed. Default is "all".} + +\item{model.names}{Names given to the different learning models given to +train.fun. Default is NULL.} + +\item{varsL}{A list specifying the variables (indices between 1 and p) +for which local variable importance should be plotted. Alternatively, if +set equal to 0, the default, then local variable importance is plotted for +all variables.} + +\item{...}{Other arguments (currently not used).} +} +\description{ +Plot function for rmst.pred object. +} diff --git a/conformalInference/man/print.loco.surv.Rd b/conformalInference/man/print.loco.surv.Rd new file mode 100644 index 0000000..4265c6d --- /dev/null +++ b/conformalInference/man/print.loco.surv.Rd @@ -0,0 +1,18 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/loco.R +\name{print.loco.surv} +\alias{print.loco.surv} +\title{Print function for loco.surv object.} +\usage{ +\method{print}{loco.surv}(x, digits = 3, ...) +} +\arguments{ +\item{x}{The loco.surv object.} + +\item{digits}{Number of digits to display. Default is 3.} + +\item{...}{Other arguments (currently not used).} +} +\description{ +Print function for loco.surv object. +} diff --git a/conformalInference/man/print.rmst.pred.Rd b/conformalInference/man/print.rmst.pred.Rd new file mode 100644 index 0000000..10afdf7 --- /dev/null +++ b/conformalInference/man/print.rmst.pred.Rd @@ -0,0 +1,38 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/rmst.pred.R +\name{print.rmst.pred} +\alias{print.rmst.pred} +\title{Print function for rmst.pred object.} +\usage{ +\method{print}{rmst.pred}( + x, + elements = c("all"), + digits = 3, + model.names = NULL, + var.names = NULL, + ... +) +} +\arguments{ +\item{x}{The rmst.pred object.} + +\item{elements}{Selection among "mse", "range", "vimp", or "all", describing +which elements of the analysis to show. If "mse", then the results on the +estimation of the mean squared error are displayed; if "range", then +information on the range of the prediction intervals are displayed; if +"vimp", then results of global variable importance are displayed. If +"all", then the results from all elements are displayed. Default is "all".} + +\item{digits}{Number of digits to display. Default is 3.} + +\item{model.names}{Names given to the different learning models given to +train.fun. Default is NULL.} + +\item{var.names}{Names given to the different variables used in the +regression. Default is NULL.} + +\item{...}{Other arguments (currently not used).} +} +\description{ +Print function for rmst.pred object. +} diff --git a/conformalInference/man/rmst.pred.Rd b/conformalInference/man/rmst.pred.Rd new file mode 100644 index 0000000..7015e23 --- /dev/null +++ b/conformalInference/man/rmst.pred.Rd @@ -0,0 +1,161 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/rmst.pred.R +\name{rmst.pred} +\alias{rmst.pred} +\title{Estimation of the restricted mean survival time, estimation of the mean +squared error, computation of prediction intervals and evaluation of (local +and global) variable importance.} +\usage{ +rmst.pred( + x, + t, + d, + tau, + train.fun, + predict.fun, + w = NULL, + cens.model = "km", + n.folds = 10, + active.fun = NULL, + alpha = 0.1, + rho = 0.5, + vars = 0, + bonf.correct = FALSE, + mad.train.fun = NULL, + mad.predict.fun = NULL, + split = NULL, + seed = NULL, + out.roo.surv = NULL, + verbose = FALSE, + error = T, + roo = T, + vimpL = T, + vimpG = T +) +} +\arguments{ +\item{x}{Matrix of variables, of dimension (say) n x p.} + +\item{t}{Vector of responses (observed times), of length (say) n.} + +\item{d}{Vector of responses (censoring indicator), of length (say) n.} + +\item{tau}{Horizon of time.} + +\item{train.fun}{A function to perform model training, i.e., to produce an +estimator of E(min(T*,tau)|X), the conditional expectation of the true +event time T* given features X. Its input arguments should be x: matrix of +features, t: vector of observed times, d: vector of censoring indicators +and tau: horizon of time. train.fun can be a function performing model +training for several (say m) learning models.} + +\item{predict.fun}{A function to perform prediction for the (mean of the) +responses at new feature values. Its input arguments should be out: output +produced by train.fun, and newx: feature values at which we want to make +predictions.} + +\item{w}{Censoring weights. This should be a vector of length n. Default is +NULL, in which case censoring weights are computed using the censoring +model specified by the parameter cens.model, or by default with the +Kaplan-Meier model.} + +\item{cens.model}{Model used to estimate the censoring survival function. +This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +Random Survival Forests or Cox). Default is "km".} + +\item{n.folds}{The number of folds for the cross-validated estimation of the +mean squared error. If n.folds = 1 then the whole data set is used both to +train the estimator and to compute the mean squared error. The default +number is 10 folds.} + +\item{active.fun}{A function which takes the output of train.fun, and reports +which features are active for each fitted model contained in this output. +Its only input argument should be out: output produced by train.fun.} + +\item{alpha}{Miscoverage level for the prediction intervals, i.e., intervals +with coverage 1-alpha are formed. Default for alpha is 0.1.} + +\item{vars}{A list specifying the variables (indices between 1 and p) +for which variable importance should be investigated. Alternatively, if +set equal to 0, the default, then all variables are investigated.} + +\item{bonf.correct}{Should a Bonferroni correction be applied to the p-values +and confidence intervals? Default is FALSE.} + +\item{mad.train.fun}{A function to perform training on the observed absolute +residuals R = |min(T,tau) - m(X)| and their associated censoring weights, +where m denotes the estimator produced by train.fun, to estimate E(R*|X) +for the true absolute residual denoted R*. +This is used to scale the conformal score, to produce a prediction interval +with varying local width. The input arguments to mad.train.fun should be +x: matrix of features, y: vector of observed absolute residuals, and w: +censoring weights. The default for mad.train.fun is NULL, which means that +no training is done on the absolute residuals, and the usual (unscaled) +conformal score is used. Note that if mad.train.fun is non-NULL, then so +must be mad.predict.fun (see next).} + +\item{mad.predict.fun}{A function to perform prediction for the (mean of the) +absolute residuals at new feature values. Its input arguments should be +out: output produced by mad.train.fun, and newx: feature values at which we +want to make predictions. The default for mad.predict.fun is NULL, which +means that no local scaling is done for the conformal score, i.e., the +usual (unscaled) conformal score is used.} + +\item{split}{Indices that define the data-split to be used (i.e., the indices +define the first half of the data-split). Note that this split is common +to conformal.pred.roo.surv (whether already run, or to be run inter- +nally, see below), loco.roo.surv and loco.surv. +Default is NULL, in which case the split is chosen randomly.} + +\item{seed}{Integer to be passed to set.seed. Default is NULL, which +effectively sets no seed.} + +\item{out.roo.surv}{Output from running conformal.pred.roo.surv on the given +data set; default is NULL, which means that conformal.pred.roo.surv will be +run internally in order to compute in-sample prediction intervals. If +is NULL, then the data-split common to conformal.pred.roo.surv and this +out.roo.surv function will be determined by the split or seed arguments. If +non-NULL, then the common data-split will be determined by that recorded in +out.roo.surv, and the split argument will be (silently) ignored.} + +\item{verbose}{Should intermediate progress be printed out? Default is FALSE.} + +\item{error}{Boolean indicating whether or not to estimate the mean squared +error. Default is TRUE.} + +\item{roo}{Boolean indicating whether or not to compute in-sample rank-one- +out prediction intervals. Default is TRUE.} + +\item{vimpL}{Boolean indicating whether or not to compute local variable +importance. Default is TRUE.} + +\item{vimpG}{Boolean indicating whether or not to compute global variable +importance. Default is TRUE.} +} +\value{ +A list with the following components: x, split, mse, out.roo.surv, + out.loco.roo.surv, out.loco.surv. The matrix of variables x is returned in + x. The indices used for the half of the data-split are returned in split. + mse is a matrix of dimension n.folds x m containing the estimation of the + mean squared error using censoring weights on each fold and for each + learning model. The last three components are the outputs of respectively + roo.surv, loco.roo.surv and loco.surv. +} +\description{ +The bias of computing residuals on observed censored times is corrected by +using censoring weights. Convergence guarantees for global variable +importance currently hold only if the Kaplan-Meier estimator is used to +compute censoring weights. +} +\details{ +Analysis framework of one or more restricted mean survival time + estimation model(s). Details are given in the descriptions of functions + roo.surv, loco.roo.surv and loco.surv. +} +\references{ +See "Distribution-Free Predictive Inference for Regression" by + Lei, G'Sell, Rinaldo, Tibshirani, Wasserman (2018) as a reference for + conformal prediction. See "A Comprehensive Framework for Evaluating Time to + Event Predictions using the Restricted Mean Survival Time" by Cwiling, + Perduca, Bouaziz (2023) for the extension to right-censored data. +} From b699baaa475048e5269474da33de8033834e978c Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:44:39 +0200 Subject: [PATCH 10/57] Description modifications --- conformalInference/R/ipcw.R | 2 ++ conformalInference/R/loco.R | 5 ++--- conformalInference/R/loco.roo.R | 2 +- conformalInference/R/rmst.pred.R | 19 ++++++++++--------- conformalInference/R/roo.R | 10 ++++------ conformalInference/R/split.R | 6 ++---- cwiling2023/fig.loco.surv.R | 29 +++++++---------------------- cwiling2023/fig/split_all.pdf | Bin 0 -> 7173 bytes 8 files changed, 28 insertions(+), 45 deletions(-) create mode 100644 cwiling2023/fig/split_all.pdf diff --git a/conformalInference/R/ipcw.R b/conformalInference/R/ipcw.R index 6921bb0..e5df875 100644 --- a/conformalInference/R/ipcw.R +++ b/conformalInference/R/ipcw.R @@ -1,3 +1,5 @@ +#' Inverse Probability Censoring Weights. +#' #' Computation of Inverse Probability Censoring Weights. The censoring survival #' function can either be estimated with Kaplan-Meier, Cox or Random Survival #' Forests. diff --git a/conformalInference/R/loco.R b/conformalInference/R/loco.R index 916753e..dc72fcf 100644 --- a/conformalInference/R/loco.R +++ b/conformalInference/R/loco.R @@ -308,9 +308,8 @@ get.signif.code = function(v) { ############################################################################### -#' Extension to right-censored data. -#' -#' Variable importance via median excess test error +#' Variable importance via median excess test error extended to right-censored +#' data #' #' Compute confidence intervals for median excess test error due to #' dropping a variable. Extension to estimators of the restricted mean diff --git a/conformalInference/R/loco.roo.R b/conformalInference/R/loco.roo.R index e0966b8..525a94a 100644 --- a/conformalInference/R/loco.roo.R +++ b/conformalInference/R/loco.roo.R @@ -196,7 +196,7 @@ conformal.diff.int = function(mu1, mu2, lo, up) { ############################################################################### -#' Extension to right-censored data. +#' Variable importance via excess test error extended to right-censored data. #' #' Compute prediction intervals for the excess test error due to dropping a #' variable, measured in-sample and having asymptotically valid in-sample diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 06bbded..bc97587 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -1,11 +1,9 @@ -#' Estimation of the restricted mean survival time, estimation of the mean -#' squared error, computation of prediction intervals and evaluation of (local -#' and global) variable importance. -#' -#' The bias of computing residuals on observed censored times is corrected by -#' using censoring weights. Convergence guarantees for global variable -#' importance currently hold only if the Kaplan-Meier estimator is used to -#' compute censoring weights. +#' Training Evaluating Time to +#' Event Predictions using the Restricted Mean Survival Time +#' +#' Evaluation of a learning algorithm for the restricted mean survival time. +#' Estimation of its mean squared error, computation of prediction intervals and +#' evaluation of (local and global) variable importance. #' #' @param x Matrix of variables, of dimension (say) n x p. #' @param t Vector of responses (observed times), of length (say) n. @@ -93,7 +91,10 @@ #' #' @details Analysis framework of one or more restricted mean survival time #' estimation model(s). Details are given in the descriptions of functions -#' roo.surv, loco.roo.surv and loco.surv. +#' roo.surv, loco.roo.surv and loco.surv. The bias of computing residuals on +#' observed censored times is corrected by using censoring weights. +#' Convergence guarantees for global variable importance currently hold only +#' if the Kaplan-Meier estimator is used to compute censoring weights. #' #' @references See "Distribution-Free Predictive Inference for Regression" by #' Lei, G'Sell, Rinaldo, Tibshirani, Wasserman (2018) as a reference for diff --git a/conformalInference/R/roo.R b/conformalInference/R/roo.R index de47644..05808ae 100644 --- a/conformalInference/R/roo.R +++ b/conformalInference/R/roo.R @@ -179,13 +179,11 @@ conformal.pred.roo = function(x, y, train.fun, predict.fun, alpha=0.1, ############################################################################### -#' Extension to right-censored data. -#' -#' In-sample IPCW split conformal prediction intervals. +#' In-sample split conformal prediction intervals for right-censored data. #' -#' Compute prediction intervals for predictions of the restricted time-to-event, -#' having asymptotically valid in-sample coverage, using rank-one-out (ROO) -#' split conformal inference. +#' Compute prediction intervals for for restricted time-to-events based on right- +#' censored data, having asymptotically valid in-sample coverage, using rank- +#' one-out (ROO) split conformal inference. #' #' @param x Matrix of features, of dimension (say) n x p. #' @param t Vector of responses (observed times), of length (say) n. diff --git a/conformalInference/R/split.R b/conformalInference/R/split.R index ca54e14..6cf8f23 100644 --- a/conformalInference/R/split.R +++ b/conformalInference/R/split.R @@ -165,12 +165,10 @@ conformal.pred.split = function(x, y, x0, train.fun, predict.fun, alpha=0.1, ############################################################################### -#' Extension to right-censored data. -#' #' Split conformal prediction intervals for right-censored data. #' -#' Compute prediction intervals for predictions of the restricted time-to-event -#' using IPCW split conformal inference. +#' Compute prediction intervals for restricted time-to-events based on right- +#' censored data using IPCW split conformal inference. #' #' @param x Matrix of features, of dimension (say) n x p. #' @param t Vector of responses (observed times), of length (say) n. diff --git a/cwiling2023/fig.loco.surv.R b/cwiling2023/fig.loco.surv.R index 6076937..974d95d 100644 --- a/cwiling2023/fig.loco.surv.R +++ b/cwiling2023/fig.loco.surv.R @@ -2,7 +2,9 @@ # LIBRARIES # ############# -setwd("~/GitHub/RMST_predictor") +library(devtools) +install_github(repo="ariane-cwi/conformal", subdir="conformalInference") + libraries_sources = function(){ library(survival) library(FastPseudo) @@ -13,22 +15,14 @@ libraries_sources = function(){ library(gridExtra) library(haven) library(devtools) - library(MIMICbook) library(knitr) library(Hmisc) library(parallel) - source("RMSTpredictor/IPCW.R") - source("RMSTpredictor/check.surv.R") - source("RMSTpredictor/split.surv.R") - source("RMSTpredictor/roo.surv.R") - source("RMSTpredictor/loco.roo.surv.R") - source("RMSTpredictor/loco.surv.R") - source("RMSTpredictor/rmst.pred.R") - source("RMSTpredictor/glmnet.surv.R") - source("RMSTpredictor/common.R") + library(conformalInference) } libraries_sources() +setwd("~/GitHub/conformal/cwiling2023") ######################## # SIMULATION FUNCTIONS # @@ -195,18 +189,9 @@ parallelisation_init = function(){ library(gridExtra) library(haven) library(devtools) - library(MIMICbook) library(knitr) library(Hmisc) - source("~/A Thèse/Code/IPCW.R") - source("~/GitHub/RMST_predictor/RMSTpredictor/check.surv.R") - source("~/GitHub/RMST_predictor/RMSTpredictor/split.surv.R") - source("~/GitHub/RMST_predictor/RMSTpredictor/roo.surv.R") - source("~/GitHub/RMST_predictor/RMSTpredictor/loco.roo.surv.R") - source("~/GitHub/RMST_predictor/RMSTpredictor/loco.surv.R") - source("~/GitHub/RMST_predictor/RMSTpredictor/rmst.pred.R") - source("~/GitHub/RMST_predictor/RMSTpredictor/glmnet.surv.R") - source("~/GitHub/RMST_predictor/RMSTpredictor/common.R") + library(conformalInference) })) clusterExport(cl=cl,c("simulate.A","simulate.B","simulate.C", "integral","train.fun","predict.fun")) @@ -220,7 +205,7 @@ parallelisation_init = function(){ mse = function(n,n0,models,cens.model="km"){ # Data simulation df = simulate(n+n0) - df$w = IPCW(df$tobs,df$delta,df$x,tau,cens.model) + df$w = ipcw(df$tobs,df$delta,df$x,tau,cens.model) #Training set i1 = sample(1:(n+n0),n,replace=F) df1 = list(t=df$t[i1],c=df$c[i1],tobs=df$tobs[i1],delta=df$delta[i1], diff --git a/cwiling2023/fig/split_all.pdf b/cwiling2023/fig/split_all.pdf new file mode 100644 index 0000000000000000000000000000000000000000..62b2398b7672dc68281e17fe16836eb0ec817311 GIT binary patch literal 7173 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 N0RStjyoLhce*h8_(_sJr literal 0 HcmV?d00001 From fba01a8c4e5205ce12a13468f0885cd5ac6f630c Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:46:04 +0200 Subject: [PATCH 11/57] Namespace update --- .../man/conformal.pred.roo.surv.Rd | 11 ++++----- .../man/conformal.pred.split.surv.Rd | 9 +++---- conformalInference/man/ipcw.Rd | 4 +--- conformalInference/man/loco.roo.surv.Rd | 2 +- conformalInference/man/loco.surv.Rd | 9 ++++--- conformalInference/man/rmst.pred.Rd | 24 ++++++++++++------- 6 files changed, 29 insertions(+), 30 deletions(-) diff --git a/conformalInference/man/conformal.pred.roo.surv.Rd b/conformalInference/man/conformal.pred.roo.surv.Rd index 38ed880..c0f8be8 100644 --- a/conformalInference/man/conformal.pred.roo.surv.Rd +++ b/conformalInference/man/conformal.pred.roo.surv.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/roo.R \name{conformal.pred.roo.surv} \alias{conformal.pred.roo.surv} -\title{Extension to right-censored data.} +\title{In-sample split conformal prediction intervals for right-censored data.} \usage{ conformal.pred.roo.surv( x, @@ -100,12 +100,9 @@ A list with the following components: pred, lo, up, fit, split, fit.all is an n x m matrix whose rows store the fitted values from out.all. } \description{ -In-sample IPCW split conformal prediction intervals. -} -\details{ -Compute prediction intervals for predictions of the restricted time-to-event, -having asymptotically valid in-sample coverage, using rank-one-out (ROO) -split conformal inference. +Compute prediction intervals for for restricted time-to-events based on right- +censored data, having asymptotically valid in-sample coverage, using rank- +one-out (ROO) split conformal inference. } \references{ "Distribution-Free Predictive Inference for Regression" by Lei, diff --git a/conformalInference/man/conformal.pred.split.surv.Rd b/conformalInference/man/conformal.pred.split.surv.Rd index a4c0a37..5208b41 100644 --- a/conformalInference/man/conformal.pred.split.surv.Rd +++ b/conformalInference/man/conformal.pred.split.surv.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/split.R \name{conformal.pred.split.surv} \alias{conformal.pred.split.surv} -\title{Extension to right-censored data.} +\title{Split conformal prediction intervals for right-censored data.} \usage{ conformal.pred.split.surv( x, @@ -106,11 +106,8 @@ A list with the following components: pred, lo, up, fit, split. pred data-split. } \description{ -Split conformal prediction intervals for right-censored data. -} -\details{ -Compute prediction intervals for predictions of the restricted time-to-event -using IPCW split conformal inference. +Compute prediction intervals for restricted time-to-events based on right- +censored data using IPCW split conformal inference. } \references{ "Distribution-Free Predictive Inference for Regression" by Lei, diff --git a/conformalInference/man/ipcw.Rd b/conformalInference/man/ipcw.Rd index 6dc37f7..84a7de5 100644 --- a/conformalInference/man/ipcw.Rd +++ b/conformalInference/man/ipcw.Rd @@ -2,9 +2,7 @@ % Please edit documentation in R/ipcw.R \name{ipcw} \alias{ipcw} -\title{Computation of Inverse Probability Censoring Weights. The censoring survival -function can either be estimated with Kaplan-Meier, Cox or Random Survival -Forests.} +\title{Inverse Probability Censoring Weights.} \usage{ ipcw(t, d, x, tau, cens.model = "km") } diff --git a/conformalInference/man/loco.roo.surv.Rd b/conformalInference/man/loco.roo.surv.Rd index 2baf30b..4932a7d 100644 --- a/conformalInference/man/loco.roo.surv.Rd +++ b/conformalInference/man/loco.roo.surv.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/loco.roo.R \name{loco.roo.surv} \alias{loco.roo.surv} -\title{Extension to right-censored data.} +\title{Variable importance via excess test error extended to right-censored data.} \usage{ loco.roo.surv( x, diff --git a/conformalInference/man/loco.surv.Rd b/conformalInference/man/loco.surv.Rd index af896ce..09d105d 100644 --- a/conformalInference/man/loco.surv.Rd +++ b/conformalInference/man/loco.surv.Rd @@ -2,7 +2,8 @@ % Please edit documentation in R/loco.R \name{loco.surv} \alias{loco.surv} -\title{Extension to right-censored data.} +\title{Variable importance via median excess test error extended to right-censored +data} \usage{ loco.surv( x, @@ -87,13 +88,11 @@ A list with the following components: inf.sign, active, master, component signals whether a Bonferroni correction has been applied. } \description{ -Variable importance via median excess test error -} -\details{ Compute confidence intervals for median excess test error due to dropping a variable. Extension to estimators of the restricted mean survival time with right-censored data. - +} +\details{ The sign test adapted to right-censored data is asymptotically valid if the Kaplan-Meier model is used to estimate the censoring survival function in the censoring weights, under the assumption of independent diff --git a/conformalInference/man/rmst.pred.Rd b/conformalInference/man/rmst.pred.Rd index 7015e23..c16951f 100644 --- a/conformalInference/man/rmst.pred.Rd +++ b/conformalInference/man/rmst.pred.Rd @@ -2,9 +2,12 @@ % Please edit documentation in R/rmst.pred.R \name{rmst.pred} \alias{rmst.pred} -\title{Estimation of the restricted mean survival time, estimation of the mean -squared error, computation of prediction intervals and evaluation of (local -and global) variable importance.} +\title{Training Evaluating Time to + Event Predictions using the Restricted Mean Survival Time + +Evaluation of a learning algorithm for the restricted mean survival time. +Estimation of its mean squared error, computation of prediction intervals and +evaluation of (local and global) variable importance.} \usage{ rmst.pred( x, @@ -142,15 +145,20 @@ A list with the following components: x, split, mse, out.roo.surv, roo.surv, loco.roo.surv and loco.surv. } \description{ -The bias of computing residuals on observed censored times is corrected by -using censoring weights. Convergence guarantees for global variable -importance currently hold only if the Kaplan-Meier estimator is used to -compute censoring weights. +Training Evaluating Time to + Event Predictions using the Restricted Mean Survival Time + +Evaluation of a learning algorithm for the restricted mean survival time. +Estimation of its mean squared error, computation of prediction intervals and +evaluation of (local and global) variable importance. } \details{ Analysis framework of one or more restricted mean survival time estimation model(s). Details are given in the descriptions of functions - roo.surv, loco.roo.surv and loco.surv. + roo.surv, loco.roo.surv and loco.surv. The bias of computing residuals on + observed censored times is corrected by using censoring weights. + Convergence guarantees for global variable importance currently hold only + if the Kaplan-Meier estimator is used to compute censoring weights. } \references{ See "Distribution-Free Predictive Inference for Regression" by From 31220cf793cf8a9fd8b894dc94f6c8190f775984 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:53:03 +0200 Subject: [PATCH 12/57] Update rmst.pred.R --- conformalInference/R/rmst.pred.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index bc97587..f3d2539 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -1,5 +1,5 @@ -#' Training Evaluating Time to -#' Event Predictions using the Restricted Mean Survival Time +#' Training Evaluating Time to Event Predictions using the Restricted Mean +#' Survival Time #' #' Evaluation of a learning algorithm for the restricted mean survival time. #' Estimation of its mean squared error, computation of prediction intervals and From 85fe8f4c7dec8470a9bdd53736b726b8cbc951e8 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:54:00 +0200 Subject: [PATCH 13/57] Update rmst.pred.Rd --- conformalInference/man/rmst.pred.Rd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/conformalInference/man/rmst.pred.Rd b/conformalInference/man/rmst.pred.Rd index c16951f..0c69912 100644 --- a/conformalInference/man/rmst.pred.Rd +++ b/conformalInference/man/rmst.pred.Rd @@ -2,8 +2,8 @@ % Please edit documentation in R/rmst.pred.R \name{rmst.pred} \alias{rmst.pred} -\title{Training Evaluating Time to - Event Predictions using the Restricted Mean Survival Time +\title{Training Evaluating Time to Event Predictions using the Restricted Mean +Survival Time Evaluation of a learning algorithm for the restricted mean survival time. Estimation of its mean squared error, computation of prediction intervals and @@ -145,8 +145,8 @@ A list with the following components: x, split, mse, out.roo.surv, roo.surv, loco.roo.surv and loco.surv. } \description{ -Training Evaluating Time to - Event Predictions using the Restricted Mean Survival Time +Training Evaluating Time to Event Predictions using the Restricted Mean +Survival Time Evaluation of a learning algorithm for the restricted mean survival time. Estimation of its mean squared error, computation of prediction intervals and From f62e90e342a53276965aa4fc3a11dae8d2d8df3d Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:58:58 +0200 Subject: [PATCH 14/57] Description updates --- conformalInference/R/ipcw.R | 2 +- conformalInference/R/loco.roo.R | 2 +- conformalInference/R/rmst.pred.R | 3 +-- conformalInference/man/ipcw.Rd | 2 +- conformalInference/man/loco.roo.surv.Rd | 2 +- conformalInference/man/rmst.pred.Rd | 6 ++---- 6 files changed, 7 insertions(+), 10 deletions(-) diff --git a/conformalInference/R/ipcw.R b/conformalInference/R/ipcw.R index e5df875..94fa0e3 100644 --- a/conformalInference/R/ipcw.R +++ b/conformalInference/R/ipcw.R @@ -1,4 +1,4 @@ -#' Inverse Probability Censoring Weights. +#' Inverse Probability Censoring Weights #' #' Computation of Inverse Probability Censoring Weights. The censoring survival #' function can either be estimated with Kaplan-Meier, Cox or Random Survival diff --git a/conformalInference/R/loco.roo.R b/conformalInference/R/loco.roo.R index 525a94a..2bf8f9b 100644 --- a/conformalInference/R/loco.roo.R +++ b/conformalInference/R/loco.roo.R @@ -196,7 +196,7 @@ conformal.diff.int = function(mu1, mu2, lo, up) { ############################################################################### -#' Variable importance via excess test error extended to right-censored data. +#' Variable importance via excess test error extended to right-censored data #' #' Compute prediction intervals for the excess test error due to dropping a #' variable, measured in-sample and having asymptotically valid in-sample diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index f3d2539..8f528b9 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -1,5 +1,4 @@ -#' Training Evaluating Time to Event Predictions using the Restricted Mean -#' Survival Time +#' Evaluating predictions of a Restricted Mean Survival Time estimator #' #' Evaluation of a learning algorithm for the restricted mean survival time. #' Estimation of its mean squared error, computation of prediction intervals and diff --git a/conformalInference/man/ipcw.Rd b/conformalInference/man/ipcw.Rd index 84a7de5..71efb54 100644 --- a/conformalInference/man/ipcw.Rd +++ b/conformalInference/man/ipcw.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/ipcw.R \name{ipcw} \alias{ipcw} -\title{Inverse Probability Censoring Weights.} +\title{Inverse Probability Censoring Weights} \usage{ ipcw(t, d, x, tau, cens.model = "km") } diff --git a/conformalInference/man/loco.roo.surv.Rd b/conformalInference/man/loco.roo.surv.Rd index 4932a7d..678dd03 100644 --- a/conformalInference/man/loco.roo.surv.Rd +++ b/conformalInference/man/loco.roo.surv.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/loco.roo.R \name{loco.roo.surv} \alias{loco.roo.surv} -\title{Variable importance via excess test error extended to right-censored data.} +\title{Variable importance via excess test error extended to right-censored data} \usage{ loco.roo.surv( x, diff --git a/conformalInference/man/rmst.pred.Rd b/conformalInference/man/rmst.pred.Rd index 0c69912..93e6794 100644 --- a/conformalInference/man/rmst.pred.Rd +++ b/conformalInference/man/rmst.pred.Rd @@ -2,8 +2,7 @@ % Please edit documentation in R/rmst.pred.R \name{rmst.pred} \alias{rmst.pred} -\title{Training Evaluating Time to Event Predictions using the Restricted Mean -Survival Time +\title{Evaluating predictions of a Restricted Mean Survival Time estimator Evaluation of a learning algorithm for the restricted mean survival time. Estimation of its mean squared error, computation of prediction intervals and @@ -145,8 +144,7 @@ A list with the following components: x, split, mse, out.roo.surv, roo.surv, loco.roo.surv and loco.surv. } \description{ -Training Evaluating Time to Event Predictions using the Restricted Mean -Survival Time +Evaluating predictions of a Restricted Mean Survival Time estimator Evaluation of a learning algorithm for the restricted mean survival time. Estimation of its mean squared error, computation of prediction intervals and From e2ca674be9441bd3d12981f2596faf1c3196e55b Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:02:34 +0200 Subject: [PATCH 15/57] rmst.pred update --- conformalInference/R/rmst.pred.R | 6 +++--- conformalInference/man/rmst.pred.Rd | 12 +++--------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 8f528b9..6ba6dc1 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -1,8 +1,8 @@ #' Evaluating predictions of a Restricted Mean Survival Time estimator -#' +#' #' Evaluation of a learning algorithm for the restricted mean survival time. -#' Estimation of its mean squared error, computation of prediction intervals and -#' evaluation of (local and global) variable importance. +#' Estimation of its mean squared error, computation of prediction intervals, +#' and evaluation of (local and global) variable importance. #' #' @param x Matrix of variables, of dimension (say) n x p. #' @param t Vector of responses (observed times), of length (say) n. diff --git a/conformalInference/man/rmst.pred.Rd b/conformalInference/man/rmst.pred.Rd index 93e6794..d19e016 100644 --- a/conformalInference/man/rmst.pred.Rd +++ b/conformalInference/man/rmst.pred.Rd @@ -2,11 +2,7 @@ % Please edit documentation in R/rmst.pred.R \name{rmst.pred} \alias{rmst.pred} -\title{Evaluating predictions of a Restricted Mean Survival Time estimator - -Evaluation of a learning algorithm for the restricted mean survival time. -Estimation of its mean squared error, computation of prediction intervals and -evaluation of (local and global) variable importance.} +\title{Evaluating predictions of a Restricted Mean Survival Time estimator} \usage{ rmst.pred( x, @@ -144,11 +140,9 @@ A list with the following components: x, split, mse, out.roo.surv, roo.surv, loco.roo.surv and loco.surv. } \description{ -Evaluating predictions of a Restricted Mean Survival Time estimator - Evaluation of a learning algorithm for the restricted mean survival time. -Estimation of its mean squared error, computation of prediction intervals and -evaluation of (local and global) variable importance. +Estimation of its mean squared error, computation of prediction intervals, +and evaluation of (local and global) variable importance. } \details{ Analysis framework of one or more restricted mean survival time From e03c9a07eb23995612305139462aaf188d1628bd Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:06:28 +0200 Subject: [PATCH 16/57] rmst.pred updates --- conformalInference/R/rmst.pred.R | 3 +++ conformalInference/man/rmst.pred.Rd | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 6ba6dc1..2d3d883 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -94,6 +94,9 @@ #' observed censored times is corrected by using censoring weights. #' Convergence guarantees for global variable importance currently hold only #' if the Kaplan-Meier estimator is used to compute censoring weights. +#' +#' @seealso \code{\link{roo.surv}}, \code{\link{loco.roo.surv}}, +#' \code{\link{loco.surv}} #' #' @references See "Distribution-Free Predictive Inference for Regression" by #' Lei, G'Sell, Rinaldo, Tibshirani, Wasserman (2018) as a reference for diff --git a/conformalInference/man/rmst.pred.Rd b/conformalInference/man/rmst.pred.Rd index d19e016..1c7b4c1 100644 --- a/conformalInference/man/rmst.pred.Rd +++ b/conformalInference/man/rmst.pred.Rd @@ -159,3 +159,7 @@ See "Distribution-Free Predictive Inference for Regression" by Event Predictions using the Restricted Mean Survival Time" by Cwiling, Perduca, Bouaziz (2023) for the extension to right-censored data. } +\seealso{ +\code{\link{roo.surv}}, \code{\link{loco.roo.surv}}, + \code{\link{loco.surv}} +} From c567c5267e3cc9c683abafc2eda9121d57b00962 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:09:18 +0200 Subject: [PATCH 17/57] rmst.pred updates --- conformalInference/R/rmst.pred.R | 11 ++++++----- conformalInference/man/rmst.pred.Rd | 11 ++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 2d3d883..0c753d4 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -90,12 +90,13 @@ #' #' @details Analysis framework of one or more restricted mean survival time #' estimation model(s). Details are given in the descriptions of functions -#' roo.surv, loco.roo.surv and loco.surv. The bias of computing residuals on -#' observed censored times is corrected by using censoring weights. -#' Convergence guarantees for global variable importance currently hold only -#' if the Kaplan-Meier estimator is used to compute censoring weights. +#' conformal.pred.roo.surv, loco.roo.surv and loco.surv. The bias of +#' computing residuals on observed censored times is corrected by using +#' censoring weights. Convergence guarantees for global variable importance +#' currently hold only if the Kaplan-Meier estimator is used to compute +#' censoring weights. #' -#' @seealso \code{\link{roo.surv}}, \code{\link{loco.roo.surv}}, +#' @seealso \code{\link{conformal.pred.roo.surv}}, \code{\link{loco.roo.surv}}, #' \code{\link{loco.surv}} #' #' @references See "Distribution-Free Predictive Inference for Regression" by diff --git a/conformalInference/man/rmst.pred.Rd b/conformalInference/man/rmst.pred.Rd index 1c7b4c1..2d7008c 100644 --- a/conformalInference/man/rmst.pred.Rd +++ b/conformalInference/man/rmst.pred.Rd @@ -147,10 +147,11 @@ and evaluation of (local and global) variable importance. \details{ Analysis framework of one or more restricted mean survival time estimation model(s). Details are given in the descriptions of functions - roo.surv, loco.roo.surv and loco.surv. The bias of computing residuals on - observed censored times is corrected by using censoring weights. - Convergence guarantees for global variable importance currently hold only - if the Kaplan-Meier estimator is used to compute censoring weights. + conformal.pred.roo.surv, loco.roo.surv and loco.surv. The bias of + computing residuals on observed censored times is corrected by using + censoring weights. Convergence guarantees for global variable importance + currently hold only if the Kaplan-Meier estimator is used to compute + censoring weights. } \references{ See "Distribution-Free Predictive Inference for Regression" by @@ -160,6 +161,6 @@ See "Distribution-Free Predictive Inference for Regression" by Perduca, Bouaziz (2023) for the extension to right-censored data. } \seealso{ -\code{\link{roo.surv}}, \code{\link{loco.roo.surv}}, +\code{\link{conformal.pred.roo.surv}}, \code{\link{loco.roo.surv}}, \code{\link{loco.surv}} } From 145cd25c7e3eee2c865a385de873a197de9d4df5 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:15:53 +0200 Subject: [PATCH 18/57] Description updates --- conformalInference/R/loco.R | 4 ++-- conformalInference/R/loco.roo.R | 10 +++++----- conformalInference/man/loco.roo.surv.Rd | 9 +++++---- conformalInference/man/loco.surv.Rd | 4 ++-- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/conformalInference/R/loco.R b/conformalInference/R/loco.R index dc72fcf..557265a 100644 --- a/conformalInference/R/loco.R +++ b/conformalInference/R/loco.R @@ -308,8 +308,8 @@ get.signif.code = function(v) { ############################################################################### -#' Variable importance via median excess test error extended to right-censored -#' data +#' Variable importance (global) via median excess test error extended to right- +#' censored data #' #' Compute confidence intervals for median excess test error due to #' dropping a variable. Extension to estimators of the restricted mean diff --git a/conformalInference/R/loco.roo.R b/conformalInference/R/loco.roo.R index 2bf8f9b..e2745d7 100644 --- a/conformalInference/R/loco.roo.R +++ b/conformalInference/R/loco.roo.R @@ -196,7 +196,8 @@ conformal.diff.int = function(mu1, mu2, lo, up) { ############################################################################### -#' Variable importance via excess test error extended to right-censored data +#' Variable importance (local) via excess test error, extended to right- +#' censored data #' #' Compute prediction intervals for the excess test error due to dropping a #' variable, measured in-sample and having asymptotically valid in-sample @@ -267,10 +268,9 @@ conformal.diff.int = function(mu1, mu2, lo, up) { #' @return A list with the following components: lo, up, vars, split, #' out.roo. The third component is a list of variables that were tested (i.e., #' dropped one at a time, to compute excess error). The first two are arrays -# of dimension n x length(vars) x m. -#' The indices used for the half of the data-split are -#' returned in split. Finally, for convenience, the output from running -#' conformal.pred.roo.surv is stored in out.roo. +#' of dimension n x length(vars) x m. The indices used for the half of the +#' data-split are returned in split. Finally, for convenience, the output +#' from running conformal.pred.roo.surv is stored in out.roo. #' #' @references "Distribution-Free Predictive Inference for Regression" by Lei, #' G'Sell, Rinaldo, Tibshirani, Wasserman (2018). See also "A Comprehensive diff --git a/conformalInference/man/loco.roo.surv.Rd b/conformalInference/man/loco.roo.surv.Rd index 678dd03..3678e63 100644 --- a/conformalInference/man/loco.roo.surv.Rd +++ b/conformalInference/man/loco.roo.surv.Rd @@ -2,7 +2,8 @@ % Please edit documentation in R/loco.roo.R \name{loco.roo.surv} \alias{loco.roo.surv} -\title{Variable importance via excess test error extended to right-censored data} +\title{Variable importance (local) via excess test error, extended to right- +censored data} \usage{ loco.roo.surv( x, @@ -104,9 +105,9 @@ out.roo.surv, and the split and seed arguments will be (silently) ignored.} A list with the following components: lo, up, vars, split, out.roo. The third component is a list of variables that were tested (i.e., dropped one at a time, to compute excess error). The first two are arrays - The indices used for the half of the data-split are - returned in split. Finally, for convenience, the output from running - conformal.pred.roo.surv is stored in out.roo. + of dimension n x length(vars) x m. The indices used for the half of the + data-split are returned in split. Finally, for convenience, the output + from running conformal.pred.roo.surv is stored in out.roo. } \description{ Compute prediction intervals for the excess test error due to dropping a diff --git a/conformalInference/man/loco.surv.Rd b/conformalInference/man/loco.surv.Rd index 09d105d..9f7b02f 100644 --- a/conformalInference/man/loco.surv.Rd +++ b/conformalInference/man/loco.surv.Rd @@ -2,8 +2,8 @@ % Please edit documentation in R/loco.R \name{loco.surv} \alias{loco.surv} -\title{Variable importance via median excess test error extended to right-censored -data} +\title{Variable importance (global) via median excess test error extended to right- +censored data} \usage{ loco.surv( x, From 7c8e40367b8be7cf95f130405f0f1e258736b1c6 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:22:02 +0200 Subject: [PATCH 19/57] Description updates --- conformalInference/R/roo.R | 4 ++-- conformalInference/man/conformal.pred.roo.surv.Rd | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/conformalInference/R/roo.R b/conformalInference/R/roo.R index 05808ae..dc55455 100644 --- a/conformalInference/R/roo.R +++ b/conformalInference/R/roo.R @@ -182,8 +182,8 @@ conformal.pred.roo = function(x, y, train.fun, predict.fun, alpha=0.1, #' In-sample split conformal prediction intervals for right-censored data. #' #' Compute prediction intervals for for restricted time-to-events based on right- -#' censored data, having asymptotically valid in-sample coverage, using rank- -#' one-out (ROO) split conformal inference. +#' censored data, having asymptotically valid in-sample coverage, using IPCW +#' rank-one-out (ROO) split conformal inference. #' #' @param x Matrix of features, of dimension (say) n x p. #' @param t Vector of responses (observed times), of length (say) n. diff --git a/conformalInference/man/conformal.pred.roo.surv.Rd b/conformalInference/man/conformal.pred.roo.surv.Rd index c0f8be8..0e3c7a5 100644 --- a/conformalInference/man/conformal.pred.roo.surv.Rd +++ b/conformalInference/man/conformal.pred.roo.surv.Rd @@ -101,8 +101,8 @@ A list with the following components: pred, lo, up, fit, split, } \description{ Compute prediction intervals for for restricted time-to-events based on right- -censored data, having asymptotically valid in-sample coverage, using rank- -one-out (ROO) split conformal inference. +censored data, having asymptotically valid in-sample coverage, using IPCW +rank-one-out (ROO) split conformal inference. } \references{ "Distribution-Free Predictive Inference for Regression" by Lei, From 439422f3944e058189437f7bf0a008dc622171a4 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 15:08:36 +0200 Subject: [PATCH 20/57] Update loco.roo.R Remove preds --- conformalInference/R/loco.roo.R | 1 - 1 file changed, 1 deletion(-) diff --git a/conformalInference/R/loco.roo.R b/conformalInference/R/loco.roo.R index e2745d7..5dbbdb5 100644 --- a/conformalInference/R/loco.roo.R +++ b/conformalInference/R/loco.roo.R @@ -370,7 +370,6 @@ loco.roo.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, # Get predictions on the other, without variable pred.j = matrix(predict.fun(out.j,x[i2,-vars[j],drop=F],tau),nrow=n2) - preds[i2,j,] = pred.j # Get the conformal intervals for differences in the residuals a = conformal.diff.int(pred[i2,,drop=F],pred.j, From 68f98b8c846eb451cd7a9600e309386187739fa1 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 25 Sep 2023 15:23:11 +0200 Subject: [PATCH 21/57] Update loco.roo.R Dimension alpha --- conformalInference/R/loco.roo.R | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conformalInference/R/loco.roo.R b/conformalInference/R/loco.roo.R index 5dbbdb5..ad97ab3 100644 --- a/conformalInference/R/loco.roo.R +++ b/conformalInference/R/loco.roo.R @@ -320,6 +320,8 @@ loco.roo.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, out.roo.surv = conformal.pred.roo.surv(x,t,d,tau,train.fun,predict.fun,alpha=alpha, mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun, split=inds[[1]], w=w, cens.model=cens.model,verbose=ifelse(verbose,paste0(txt,"\t"),FALSE)) + out.roo.surv$lo = out.roo.surv$lo[,,1] + out.roo.surv$up = out.roo.surv$up[,,1] } # These have already been computed else { From d7b26a98efe6a4643239215f6ab7962c3eb86cb3 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:08:55 +0200 Subject: [PATCH 22/57] Dimension issue lo and up dimension for alpha of length one --- conformalInference/R/loco.roo.R | 4 ++-- conformalInference/R/roo.R | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/conformalInference/R/loco.roo.R b/conformalInference/R/loco.roo.R index ad97ab3..404b80a 100644 --- a/conformalInference/R/loco.roo.R +++ b/conformalInference/R/loco.roo.R @@ -320,8 +320,8 @@ loco.roo.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, out.roo.surv = conformal.pred.roo.surv(x,t,d,tau,train.fun,predict.fun,alpha=alpha, mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun, split=inds[[1]], w=w, cens.model=cens.model,verbose=ifelse(verbose,paste0(txt,"\t"),FALSE)) - out.roo.surv$lo = out.roo.surv$lo[,,1] - out.roo.surv$up = out.roo.surv$up[,,1] + # out.roo.surv$lo = out.roo.surv$lo[,,1] + # out.roo.surv$up = out.roo.surv$up[,,1] } # These have already been computed else { diff --git a/conformalInference/R/roo.R b/conformalInference/R/roo.R index dc55455..452c4ec 100644 --- a/conformalInference/R/roo.R +++ b/conformalInference/R/roo.R @@ -366,6 +366,11 @@ conformal.pred.roo.surv = function(x, t, d, tau, train.fun, predict.fun, } } } + + if(length(alpha)==1){ + lo = lo[,,1] + up = up[,,1] + } } return(list(pred=pred,lo=lo,up=up,fit=fit,split=inds[[1]], From f241bf5773dea4e8ae396c65887c27fce3a09282 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:45:59 +0200 Subject: [PATCH 23/57] Dimension issues --- conformalInference/R/loco.R | 4 ++-- conformalInference/R/loco.roo.R | 2 -- conformalInference/R/roo.R | 11 +++++------ 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/conformalInference/R/loco.R b/conformalInference/R/loco.R index 557265a..338e233 100644 --- a/conformalInference/R/loco.R +++ b/conformalInference/R/loco.R @@ -563,8 +563,8 @@ my.surv.sign.test = function(t, d, w, z, tau, alpha, k, bonf.correct=TRUE){ V = mean(df.sort$squared.diff)/(1-S.tau)**2 - tn2 <- sqrt(n/V)*(mean(df.sort$phi.w)/(1-S.tau) - 0.5) - pval <- 1-pnorm(tn2) + tn2 = sqrt(n/V)*(mean(df.sort$phi.w)/(1-S.tau) - 0.5) + pval = 1-pnorm(tn2) # Apply Bonferroni correction for k tests if (bonf.correct) { diff --git a/conformalInference/R/loco.roo.R b/conformalInference/R/loco.roo.R index 404b80a..5dbbdb5 100644 --- a/conformalInference/R/loco.roo.R +++ b/conformalInference/R/loco.roo.R @@ -320,8 +320,6 @@ loco.roo.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, out.roo.surv = conformal.pred.roo.surv(x,t,d,tau,train.fun,predict.fun,alpha=alpha, mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun, split=inds[[1]], w=w, cens.model=cens.model,verbose=ifelse(verbose,paste0(txt,"\t"),FALSE)) - # out.roo.surv$lo = out.roo.surv$lo[,,1] - # out.roo.surv$up = out.roo.surv$up[,,1] } # These have already been computed else { diff --git a/conformalInference/R/roo.R b/conformalInference/R/roo.R index 452c4ec..0a690b7 100644 --- a/conformalInference/R/roo.R +++ b/conformalInference/R/roo.R @@ -366,14 +366,13 @@ conformal.pred.roo.surv = function(x, t, d, tau, train.fun, predict.fun, } } } - - if(length(alpha)==1){ - lo = lo[,,1] - up = up[,,1] - } + } + + if(length(alpha)==1){ + lo = lo[,,1] + up = up[,,1] } return(list(pred=pred,lo=lo,up=up,fit=fit,split=inds[[1]], fit.all=fit.all,out.all=out.all,w=w)) } - From 07e88de7bb4486bd6fa0db8cf72c1d017bb1422c Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 26 Sep 2023 15:56:56 +0200 Subject: [PATCH 24/57] Independent function wrss --- conformalInference/NAMESPACE | 1 + conformalInference/R/rmst.pred.R | 137 ++++++++++++++++++++-------- conformalInference/man/rmst.pred.Rd | 7 +- conformalInference/man/wrss.Rd | 95 +++++++++++++++++++ 4 files changed, 201 insertions(+), 39 deletions(-) create mode 100644 conformalInference/man/wrss.Rd diff --git a/conformalInference/NAMESPACE b/conformalInference/NAMESPACE index c0e097e..5570c74 100644 --- a/conformalInference/NAMESPACE +++ b/conformalInference/NAMESPACE @@ -31,3 +31,4 @@ export(sam.funs) export(sim.master) export(sim.xy) export(smooth.spline.funs) +export(wrss) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 0c753d4..8643d22 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -1,8 +1,9 @@ #' Evaluating predictions of a Restricted Mean Survival Time estimator #' -#' Evaluation of a learning algorithm for the restricted mean survival time. -#' Estimation of its mean squared error, computation of prediction intervals, -#' and evaluation of (local and global) variable importance. +#' Evaluation of a learning algorithm for the restricted mean survival time +#' trained on right-censored data. Estimation of its mean squared error, +#' computation of prediction intervals, and evaluation of (local and global) +#' variable importance. #' #' @param x Matrix of variables, of dimension (say) n x p. #' @param t Vector of responses (observed times), of length (say) n. @@ -125,11 +126,6 @@ rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, alpha=alpha,train.fun=train.fun,predict.fun=predict.fun, mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun) - if (is.null(n.folds) || !is.numeric(n.folds) || length(n.folds) > 1 || - n.folds < 1 || n.folds > n || n.folds != round(n.folds)) { - stop("n.folds must be an integer between 1 and n") - } - # List of elements to return out = list(m=NULL,x=x,split=NULL,mse=NULL,out.roo.surv=NULL, out.loco.roo.surv=NULL, out.loco.surv=NULL) @@ -155,7 +151,8 @@ rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, if (verbose) { cat(sprintf(paste("%sComputing mean squared error ...\n"),txt)) } - mse = wrss(x,t,d,tau,train.fun,predict.fun,n.folds=n.folds,w=w) + mse = wrss(x,t,d,tau,train.fun,predict.fun,w=w,cens.model=cens.model, + CV=CV,n.folds=n.folds) out$mse = mse out$m = ifelse(is.null(nrow(mse)),length(mse),ncol(mse)) } @@ -249,7 +246,7 @@ print.rmst.pred = function(x,elements=c("all"),digits=3, if(("mse" %in% elements || "all" %in% elements) && !is.null(x$mse)){ if(n.folds==1){ - cat("\n*Estimation of the mean squared error on the training set.\n") + cat("\n*Estimation of the mean squared error.\n") mse.disp = paste(round(x$mse,digits=digits)) }else{ cat(paste("\n*Estimation of the mean squared error on",nrow(x$mse),"folds:", @@ -411,39 +408,107 @@ plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, varsL=0, ...) { } +#' Mean Squared Error of a Restricted Mean Survival Time estimator +#' +#' Estimation of the mean squared error of a learning algorithm for the +#' restricted mean survival time trained on right-censored data. +#' +#' @param x Matrix of variables, of dimension (say) n x p. +#' @param t Vector of responses (observed times), of length (say) n. +#' @param d Vector of responses (censoring indicator), of length (say) n. +#' @param tau Horizon of time. +#' @param train.fun A function to perform model training, i.e., to produce an +#' estimator of E(min(T*,tau)|X), the conditional expectation of the true +#' event time T* given features X. Its input arguments should be x: matrix of +#' features, t: vector of observed times, d: vector of censoring indicators +#' and tau: horizon of time. train.fun can be a function performing model +#' training for several (say m) learning models. +#' @param predict.fun A function to perform prediction for the (mean of the) +#' responses at new feature values. Its input arguments should be out: output +#' produced by train.fun, and newx: feature values at which we want to make +#' predictions. +#' @param w Censoring weights. This should be a vector of length n. Default is +#' NULL, in which case censoring weights are computed using the censoring +#' model specified by the parameter cens.model, or by default with the +#' Kaplan-Meier model. +#' @param cens.model Model used to estimate the censoring survival function. +#' This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +#' Random Survival Forests or Cox). Default is "km". +#' @param CV Boolean indicating whether or not to perform cross-validation. +#' Default is FALSE. +#' @param n.folds The number of folds for the cross-validated estimation of the +#' mean squared error. The default number is 10 folds. +#' @param split Indices that define the data-split to be used (i.e., the indices +#' define the training set) in case cross-validation is not performed. +#' Default is NULL, in which case the split is chosen randomly. +#' @param p Proportion of data to put in the test set in case cross-validation +#' is not performed. If p=0 then the whole data set is used both as training +#' set and test set. +#' @param seed Integer to be passed to set.seed. Default is NULL, which +#' effectively sets no seed. +#' +#' @return A matrix of dimension n.folds (1 if cross-validation is not +#' performed) x m containing the estimation of the mean squared error using +#' censoring weights on each fold and for each learning model. +#' +#' @details The estimation of the mean squared error with the WRSS estimator +#' can be performed in one of the following ways: +#' +#' - By cross-validation on a defined number of folds; +#' - By dividing the data into a training set and a test set, on which to train +#' the learning algorithm and compute the estimator of the mean squared error, +#' respectively; +#' - By using all data both as training set and test set. +#' +#' The default method is the first one. +#' +#' @references See "A Comprehensive Framework for Evaluating Time to +#' Event Predictions using the Restricted Mean Survival Time" by Cwiling, +#' Perduca, Bouaziz (2023). +#' @export wrss -# Function to compute the WRSS estimator of the mean squared error. -# If n.folds > 1 then the estimator is computed n.folds times using cross- -# validation. -wrss = function(x,t,d,tau,train.fun,predict.fun,n.folds=1, - w=NULL,t0=NULL,d0=NULL,x0=NULL,w0=NULL,cens.model="km"){ - if((is.null(t0) && !is.null(x0)) || (!is.null(t0) && is.null(x0)) || - (!is.null(t0) && is.null(d0) && is.null(w0))) - stop("t0 and x0 are requested to estimate the error. Additionally, - d0 must be given if w0 is not.") - if(is.null(x0)){ - n = length(t) - if(is.null(w)){w = ipcw(t,d,x,tau,cens.model)} - if(n.folds==1){ +wrss = function(x,t,d,tau,train.fun,predict.fun,w=NULL,cens.model="km", + CV=T,n.folds=10,split=NULL,p=0.1,seed=NULL){ + check.args.surv(x=x,t=t,d=d,tau=tau,x0=x,w=w,cens.model=cens.model, + alpha=0.1,train.fun=train.fun,predict.fun=predict.fun) + check.bool(CV) + if (is.null(n.folds) || !is.numeric(n.folds) || length(n.folds) > 1 || + n.folds < 1 || n.folds > n || n.folds != round(n.folds)) { + stop("n.folds must be an integer between 1 and n") + } + check.num.01(p) + + if (!is.null(seed)) set.seed(seed) + + if(is.null(w)){w = ipcw(t,d,x,tau,cens.model)} + + if(CV){ + # Cross-validation + folds = sample(cut(1:n,breaks=n.folds,labels=FALSE)) + folds = purrr::map(1:n.folds, ~ which(folds==.,arr.ind=TRUE)) + trainings = purrr::map(folds, ~ train.fun(x[-.,],t[-.],d[-.],tau)) + fits = purrr::map2(folds,trainings, ~ matrix(predict.fun(.y,x[.x,],tau),nrow=length(.x))) + mse = purrr::map2(folds,fits, ~ apply(w[.x]*(pmin(t[.x],tau) - .y)**2,2,sum)/length(w[.x])) + mse = matrix(unlist(mse),nrow=n.folds,byrow=T) + }else{ + if(p==0){ # Train and fit on full data set out.all = train.fun(x,t,d,tau) fit.all = matrix(predict.fun(out.all,x,tau),nrow=n) mse = apply(w*(pmin(t,tau) - fit.all)**2,2,sum)/n }else{ - # Cross-validation - folds = sample(cut(1:n,breaks=n.folds,labels=FALSE)) - folds = purrr::map(1:n.folds, ~ which(folds==.,arr.ind=TRUE)) - trainings = purrr::map(folds, ~ train.fun(x[-.,],t[-.],d[-.],tau)) - fits = purrr::map2(folds,trainings, ~ matrix(predict.fun(.y,x[.x,],tau),nrow=length(.x))) - mse = purrr::map2(folds,fits, ~ apply(w[.x]*(pmin(t[.x],tau) - .y)**2,2,sum)/length(w[.x])) - mse = matrix(unlist(mse),nrow=n.folds,byrow=T) + # If the user passed indices for the split, use them + if (!is.null(split)) i1 = split + # Otherwise make a random split + else { + i1 = sample(1:n,floor(n*(1-p))) + } + i2 = (1:n)[-i1] + # Train on the first data set and fit on the second + out.all = train.fun(x[i1,,drop=F],t[i1],d[i1],tau) + fit.all = matrix(predict.fun(out.all,x[i2,,drop=F],tau),nrow=length(i2)) + mse = apply(w[i2]*(pmin(t[i2],tau) - fit.all)**2,2,sum)/length(i2) } - }else{ - if(is.null(w0)){w0 = ipcw(t0,d0,x0,tau,cens.model)} - # Train on full data set and fit on new data set - out.all = train.fun(x,t,d,tau) - fit.all = matrix(predict.fun(out.all,x0,tau),nrow=nrow(x0)) - mse = apply(w0*(pmin(t0,tau) - fit.all)**2,2,sum)/length(w0) } return(mse) } diff --git a/conformalInference/man/rmst.pred.Rd b/conformalInference/man/rmst.pred.Rd index 2d7008c..d93334a 100644 --- a/conformalInference/man/rmst.pred.Rd +++ b/conformalInference/man/rmst.pred.Rd @@ -140,9 +140,10 @@ A list with the following components: x, split, mse, out.roo.surv, roo.surv, loco.roo.surv and loco.surv. } \description{ -Evaluation of a learning algorithm for the restricted mean survival time. -Estimation of its mean squared error, computation of prediction intervals, -and evaluation of (local and global) variable importance. +Evaluation of a learning algorithm for the restricted mean survival time +trained on right-censored data. Estimation of its mean squared error, +computation of prediction intervals, and evaluation of (local and global) +variable importance. } \details{ Analysis framework of one or more restricted mean survival time diff --git a/conformalInference/man/wrss.Rd b/conformalInference/man/wrss.Rd new file mode 100644 index 0000000..eea9558 --- /dev/null +++ b/conformalInference/man/wrss.Rd @@ -0,0 +1,95 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/rmst.pred.R +\name{wrss} +\alias{wrss} +\title{Mean Squared Error of a Restricted Mean Survival Time estimator} +\usage{ +wrss( + x, + t, + d, + tau, + train.fun, + predict.fun, + w = NULL, + cens.model = "km", + CV = T, + n.folds = 10, + split = NULL, + p = 0.1, + seed = NULL +) +} +\arguments{ +\item{x}{Matrix of variables, of dimension (say) n x p.} + +\item{t}{Vector of responses (observed times), of length (say) n.} + +\item{d}{Vector of responses (censoring indicator), of length (say) n.} + +\item{tau}{Horizon of time.} + +\item{train.fun}{A function to perform model training, i.e., to produce an +estimator of E(min(T*,tau)|X), the conditional expectation of the true +event time T* given features X. Its input arguments should be x: matrix of +features, t: vector of observed times, d: vector of censoring indicators +and tau: horizon of time. train.fun can be a function performing model +training for several (say m) learning models.} + +\item{predict.fun}{A function to perform prediction for the (mean of the) +responses at new feature values. Its input arguments should be out: output +produced by train.fun, and newx: feature values at which we want to make +predictions.} + +\item{w}{Censoring weights. This should be a vector of length n. Default is +NULL, in which case censoring weights are computed using the censoring +model specified by the parameter cens.model, or by default with the +Kaplan-Meier model.} + +\item{cens.model}{Model used to estimate the censoring survival function. +This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, +Random Survival Forests or Cox). Default is "km".} + +\item{CV}{Boolean indicating whether or not to perform cross-validation. +Default is FALSE.} + +\item{n.folds}{The number of folds for the cross-validated estimation of the +mean squared error. The default number is 10 folds.} + +\item{split}{Indices that define the data-split to be used (i.e., the indices +define the training set) in case cross-validation is not performed. +Default is NULL, in which case the split is chosen randomly.} + +\item{p}{Proportion of data to put in the test set in case cross-validation +is not performed. If p=0 then the whole data set is used both as training +set and test set.} + +\item{seed}{Integer to be passed to set.seed. Default is NULL, which +effectively sets no seed.} +} +\value{ +A matrix of dimension n.folds (1 if cross-validation is not + performed) x m containing the estimation of the mean squared error using + censoring weights on each fold and for each learning model. +} +\description{ +Estimation of the mean squared error of a learning algorithm for the +restricted mean survival time trained on right-censored data. +} +\details{ +The estimation of the mean squared error with the WRSS estimator +can be performed in one of the following ways: + +- By cross-validation on a defined number of folds; +- By dividing the data into a training set and a test set, on which to train +the learning algorithm and compute the estimator of the mean squared error, +respectively; +- By using all data both as training set and test set. + +The default method is the first one. +} +\references{ +See "A Comprehensive Framework for Evaluating Time to + Event Predictions using the Restricted Mean Survival Time" by Cwiling, + Perduca, Bouaziz (2023). +} From a20f168e1b4e08daa7dcddc2786a646850a610cf Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 26 Sep 2023 16:05:24 +0200 Subject: [PATCH 25/57] wrss updates --- conformalInference/R/rmst.pred.R | 15 +++++++++------ conformalInference/man/rmst.pred.Rd | 11 ++++++++--- conformalInference/man/wrss.Rd | 2 +- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 8643d22..4628740 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -26,10 +26,13 @@ #' @param cens.model Model used to estimate the censoring survival function. #' This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, #' Random Survival Forests or Cox). Default is "km". +#' @param CV Boolean indicating whether or not to perform cross-validation for +#' the estimation of the mean squared error. Default is TRUE. If set to FALSE, +#' the data are divided randomly into a train set (90% of the data) to train +#' the regression model, and a test set (10% of the data) to compute the +#' estimator of the mean squared error. #' @param n.folds The number of folds for the cross-validated estimation of the -#' mean squared error. If n.folds = 1 then the whole data set is used both to -#' train the estimator and to compute the mean squared error. The default -#' number is 10 folds. +#' mean squared error. The default number is 10 folds. #' @param active.fun A function which takes the output of train.fun, and reports #' which features are active for each fitted model contained in this output. #' Its only input argument should be out: output produced by train.fun. @@ -108,8 +111,8 @@ #' @export rmst.pred rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, - cens.model="km", n.folds=10, active.fun=NULL, alpha=0.1, rho=0.5, vars=0, - bonf.correct=FALSE, mad.train.fun=NULL, mad.predict.fun=NULL, + cens.model="km", CV=T, n.folds=10, active.fun=NULL, alpha=0.1, rho=0.5, + vars=0, bonf.correct=FALSE, mad.train.fun=NULL, mad.predict.fun=NULL, split=NULL, seed=NULL, out.roo.surv=NULL, verbose=FALSE, error=T,roo=T,vimpL=T,vimpG=T) { @@ -435,7 +438,7 @@ plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, varsL=0, ...) { #' This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, #' Random Survival Forests or Cox). Default is "km". #' @param CV Boolean indicating whether or not to perform cross-validation. -#' Default is FALSE. +#' Default is TRUE. #' @param n.folds The number of folds for the cross-validated estimation of the #' mean squared error. The default number is 10 folds. #' @param split Indices that define the data-split to be used (i.e., the indices diff --git a/conformalInference/man/rmst.pred.Rd b/conformalInference/man/rmst.pred.Rd index d93334a..16b9906 100644 --- a/conformalInference/man/rmst.pred.Rd +++ b/conformalInference/man/rmst.pred.Rd @@ -13,6 +13,7 @@ rmst.pred( predict.fun, w = NULL, cens.model = "km", + CV = T, n.folds = 10, active.fun = NULL, alpha = 0.1, @@ -61,10 +62,14 @@ Kaplan-Meier model.} This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, Random Survival Forests or Cox). Default is "km".} +\item{CV}{Boolean indicating whether or not to perform cross-validation for +the estimation of the mean squared error. Default is TRUE. If set to FALSE, +the data are divided randomly into a train set (90% of the data) to train +the regression model, and a test set (10% of the data) to compute the +estimator of the mean squared error.} + \item{n.folds}{The number of folds for the cross-validated estimation of the -mean squared error. If n.folds = 1 then the whole data set is used both to -train the estimator and to compute the mean squared error. The default -number is 10 folds.} +mean squared error. The default number is 10 folds.} \item{active.fun}{A function which takes the output of train.fun, and reports which features are active for each fitted model contained in this output. diff --git a/conformalInference/man/wrss.Rd b/conformalInference/man/wrss.Rd index eea9558..7731397 100644 --- a/conformalInference/man/wrss.Rd +++ b/conformalInference/man/wrss.Rd @@ -51,7 +51,7 @@ This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, Random Survival Forests or Cox). Default is "km".} \item{CV}{Boolean indicating whether or not to perform cross-validation. -Default is FALSE.} +Default is TRUE.} \item{n.folds}{The number of folds for the cross-validated estimation of the mean squared error. The default number is 10 folds.} From e0cfeb29a6b3a59def43269247a88b00ad6a3970 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 26 Sep 2023 16:16:41 +0200 Subject: [PATCH 26/57] wrss updates --- conformalInference/R/rmst.pred.R | 35 ++++++++++++++++------------- conformalInference/man/rmst.pred.Rd | 16 +++++++------ conformalInference/man/wrss.Rd | 8 ++++--- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 4628740..8c07c36 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -27,12 +27,12 @@ #' This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, #' Random Survival Forests or Cox). Default is "km". #' @param CV Boolean indicating whether or not to perform cross-validation for -#' the estimation of the mean squared error. Default is TRUE. If set to FALSE, -#' the data are divided randomly into a train set (90% of the data) to train -#' the regression model, and a test set (10% of the data) to compute the -#' estimator of the mean squared error. +#' the estimation of the mean squared error. Default is TRUE. #' @param n.folds The number of folds for the cross-validated estimation of the #' mean squared error. The default number is 10 folds. +#' @param p Proportion of data to put in the test set in case cross-validation +#' is not performed. If p=0 then the whole data set is used both as training +#' set and test set. #' @param active.fun A function which takes the output of train.fun, and reports #' which features are active for each fitted model contained in this output. #' Its only input argument should be out: output produced by train.fun. @@ -94,14 +94,14 @@ #' #' @details Analysis framework of one or more restricted mean survival time #' estimation model(s). Details are given in the descriptions of functions -#' conformal.pred.roo.surv, loco.roo.surv and loco.surv. The bias of +#' wrss, conformal.pred.roo.surv, loco.roo.surv and loco.surv. The bias of #' computing residuals on observed censored times is corrected by using #' censoring weights. Convergence guarantees for global variable importance #' currently hold only if the Kaplan-Meier estimator is used to compute #' censoring weights. #' -#' @seealso \code{\link{conformal.pred.roo.surv}}, \code{\link{loco.roo.surv}}, -#' \code{\link{loco.surv}} +#' @seealso \code{\link{wrss}}, \code{\link{conformal.pred.roo.surv}}, +#' \code{\link{loco.roo.surv}}, \code{\link{loco.surv}} #' #' @references See "Distribution-Free Predictive Inference for Regression" by #' Lei, G'Sell, Rinaldo, Tibshirani, Wasserman (2018) as a reference for @@ -111,7 +111,7 @@ #' @export rmst.pred rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, - cens.model="km", CV=T, n.folds=10, active.fun=NULL, alpha=0.1, rho=0.5, + cens.model="km", CV=T, n.folds=10, p=0.1, active.fun=NULL, alpha=0.1, rho=0.5, vars=0, bonf.correct=FALSE, mad.train.fun=NULL, mad.predict.fun=NULL, split=NULL, seed=NULL, out.roo.surv=NULL, verbose=FALSE, error=T,roo=T,vimpL=T,vimpG=T) { @@ -155,7 +155,7 @@ rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, cat(sprintf(paste("%sComputing mean squared error ...\n"),txt)) } mse = wrss(x,t,d,tau,train.fun,predict.fun,w=w,cens.model=cens.model, - CV=CV,n.folds=n.folds) + CV=CV,n.folds=n.folds,p=p) out$mse = mse out$m = ifelse(is.null(nrow(mse)),length(mse),ncol(mse)) } @@ -454,15 +454,18 @@ plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, varsL=0, ...) { #' performed) x m containing the estimation of the mean squared error using #' censoring weights on each fold and for each learning model. #' -#' @details The estimation of the mean squared error with the WRSS estimator +#' @details +#' The estimation of the mean squared error with the WRSS estimator #' can be performed in one of the following ways: #' #' - By cross-validation on a defined number of folds; +#' #' - By dividing the data into a training set and a test set, on which to train -#' the learning algorithm and compute the estimator of the mean squared error, -#' respectively; -#' - By using all data both as training set and test set. -#' +#' the learning algorithm and compute the estimator of the mean squared error, +#' respectively; +#' +#' - By using all data both as a training set and a test set. +#' #' The default method is the first one. #' #' @references See "A Comprehensive Framework for Evaluating Time to @@ -476,8 +479,8 @@ wrss = function(x,t,d,tau,train.fun,predict.fun,w=NULL,cens.model="km", alpha=0.1,train.fun=train.fun,predict.fun=predict.fun) check.bool(CV) if (is.null(n.folds) || !is.numeric(n.folds) || length(n.folds) > 1 || - n.folds < 1 || n.folds > n || n.folds != round(n.folds)) { - stop("n.folds must be an integer between 1 and n") + n.folds < 2 || n.folds > n || n.folds != round(n.folds)) { + stop("n.folds must be an integer between 2 and n") } check.num.01(p) diff --git a/conformalInference/man/rmst.pred.Rd b/conformalInference/man/rmst.pred.Rd index 16b9906..2e32206 100644 --- a/conformalInference/man/rmst.pred.Rd +++ b/conformalInference/man/rmst.pred.Rd @@ -15,6 +15,7 @@ rmst.pred( cens.model = "km", CV = T, n.folds = 10, + p = 0.1, active.fun = NULL, alpha = 0.1, rho = 0.5, @@ -63,14 +64,15 @@ This should be equal to "km", "rsf" or "cox" (respectively Kaplan-Meier, Random Survival Forests or Cox). Default is "km".} \item{CV}{Boolean indicating whether or not to perform cross-validation for -the estimation of the mean squared error. Default is TRUE. If set to FALSE, -the data are divided randomly into a train set (90% of the data) to train -the regression model, and a test set (10% of the data) to compute the -estimator of the mean squared error.} +the estimation of the mean squared error. Default is TRUE.} \item{n.folds}{The number of folds for the cross-validated estimation of the mean squared error. The default number is 10 folds.} +\item{p}{Proportion of data to put in the test set in case cross-validation +is not performed. If p=0 then the whole data set is used both as training +set and test set.} + \item{active.fun}{A function which takes the output of train.fun, and reports which features are active for each fitted model contained in this output. Its only input argument should be out: output produced by train.fun.} @@ -153,7 +155,7 @@ variable importance. \details{ Analysis framework of one or more restricted mean survival time estimation model(s). Details are given in the descriptions of functions - conformal.pred.roo.surv, loco.roo.surv and loco.surv. The bias of + wrss, conformal.pred.roo.surv, loco.roo.surv and loco.surv. The bias of computing residuals on observed censored times is corrected by using censoring weights. Convergence guarantees for global variable importance currently hold only if the Kaplan-Meier estimator is used to compute @@ -167,6 +169,6 @@ See "Distribution-Free Predictive Inference for Regression" by Perduca, Bouaziz (2023) for the extension to right-censored data. } \seealso{ -\code{\link{conformal.pred.roo.surv}}, \code{\link{loco.roo.surv}}, - \code{\link{loco.surv}} +\code{\link{wrss}}, \code{\link{conformal.pred.roo.surv}}, + \code{\link{loco.roo.surv}}, \code{\link{loco.surv}} } diff --git a/conformalInference/man/wrss.Rd b/conformalInference/man/wrss.Rd index 7731397..aa56117 100644 --- a/conformalInference/man/wrss.Rd +++ b/conformalInference/man/wrss.Rd @@ -81,10 +81,12 @@ The estimation of the mean squared error with the WRSS estimator can be performed in one of the following ways: - By cross-validation on a defined number of folds; + - By dividing the data into a training set and a test set, on which to train -the learning algorithm and compute the estimator of the mean squared error, -respectively; -- By using all data both as training set and test set. + the learning algorithm and compute the estimator of the mean squared error, + respectively; + +- By using all data both as a training set and a test set. The default method is the first one. } From b76bf34f513492237fdbe11c3edc30bc0d21950f Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 26 Sep 2023 16:22:46 +0200 Subject: [PATCH 27/57] wrss updates --- conformalInference/R/rmst.pred.R | 24 ++++++++++++------------ conformalInference/man/rmst.pred.Rd | 8 ++++---- conformalInference/man/wrss.Rd | 8 ++++---- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 8c07c36..50063fe 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -30,9 +30,9 @@ #' the estimation of the mean squared error. Default is TRUE. #' @param n.folds The number of folds for the cross-validated estimation of the #' mean squared error. The default number is 10 folds. -#' @param p Proportion of data to put in the test set in case cross-validation -#' is not performed. If p=0 then the whole data set is used both as training -#' set and test set. +#' @param prop Proportion of data to put in the test set in case cross- +#' validation is not performed. If prop=0 then the whole data set is used +#' both as training set and test set. #' @param active.fun A function which takes the output of train.fun, and reports #' which features are active for each fitted model contained in this output. #' Its only input argument should be out: output produced by train.fun. @@ -111,8 +111,8 @@ #' @export rmst.pred rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, - cens.model="km", CV=T, n.folds=10, p=0.1, active.fun=NULL, alpha=0.1, rho=0.5, - vars=0, bonf.correct=FALSE, mad.train.fun=NULL, mad.predict.fun=NULL, + cens.model="km", CV=T, n.folds=10, prop=0.1, active.fun=NULL, alpha=0.1, + rho=0.5, vars=0, bonf.correct=FALSE, mad.train.fun=NULL, mad.predict.fun=NULL, split=NULL, seed=NULL, out.roo.surv=NULL, verbose=FALSE, error=T,roo=T,vimpL=T,vimpG=T) { @@ -155,7 +155,7 @@ rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, cat(sprintf(paste("%sComputing mean squared error ...\n"),txt)) } mse = wrss(x,t,d,tau,train.fun,predict.fun,w=w,cens.model=cens.model, - CV=CV,n.folds=n.folds,p=p) + CV=CV,n.folds=n.folds,prop=prop) out$mse = mse out$m = ifelse(is.null(nrow(mse)),length(mse),ncol(mse)) } @@ -444,9 +444,9 @@ plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, varsL=0, ...) { #' @param split Indices that define the data-split to be used (i.e., the indices #' define the training set) in case cross-validation is not performed. #' Default is NULL, in which case the split is chosen randomly. -#' @param p Proportion of data to put in the test set in case cross-validation -#' is not performed. If p=0 then the whole data set is used both as training -#' set and test set. +#' @param prop Proportion of data to put in the test set in case cross- +#' validation is not performed. If prop=0 then the whole data set is used +#' both as training set and test set. #' @param seed Integer to be passed to set.seed. Default is NULL, which #' effectively sets no seed. #' @@ -474,7 +474,7 @@ plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, varsL=0, ...) { #' @export wrss wrss = function(x,t,d,tau,train.fun,predict.fun,w=NULL,cens.model="km", - CV=T,n.folds=10,split=NULL,p=0.1,seed=NULL){ + CV=T,n.folds=10,split=NULL,prop=0.1,seed=NULL){ check.args.surv(x=x,t=t,d=d,tau=tau,x0=x,w=w,cens.model=cens.model, alpha=0.1,train.fun=train.fun,predict.fun=predict.fun) check.bool(CV) @@ -482,7 +482,7 @@ wrss = function(x,t,d,tau,train.fun,predict.fun,w=NULL,cens.model="km", n.folds < 2 || n.folds > n || n.folds != round(n.folds)) { stop("n.folds must be an integer between 2 and n") } - check.num.01(p) + check.num.01(prop) if (!is.null(seed)) set.seed(seed) @@ -507,7 +507,7 @@ wrss = function(x,t,d,tau,train.fun,predict.fun,w=NULL,cens.model="km", if (!is.null(split)) i1 = split # Otherwise make a random split else { - i1 = sample(1:n,floor(n*(1-p))) + i1 = sample(1:n,floor(n*(1-prop))) } i2 = (1:n)[-i1] # Train on the first data set and fit on the second diff --git a/conformalInference/man/rmst.pred.Rd b/conformalInference/man/rmst.pred.Rd index 2e32206..29e46aa 100644 --- a/conformalInference/man/rmst.pred.Rd +++ b/conformalInference/man/rmst.pred.Rd @@ -15,7 +15,7 @@ rmst.pred( cens.model = "km", CV = T, n.folds = 10, - p = 0.1, + prop = 0.1, active.fun = NULL, alpha = 0.1, rho = 0.5, @@ -69,9 +69,9 @@ the estimation of the mean squared error. Default is TRUE.} \item{n.folds}{The number of folds for the cross-validated estimation of the mean squared error. The default number is 10 folds.} -\item{p}{Proportion of data to put in the test set in case cross-validation -is not performed. If p=0 then the whole data set is used both as training -set and test set.} +\item{prop}{Proportion of data to put in the test set in case cross- +validation is not performed. If prop=0 then the whole data set is used +both as training set and test set.} \item{active.fun}{A function which takes the output of train.fun, and reports which features are active for each fitted model contained in this output. diff --git a/conformalInference/man/wrss.Rd b/conformalInference/man/wrss.Rd index aa56117..33952c2 100644 --- a/conformalInference/man/wrss.Rd +++ b/conformalInference/man/wrss.Rd @@ -16,7 +16,7 @@ wrss( CV = T, n.folds = 10, split = NULL, - p = 0.1, + prop = 0.1, seed = NULL ) } @@ -60,9 +60,9 @@ mean squared error. The default number is 10 folds.} define the training set) in case cross-validation is not performed. Default is NULL, in which case the split is chosen randomly.} -\item{p}{Proportion of data to put in the test set in case cross-validation -is not performed. If p=0 then the whole data set is used both as training -set and test set.} +\item{prop}{Proportion of data to put in the test set in case cross- +validation is not performed. If prop=0 then the whole data set is used +both as training set and test set.} \item{seed}{Integer to be passed to set.seed. Default is NULL, which effectively sets no seed.} From d244393e47071a98069fb8a4d67949539b549f1a Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 26 Sep 2023 17:48:25 +0200 Subject: [PATCH 28/57] wrss error --- conformalInference/R/rmst.pred.R | 1 + 1 file changed, 1 insertion(+) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 50063fe..5927ae5 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -486,6 +486,7 @@ wrss = function(x,t,d,tau,train.fun,predict.fun,w=NULL,cens.model="km", if (!is.null(seed)) set.seed(seed) + n = length(t) if(is.null(w)){w = ipcw(t,d,x,tau,cens.model)} if(CV){ From fceea8c130c878c5538fcfe3a20e76eaefb96718 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 26 Sep 2023 18:02:25 +0200 Subject: [PATCH 29/57] Update rmst.pred.R --- conformalInference/R/rmst.pred.R | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 5927ae5..b344c09 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -478,15 +478,17 @@ wrss = function(x,t,d,tau,train.fun,predict.fun,w=NULL,cens.model="km", check.args.surv(x=x,t=t,d=d,tau=tau,x0=x,w=w,cens.model=cens.model, alpha=0.1,train.fun=train.fun,predict.fun=predict.fun) check.bool(CV) + + n = length(t) if (is.null(n.folds) || !is.numeric(n.folds) || length(n.folds) > 1 || n.folds < 2 || n.folds > n || n.folds != round(n.folds)) { stop("n.folds must be an integer between 2 and n") } + check.num.01(prop) if (!is.null(seed)) set.seed(seed) - n = length(t) if(is.null(w)){w = ipcw(t,d,x,tau,cens.model)} if(CV){ @@ -519,3 +521,4 @@ wrss = function(x,t,d,tau,train.fun,predict.fun,w=NULL,cens.model="km", } return(mse) } + From eedfcad24e2af26db4c1680d4e68dff32c0b57d8 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 27 Sep 2023 10:44:37 +0200 Subject: [PATCH 30/57] Illustrations --- cwiling2023/fig.loco.surv.R | 16 ++- cwiling2023/fig/WRSS.dep.pdf | Bin 0 -> 11502 bytes cwiling2023/fig/WRSS.indep.pdf | Bin 0 -> 7417 bytes cwiling2023/fig/calibration.pdf | Bin 0 -> 7491 bytes cwiling2023/fig/coverage_fig.pdf | Bin 0 -> 10865 bytes cwiling2023/fig/coverage_tab.pdf | Bin 0 -> 9892 bytes cwiling2023/fig/mseB.pdf | Bin 0 -> 4630 bytes cwiling2023/fig/mseC.pdf | Bin 0 -> 4696 bytes cwiling2023/fig/mse_brcancer.pdf | Bin 0 -> 4793 bytes cwiling2023/fig/multi_testC2.txt | 17 +++ cwiling2023/fig/multi_test_brcancer.txt | 10 ++ cwiling2023/fig/pk.txt | 5 + cwiling2023/fig/split_all.pdf | Bin 7173 -> 7173 bytes cwiling2023/fig/testB.txt | 93 +++++++++++++ cwiling2023/fig/testC.txt | 172 ++++++++++++++++++++++++ cwiling2023/fig/test_brcancer.txt | 113 ++++++++++++++++ cwiling2023/fig/vimpGB.pdf | Bin 0 -> 5448 bytes cwiling2023/fig/vimpGC.pdf | Bin 0 -> 9231 bytes cwiling2023/fig/vimpGC2.pdf | Bin 0 -> 9152 bytes cwiling2023/fig/vimpGD1.pdf | Bin 0 -> 5465 bytes cwiling2023/fig/vimpG_brcancer.pdf | Bin 0 -> 6706 bytes cwiling2023/fig/vimpLB.pdf | Bin 0 -> 437602 bytes cwiling2023/fig/vimpLD1.pdf | Bin 0 -> 120456 bytes cwiling2023/fig/vimpL_brcancer.pdf | Bin 0 -> 88458 bytes 24 files changed, 421 insertions(+), 5 deletions(-) create mode 100644 cwiling2023/fig/WRSS.dep.pdf create mode 100644 cwiling2023/fig/WRSS.indep.pdf create mode 100644 cwiling2023/fig/calibration.pdf create mode 100644 cwiling2023/fig/coverage_fig.pdf create mode 100644 cwiling2023/fig/coverage_tab.pdf create mode 100644 cwiling2023/fig/mseB.pdf create mode 100644 cwiling2023/fig/mseC.pdf create mode 100644 cwiling2023/fig/mse_brcancer.pdf create mode 100644 cwiling2023/fig/multi_testC2.txt create mode 100644 cwiling2023/fig/multi_test_brcancer.txt create mode 100644 cwiling2023/fig/pk.txt create mode 100644 cwiling2023/fig/testB.txt create mode 100644 cwiling2023/fig/testC.txt create mode 100644 cwiling2023/fig/test_brcancer.txt create mode 100644 cwiling2023/fig/vimpGB.pdf create mode 100644 cwiling2023/fig/vimpGC.pdf create mode 100644 cwiling2023/fig/vimpGC2.pdf create mode 100644 cwiling2023/fig/vimpGD1.pdf create mode 100644 cwiling2023/fig/vimpG_brcancer.pdf create mode 100644 cwiling2023/fig/vimpLB.pdf create mode 100644 cwiling2023/fig/vimpLD1.pdf create mode 100644 cwiling2023/fig/vimpL_brcancer.pdf diff --git a/cwiling2023/fig.loco.surv.R b/cwiling2023/fig.loco.surv.R index 974d95d..aa4a241 100644 --- a/cwiling2023/fig.loco.surv.R +++ b/cwiling2023/fig.loco.surv.R @@ -772,20 +772,26 @@ multiple.C = array(unlist(multiple.C), dim = c(length(vars.active),m,N)) stopCluster(cl) -save(multiple.C, file="fig/multiple.C.Rdata") - - # Romano & DiCiccio 2019 procedure 2 # twice the median p-value or twice the average p-value serves as a valid # p-value for the overall test. +signif.code = function(v) { + code = rep("",length(v)) + code[v < 0.1] = "." + code[v < 0.05] = "*" + code[v < 0.01] = "**" + code[v < 0.001] = "***" + return(code) +} + pval.twice.med = round(apply(multiple.C,MARGIN=2, function(x){apply(x,1,function(y){pmin(2*median(y),1)})}),3) tab.pval.twice.med = paste0("X",vars.active) for(l in 1:m){ tab = round(pval.twice.med[,l],digits=3) - code = get.signif.code(pval.twice.med[,l]) + code = signif.code(pval.twice.med[,l]) tab = cbind(tab,code) colnames(tab) = c("P-value",models.names[l]) tab.pval.twice.med = cbind(tab.pval.twice.med,tab) @@ -892,7 +898,7 @@ pval.twice.med.br = round(apply(multiple.brcancer,MARGIN=2, tab.pval.twice.med.br = colnames(x.brcancer) for(l in 1:m){ tab = round(pval.twice.med.br[,l],digits=3) - code = get.signif.code(pval.twice.med.br[,l]) + code = signif.code(pval.twice.med.br[,l]) tab = cbind(tab,code) colnames(tab) = c("P-value",models.names[l]) tab.pval.twice.med.br = cbind(tab.pval.twice.med.br,tab) diff --git a/cwiling2023/fig/WRSS.dep.pdf b/cwiling2023/fig/WRSS.dep.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9e5616783004c1e1bb9b6c75c7a7a83f88f77d5e GIT binary patch literal 11502 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 G;{O9bNB8Lf literal 0 HcmV?d00001 diff --git a/cwiling2023/fig/WRSS.indep.pdf b/cwiling2023/fig/WRSS.indep.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e17e0f35b7a6ae1ceec626937196160453db5b60 GIT binary patch literal 7417 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 uWt=|E`P}7%UFp literal 0 HcmV?d00001 diff --git a/cwiling2023/fig/calibration.pdf b/cwiling2023/fig/calibration.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b7b1d4ee9e98bb53bcc27865e175c42c1c30f249 GIT binary patch literal 7491 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 N3lnp4s_3W^{||schV}pe literal 0 HcmV?d00001 diff --git a/cwiling2023/fig/coverage_fig.pdf b/cwiling2023/fig/coverage_fig.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9c923f2f2bd0cc69669a95a2b6bf844773da1450 GIT binary patch literal 10865 zcmZ{K1yq~c(l%0{K(XS`LZDEb;O;KP-3k}UxAOBg$X0JIW(Y%FZ-EWB)-teh;YEG%?rKm~~D|M#7`rK2^hl`25m-q_Z{ z(!>Fv)2Cjr{i`y#^xXg06R=U74Yu{-2bP+liriIJqYahw>nT90(OKwIskb7GzY4J z93W2iCNO&(|7Gt<;h*Vv2LhWrS^&6Ncz6InDNAcd*a(19*09Nu0GU8cK~Md5aD>g7 z4Vr7}fr0F2s$Qp-%hIpwFJ2^=4D~fdN4*%$H?~3^^&J%je_;!uA18pHKQ6tTZz06d zNfR_EA;uy3#Ugm#Ob7{qehx1vRs4O{xzkGaa4_+}AL#J>rXZ-}F|Y2}+xzC?Y<}W1 z*5mOh9wwN9c~7Sb|Kp*swf$_kBS0DgsSh(xPw8FlT0aZ@Q0bmq<0=j8}2kXI6?T~TvRicE`8qxgJ1pJ$g%bYoo z-by(ZJ^R(=)iF}HIh~-8?^;gshc_yresqz=RGXV;n0Iw)4$fZS?d<&mhYwtx{hH(T zPV7EK=O@ZF4&mI&h=yjfgPq>WAtBpUhih5Bazeck_v-j)vttF7k6hkL1@W`DHEC*5 z0#5p*k4qbua;<~B(zioyqg3Z4h&S{1KQ zJ{O{OO;wFT23V>yTN`_a=QaEKAX77fZ}mg_M~|L=K6knN>3SRjLVlF`tT#2jqP^?i z?ZLb4$MI!ZoWvjIV{ADaBC|fg*<+e3lqhs9m|K3bqBi&TG5tGt5#9IkIejIc_mFVq zX$QqL@$Q)!9v?pn{eMAd;oFq_NwxkQ^nZUeB7o9q@Gi3mbr=ax3;h8 z&}*~v!&R8dKo+0;PP^q3IMsWflLk(ZR>a-gEmrr=TJtXplo)Sc;w3Cm5sB{AT26#Q zdfbbRT6`G5Vu~UVBEBrVKFf3Nl4cv0l(gc*IJVoHdQi7bCwv40CsG`JstJToB#V!z z2bT(jHZ14z7I3$MXk2Kq1jH(RwsfTLv**+RFf__qfJSG<}Oo2~se14PRdEarA@%70xcTYPoCfgEpF3Jo? zMP8N18K~l;Wem@(dxVIXmz2k;LIxDtaV$j+U8|73jX`?3_}m7Mgs;(h z6};$#?#`hkM|Qnsx#;XgK4mu5hlpBI9NIhgEjI7t65`B2^Sod+Z_s9wMD3~{sCxGxn6_6$rz&Fk`Nf3*H^NZ6 z>-*ibRqG=Vw;6Z4m0LSgU9HuF;lwGvEZ#2A`c*%0Y{0owS_P z>@U$rvR1s>U!Wf{%rMXl5@VN`?3#nW1ncYd3K+O(B-9_i*D*H~F6cO|oqUv3dxRW3 z7`ANIzt&3PN{)J)gj{c*Y&pmwiz=y=*fv5+GbOlAuebn4QJxxa;vR7HK;b+F#S4;X z>167<60W(k;iDaqYIWDyLdoR5s^xxVEh5f~`tokIIjZO9Fo(Ep5_FQ0x8%7LDI%gZ;;t)=_$GdApnw{)cKhLy$s27dzHN4xf_;bI*Xow_?WL z5~Rc_9UnOyMRB-paX5QGFon+tC)yp|>PM)%`AL0RhfB-resnNzvzPFR&b3k%1+l!q zOq?oos=j)a(JJoDV{^Fz6vcD2S&Qf05j!xPQ=ib^2N?^t^&3P;a*RYj>pzmNZ2Z2G zqy$R3fQ2$hFQ_7I$Qg4jQg^Cfi$d!h*J<6{gYAeaG0jK(Uu^?XuS%*HMepsZ~ zryaVU%uUaI!&l$hr@aF+zC}z&Wm@S|eoUkl7TgcN!GfP2r-#~C(iDwc!Vte>q*lKb zF%Z#0R`qg-jfr&+?SO5!mXj-IgC$TK`r=~E?1QB$Xeic1;~fTkfm?ky$wNhqur)2C zx{fPw*WHhx+l32{^!!sSugc4HKGmg`tqNn8>UW|v`` z5_ai3qLZv6w0O{0%y>k=?Xp(rUzARIS{;g{r!rPj@X9pH!(zfT7A)MDuxaMaR{l z)&PGi)*SA{PkNN*2Bh~fHSP5(AFH5xT_e4vK(KPnz#dH*>>xBGQDs;qm;DJQd7r>>ap{fkmOH^whd(JYY4`NK;cbR)EJqcQau=ggtH_uY71`SjCgf#YM_ln^rDgkfLL~BErIuby zeAlwuyLFPv>X+{q|3n*1emLMp5;FxJEdQ9Fy7}Au@74d|7SN$iqU%Y2f0C+{wcAx< zkLUrrixY&TN_Ip7zbMj&lFypRMZEEjFqn?|C1sH_`f~)d>65;9vF-t$zd9`Ji}bR> z+N%1|?~q2v!9jkO$1x{w85wpu^Aq%Ximz9aVBCP~_bgy0%@(cShIIM<1K_T*c*Zg9}mb2w4TR9@%83MkB?NBVS2TjM4jh&8|o(*J!`X!-s*1*ic1XYr;QJG zcTRC*TGbB*e@YVPvzZi>h-BGCrTTL*bS<04 zE7RjQ1&=j9x#cStFYgw+G0`@ngm_cq$updy#q?}e=9S{oC{8@6PPN*=I4CE4Ig|fp zjs6MKFbxhL`NMy<{5F-0(<#3SAItGZimuz4Ju00Iz0s&1{_yo2}OR1p&N9dksm{*!sBZ z7xaam1Y1CXNEPMRmtS}MQ?2<#i;ra5^Bty|D`4^TLPmoWOLv2V!&dkNH8g$p0z3ZA zWw>;q(~3H`TI2!CmH0<@LX*#&cOV+?#2JFn-i_#)e97NwZq4{QkRACd#V?@gDh zpnO^QRgI)!HVADbzunMO;dw=nXNYsAvergL#k0KzXvj2dmkQ#~jzLm1d^K%3hv?$8 zvh*`jgm`EBu86llYQz^9NU`_LX+;iSVWeAs}5fkS+?WjX8Y zrDV55Xe1gn|4oL#AgNqp51l(cw`Z!0ixaMYL0O6UtTpN(#yADUwWbn~o#e$x>u92BIeTWzS7EUnG+m)a9Ipj!N zB(FTo+N1D$QiZ9g!k84X951#epr1Iq?+ea$ZQdZCTv#xH+^Q88GXr6=er=}osf0D@ z@*Nv&?ip&ONE`5!tMpi))1buWEO}OMz6@yKx2&Z+M>KBKs3~T|29E@U`JO*_&uu1l zN{{aO3XbhEG91!8Tw9@Sv8xtc{_1o?JyWmtg_1%%c`R z*f&qg6F#*XDcYU1f(R`V;@{K)lAmAl^*d8t*%!i21g3T|{y<&x1e=qqXO7&jO6_1y zTP2*&Zg*0Hr5L#pFDp|rSKZH>mO=R(`Q&>5$ zkeMZoA@xjKAn(DF8nyE&s=)ChA?d-|MXp-|Y~Y>!_QxIHvgZ?HDS_S@altaBJe!O2 z%pDCIR%*p=hN|9|uF(L6QWdd@5*Mlr0TSEgE901MqCfZ5eUW>g>t8`8;5DkOQYxOF zN$nnXa`^TrPdXwQ(%EgRYkvcz)Ans4krRtq{;zbXvKqu*p}fxn=O9 zXaHFB^H#`DSlB!P0Tf~gN%IKj0@kgcY6aO3J8}}{?AE4{xV;DQjAB^AGOT(VHKVt1 zyP)z=H^N!+%OUGLf8^eFcpJbFG|H)VrS9_cEd1i_c0*^7<*x?a*1G=q_}|wH8cws3 z`^M-6eTa0-43L64u(xhEEVlpbFPn0qj5+~MFXf1)8MWM6jdzlqrli8ONWtYnSBq|r zw84^uLX+_({L|-ACebCAg44$dX?H4g&LuTOtGdD6pFA#ztm_xI)pV4GU!2kfw2>i- zoe3iU`CVx3J>FmQUN-5I<*S@&mA*{9qiJ~jQn{bA**1~3Cz0ukjkxRGmy_vJ>h?V9 zW7MV(a-ID-sy!UFyE64C)!at30M`dye1T*{(@KXa(l4Z*)tX|mv9?*^ho>(X8j3ok z;f!V4VDJ*Qm~djmi%Ll--BB@Sg2Ktj$oA%YJPyGCwSL93VeV(cLbMZ4y01ly^P9t1p zo_F!DMGYm45F(n};YNO#!ni`w5#Inab}T;SJ)O%ku8ZMj94UNZzgZg zi*ZL)I{~nw^;q1;VqY)=QLqb6atD>8Vvy)9&Nmr; zI)Z7Lxvv@+WEH?+L$O?Oxn<$hbd0yrctI5=6_FLbzpW(GMnio-UcLyLZfbx73eg7T0=ylC^xY)GSEKZghuGy zoJsct|4fo9-KlO=r;tLWYJwGp>=uWc|Jbz(bD!8Wj^>`o7eYV%8rcN2MZZivYX)+! z!u^d)(Vi43h@G*hRu|8DMD{$EU_csiomJD~8GS*T4tz}nMn&u<&kdOesbD|(=UN4Z zp7~LC_9ZXTVaSb-+HgY@i!vHHqOm$2NV4gnRL0{SlmYE7;&WTwx2$l5Qr`}CmcF;M z_(6vOF3%TgPKVUKyuR=0>kzCxVt;}6KEh9kH+}npzGZynfoOSs{B3LkRKJFTIq4{^ z;V@i&4m^LobzgIMx6~~;k}w=w;S5!ETX^4A$avX%wN>2D7it$OA5Ei5k+NZ|{!8;I zUo+W(oygKTR8zn9wu25fEs3e=0)ZHt6ai_U>k6d68q14qH}%F-o^G^v0WMA5EnY%@ za7?$-x8s1T&!YRC$09U`rL%H_Si0VK$WB>IZJt@#V6C$C?| z#o!i<>e`Z{a7CbBN`Q~gzj9C4#@oc;&IRL|W(EY#oC*dADcfqHu0RqU)gm=mH*KdH zUwBx*Ie~3P)G}q2WhVhqSkPX=rwBO){_d1mrLdgXW{egHPOUcK$Q3k;aS&M@rOz-?_oX6?-*JDis5j}?(+ zqsu0}3>Q%f6^U4j{RPj;Y&-Lw5SQj=w17HT zJQ+$Fo_3}4P$or*=S-Bfxutp+Y-Nh70rBq-U*S`;nC|#WPiZX0cB-iThR%5G)UzjH zM4|!7@^8^pxEgp*7sR$z(wUZcPS4LbX1pFTI_%P*4@_2Z$YUpZb z_cPdg_<|72u!$y*^>|qNk%7xwf!M?SaZz^e=RkbB-Mo3W@d zy?!RRgK$9!kd4QvfOlguAMEc*szaz>Y3^1Njpko!;#MZFsHs%IHOy@ zc3--k@o>LgJL#3Nl=^s>(V8xI(JPxbxf8JW8e?tp4oiVRUEiF4eP$56Y@H(^pA|2nccOvA*a8_OhJ-G@5gkHYk%2g&sH&#}rng4l=NBjo46YriT#J2jt`@5NbK%*q|fx zaS%2tsgtq)aH&#-LCS#WEi5D<867~Mqs(-d2_*&+sF2z2Io$f0q| z+9C2@W#ukzTW)fDj0ZBOEdjvGk5~7fy#?;??jJ2DGa`3_KY+}#^;mNw#fjJSa>K zreFm1lAKjc&Y2c$ZibvM6qsVY3=7h=B2uM%2FB~H%4Th4^mhL!#X$&s$DrXBtC`ie z%^_HVx16D=F1=yfB|ot{yG@m$Sgg^YrG$DfFcYQjDOTeApn3IaVGvjD{B`cc+!@qZ z{%xRAb-xS8b0x*@E5Z7rU}VCBl@0}zOVs@_{cpbjnGe+azk62@vM;|iV?B6Wd6Vdl zoWkhFznQzgiN_~i@h{%*AL8*Zz7Z&IY3cyb13dAJssIBR9|>`S@rtYfpaRI$(pU`Q z3eaPLz2juz0I;!g8Tnqn^Qlk& zqCL~%UDVZP34%wOxto=vu|s1=tt?a#WH6d#zA)3XqGHRnMZr;WNvPXOsC>zP&PKc9 zlOz76oH8^JUZs5R8L`Bqoh=?|ysT*nF>E^?4W%rTUwT<(G>)Z;G*vQkviUK zqx!ta(#Bie?*0@JW^RN6|Kb=9(Hd^Wwz5);;7ST13BmJcxOEcl6=8D&CgA#(enL3B z9qutBwqA#l6;3%ZeEZ~TR-c%#pGQzDmAY1`Ke2{GVVFg3m{P}&O*6*fgi+7)A_;`W zd&(9dKs@L$yaqbnSfE*t;C6xxaQpdHJzL9L6Msk9Adw!(Mme#kA{QKO^aAsi zgPN%|lSwo!n;+A<8{CRazv1yXQ2WOS?jTn8@DE+)msACxh~Mg~1x3W*hOLf_C~Svy z|6sx7j(D@i`ZI}G=hdn`oY}~o4xXD0aRnv+Paa+#78@p;7TQT~gS(XIOXv9a0p5qi z669B%7g}CP7;t6zpz7J1U>i$(ID)`(M<-Xx45C_h-%B?(WbHMX$()aBdhp(Zm^kqzC>5w@S5%Qi>-{{D{_FZusR=dXY1ob=B{u?JE&uZFm>fo?e5D`RaKRvTEVqNjWi-MN`5aRh%XA;Hwl^D@{MRv-> z;qd3OC35sNS>fP8VfGy~dbR+s%7U5hLwAh!Lj*e@un!wwHP{g#-uJ2^P&_}6ZCjizq9^uYfKq3|3XV3Kux|m54>k^8b{Go|L5Gys7gs7& z9E#$om$?X*B6Cq>x#absGG7Y%^ze`+C0Ui<#i9?8;|H!~$7g9~ape@LpeUz(6`ItT zr2U9?j-w!Dl|3{z{0q*Jk&ienj9E%6GiCJkugYIIXFNCf$o^R-;jEEF-tS($#jixD zB(5Z#h~y09z<8XiM^0mV-Y zT^cL8wlua{wzze~O)rAf{i+6w6*f z=iQPR_-zKoGEJ*WCcQTOGumT3O@>KYM|yn~*Zfaf9O`H4`ri^uwX<9$>|}lyzI@*= z6H?NpqMN6lpT$zo+CT=cc44mkQY@p_3DnwS_K)%M&7&iIxFY8z1+_ zc#3~JV%kIwzB){e<_+Fnm=53^;&{WMWpOz1YBY6veEMW!V7zFYFXvo6<@-TaT2Zt3 zZNNn?rbe%VbY`XacJ8oA5L#!zIuj*$?5F46rG%FWR`zzTm3lmS-(yC1nd9di?`wt8plpX_P>bKr9S7jP%{h ziI}8LYfz-_IFmmUI#VNKh7PfIx1LSqZtabQ4I~Y`XaVgF`haVpW-(!MT3nLEG*i=a zF{gi`zg%Cu?K}bnn}d66=S^HD(m#@aXl-wqdGPno@$btTG9DjmV;w7>{*4^ggJxo5 zmgXYH@5Wo=%(rzmJ=?Cc@A>nZkT739Sw3tq$F1k|>Xc+VqJFpDUVqOZ5B#E5qP7{V z>SEv$>EVBihy}$;myYQTC@3^9+7=x#e?R@6vJ|s)#@hTs?t%`|H9ykWjHZ@UEgjrxopWLLWV79K@N;mpQ*sP@U3+7DWlTywX!X1go%n>?<nK3x(O@7a>q z@0o9gP-n3QBj6lzNW-|k&FPdY?+2!Y6dwOB`p_1L)Ty@r8=ReKS{^Y5% zJj^drAeVQgCX_FcXOLTlY=K*@;)b;1454$;RiLsTS=J+(KQvdT_vROBU(;$aj{wQ% z$ts#1P)wxzBNO-&_M4QAwNz@u%H%8Lb&2(74M57()w@t9xpSEaEd`GfvxEG(nMSw9 z(*55*Co~H*v~(}QrA9|X?yWb&$T>lw&_pQjEg6>-_l5V+O+&qGPGQwfr`M|2j_)T# z=uqU)5K}S}sKmB7*XhKlqkVAM)q7&G$GR9&P@6!85KI+J=ACkNaNa2z?D4rQvI=T` zWnhC+os)~ZtG~oM6*o?O5V=PtMB-Xi+nZOg?lE|DNj@Q{>7c*qI*Zy7l8u|8xCNs> z;+%GOb~YwVn&sV(QbPnCN`Os}W9!k`({0a@w4KX+VYj98yK?kl!pQfg2Kx;gwuKID zUYYACx8!`tuaWtKUj;V+`3(+<)44s@LT}?Hw3L?dy>Fp3K;idSu6MH2F-Zm8!VHi4w?8&!U0Pl5*jVuSIUn@T?j}l8 z48OMid>lUn9Xb9yyVoKvHG7}Xq~h(c!n9}e*qG>o%U*v}e#9W0==JNG=Fxi4+PwdQp=f{C_(_6c<#d){SdrfoZ2k9>mL*se>|pti01YT%X=Vn374|(< z?&$$IIDs~nU?&HF!GBZ`{sGeepxnPo2>-xrpqkSM$3GQ?PeK@eS2VVPfnON({^Rs7 z9T||dGsw}>#25|uk5j-?cmK2E(A6GfhQ2dMEa)$pcV_{?cKlWJIc>i0*%EHe5 z-#%DbIJjU#{l}i8y|JY=$R1V}3IM8Ex`SZj1psBiW)N8F^E4koRS3ip05km8+&DNI W+dKZ58CDifE-o}`YDpz2wEqDO_|_~Z8?tXhBwIyUvdy5FVT|1%glrMnmn2GsWG5tR*_V_h zl|=S^FTVFZL!Zyn=lMO~=l6R3e)G>c*LA(G>wTT;zUREoea_+4S4W7zL?tPCZ;jph zcB|`FpBa`C1`&f`tZz`t%Tq$tut+PM0|u>bg+oFF)X#~FiA#vdic7(y#9(4@K}x7D z#`gbcyX1g#1iTC(npi7mdj}g=h@KnH*$oG{>0>drZZ=3PXq6O&iHZX{0v85U2~sL5 zQX4%Pvw=V_c{w8?P&F%@l_SOu0@b&&L%KpF0DvLnF9-NP96%h1#v;+UeK=GN zgT?`(D@2Ci4mCu&V%)GcKs?Dm;(>sJa$G>7?Qr%GDH%yP1d4EQ!~r9KA{>F@s3UDK zwn#8rgW9U*|ON%8ym)}%gm&!VK+*z4Gkq7ac-`c@l!q>!gz7k(zcskWJC*KcP=-~77cxKY|U$sMlCmY_Ygx+R$IC-dvucb%;n++f#-DV)xZ z*Pz}C)}q{KcjuS)_TGY?zx=OX-yCLCL2FnR8?P`q&`~yv!z*84Cs9L^~%EJ=tMmU z=U&k$vEz?Ty$WbJXbZd=N3PHX;+>USxlua8M^?TB#Avp=BRP{OD1v{sC>GJQ2ayK) zsse#_!(NQj78mo`?|cb(@qI5$N@WaPAfrl1cKitI?7v%KF@orC<6h4z98TM+nbb>*&rpZcCW_nE8Xir#&?;9D2E6j zHB$ngytTa$m_dvtl@pm0$4^?$@3jBk#7eUqmX-ftE{If>9aeIx1iz>mEN|&P&~D4l zGB3bCx;!W^{XB`zWyz6^g)gVk^jvC7h*hg8+%&Xcc?NsY^n6yrAj#%R7j(<|9fgzs z?$61)<17yT-uxH(yhjI?Zzj&koBJs=W_dPL2v0ge>&noD^j(E5GIWKJu2pFmo$fsL zaCqd0wO3~E3eBN~LbKQJy6{*qL;L({-&>`2Ca!(3VFdxcNxb1MJiAj3?b%;fJZ0v$ zWahepQ0%5GM|o5Iu=TUUdB40Evhq#@)0ww;+TS3};u(gqrwl0z)O$pR=B{&RO^k7} z4*_zKS6FD7G>!IC_HP7u6%p=B2Z+D4p2Xsb=7$_(S@}S;O`>_0qLC2Qk&)QW@`0@q z-84##fPZJ9PHeAe0Cdtc?=B*UEkct>KOYqAX@8S6%Q24F&ORgta(qc_XY0Wh2zXkT z7>N2Ju_f0d2HM?k*Y$}39XW2B*lVlZkhuNnM{@6r+KVpbUI~)z?*(W1y5d8GcxI`) z3_}zIPsFtN7>4e^88i`hVlrn_*__7oS($m&sh4{|Rcw&2WK*m`;5dXs*Tu45K(<-a z6fj?iUg|jwnB$1%!{0%(ZT#Ip0Da3q?K=~P6Cj%GqfPdMB@oeX_R*fQt(r!xOj4Hn z!IErzO8_p_31YA$f|;4u9`vR_M5PeTZzhPrEB4LK`@z$|-~jg|(fo0r+jHNXvCln8 z7)bn2*=B?hOJ9cId~SDtvy><0E8db4m-UM-@Zel&3n3SepaeC`B;?88Bmiek#x>nAW=3_-n zT0j;T8I>!Yt6(&uo0S)JbCJPQ$KK)FZ2B1bsIJqiD`WHIA`Uh_=til!Ga(PZUg}Z2$qo!9t0tTXz?NlxkSN-5TKbT;0cxq zqTo*u$OV7^R1UYqdz(w_!m9;+d&zQygN(k2WaUH^dxTeW`t}~nq54o!UGD;Aa7rzJ ztyb9WES-*Sj5VcT<4_@yC!&w?|uIT@(Wdf%XKqj>NQ%X_1btvKWPx##e?>q36=2Q|W2B#{X?%!8LevWI_#?H?>%qZNwLW38mTg3%84Hb0h_l<$?X=Tek2%|*3&*gj2!hpH1lY7v* z%Cz38U)Pscu>&W^Lw~Mpb4FBkd~m&{x8N^dv$Kxb+o=2OhxOiTX!Eb}f4x|pSVv~V zZZ#sxA(lJib&*4C+3tfTB}`Y4s&7=aC{mzc#;dlJVTxAey602=M$h4C&CD3duEOaK z=B;X1=@G>_iu5SAHbt|{^b=WM(xXDGLy9@`H`W}P@Ow(Tj?brFxqoQ6tAyY9^*K#q z%soeGI`a946{NR2A~?_!akl9@tqO|@E&ubaweC-AOW!s=dnbks2kt$ge`za}V8^d6 z5XS$=P}o^@Jda0#vzgm~!(Vk^D=l|7*muKtBc5j=ic~ZGUc1X+W;$IKB;%g;t)nl` zTNKcmrTeZ5R*o;k>AbMW18aYLmQMw=|_sIX3l#K?u_79p!ayz_Dp0 zojOTo4Og)cEAs;PAuQ>vAyr?nzFHWZEpCn zU_+YpCk$`5)|anyVq@raGM=Ejnu84&)9eN4Mo9DM=OeVEv0Po3%CQn*+(zj%ln?3e zbID%M+MUq{^m>f|*MtPci0R-o_p24C7{aB;ly z#&D)ACxbfwS&cwsfy~!B{r6DtGT)dUjfpM8jM%y{ZcCp<#RHnLhubE`y5~W@K~raWJ`? z7xvavC}d%nn|H{3`Qrm8)zt_}UJXszq6wdRJ0YPQFnN?+)KneilmP#-nUs>LlMu*4 z0N&OijAti-qVvi$aY)6*&8ydEaPjnB1yu`D6~vSX;O_<$va!o%Zg)2o{>F9cGQd?J zW$r;Np0)cx(r&~H!YDT^huu^K!Y*D4AG~U_T{wL1-5q)3PjOBkh$R&T$CUR0tlc!b zQ#Fyv#bqFA{#gUHIPg$5Y=>7=m^`H~g+vtB;;!qto2;qpmMSm?-dLc&XZ%%EioHxgp1z2ff^@9uLl6JL}Rg`_9>AApTCOZJ|_)yPYOF9M50z`kJB8 zT*=S^^oiH9a@q{j#W|lBdpd<;F_hMsri=&0AypmkVe^8KhvcH!k;ush#yo zVl9oI#JS0q1mAvZaMJ|AYFMo@ZXXT@I_K)gpOn%AZf0Mc+b3soM9f1IQ;5qREaz};&6SPK{v-u-5~N(xqzE zxS+7so>`hG8C#!_w+0(_2-cUfZ^oZga|3QEkmx=X##-#|RP&*@?0G6G8Oa2GtYqcS zFf~;dK26;wO;)<|60$e=6p~sbX;9dHbs!-Z;kfLHB2wx*YIm5VPO|B1v7S$ByumJe zjhlbn@K**!G^)4J^vMikTTNO2W35-0tI}e8E$fqempOjFd+Jl2;?~6KuIq8lKp1uB-1~Swrkw`kx+Sw%v&cY~ z4xNo66pkcPL0=V`vSm2w_t*rN%wsiX>RTf zfb~oPm`MS^S}X-n3=R!bL>_ShD1xLtUfZ{W6eypDfSwYNqNIaE>`WO*F+3`7Dd`1L zc&$)Gj-%U2T)RGvidjnffjU1xmy2m6G3qOapJa*}1IX@-jgVxku)4hNhs=wRB9>() z0`k1llq`9oxuX+(SU1*Fr|-DKA8hn*ICfrNKumv3&ymX}iE{=l#rEjakOW5c7r#wzk^iM+gmMA_XJTM@8$#u;!RZ7K6Hk}ulRAaP)^qyp0C2h#Vq9HN)}BSOvKO4Xqs* zMGheegj=mlhTpXZ2&P;mKGVJ>L_p1I5eXFGu6j`*lOnvq?J1B)GYG@5_l!gy1t>q( zmj{442iM|HCi!OxIRP$g`&9Ex`<+qwhn38<j~8E*ndawswW#eJa`()puPb@cCwW@Ezm=jK$il zcdg;(_o@-9n};aF22z)lw@0W7?;n1+hEk7_hD)4QBU7L02m{I*($+xKiozQn@{tLG z0HEt02Le1Hcy!1yWs)9m2`;U~R4cia1MEr*5S13loNC46z-dLLWHgcjD410u0*^Gd|zflif!6X_|27~p|Vclc@&*uSGTJ9`cic1;Y=A!diT>r6%% zkTE8NCH$Zc69wJcHO#b++B!y(OZ&m0c^9X`O-e^2TYBE7ei{+B6zZK)Fqqb~Kce2-?Bv^fM?lA5i#-Ai$Sw3S0cX+Bcc# zu|UArj#54LAhDW2QT76*%mX@yfucWy-xUM#(;dz&)d8TZgR6v)zcGOps9Dn}rD}Tz z!=sLl=O0Z$vVc{f(5zRL3E8ZnHdB@l?*rDyPh3F($pT(;-vkMq1*24^-U3G@;PgPc z!}Pfw2f=>A-hfe`!B#@Zm+W2ui?w1gPqBg)?NFV9M`P^OM4f z0|zR0&VgY+!LqN<=8x}lwS&+%K;4;X3rDw>vBh*`l0u%o#hzEwm$1bz(dg-pkvJgP zcZnB@XB4Ul)66)E<@q~{THh_WzNTSSdm;>AP7&l=19R`8wB5fV4R56|qQ!&6MDIpGlONyEQZ3iFRfj`)B2M!8sjF32p zDHJ%W02q*-ICDxU0@%HW$jd_!;t&`Z#1Pnpmw>>)lMApb34wvf282@qsD>v_(+CHi zU&zaYBtRmL7_5=Al?_1ybv4vfg-9L1|2jtiRbUpT(DQ0)s#dN@TZlA>GCw$(0HuSG ztAIxVXpjV|j&yghL4rY{7lG3T=>D03xRk8)zdbVmbNYQ|ke=Xi$!PF&XjcuqM*kj7 zczpLwd&9$8Cu+1}MbE;H(P+PpIm9Kce#u$gAU5}?xWJcyY_-@TuJGF=21PSRnAQ7T zoEcaW&fDfQe}3h)(2@F?W5e%eW=+>8y9N9})uEW5L1b?(m>dhB$}(a2I@uH!6=7#d zK|-~7h}7}W7w6())zh1Z!^wwzKSnwx({D1?R8d2=cFy)GMb;nM%Z#tQ$^|>5pAjCnWS!~n06=E)j;tpajwh4roQXR$dj@w;=%IFZLXbT$i?vy z{%=vTbhVMOmduQkM>i|QYx!(~aOXpmn=#`>%)S?;4+-2G5uI=~vUL=(xhEhVDDutg z&=;+@*B5)CChcAHZ6}*L+pmez@jMP=<}))2iHf6-_}bN_I~mc`E=CQH;vR#2OlH2y z`W1T!)%Ei#gO?NYOD?&OGO{vaP9jdV0{#BxKU42*xF=Wy`_D70b8I%O8~Y`nIP@YH zSvt5K>f~_hkogRWe)X@=4om2v@Rzl2)OZ*6Dqjo3#xY?#p=To_W;!I9HwB?T7Pd2~ z{nf7fb{W=wTKI0|xe_OH4+m4TfTK~~x$2Frony{hR1=w@n;aCoZtSONfAZ9ZLE|;l z+j1{JE+mwiw$g`@C98%gZ)T=!o^05CG+3E%XK0hQJHg~|4(AzVKlVccXK5kFd~Aif z7x2fMHA%NRB6^aO(s#N7ck#v*7j|1u^Y};GXsU}>&>3{jru@8iSQ2tbLz#41ndJv5 z{p%xTuW2g|o%}+2SVbW0h>IocOCUoGi8_RlA)xdDQ+!~)CI1t0w+FP6LDJ4lxLY<~ zBxNW>Z?#z-86hzgqs|BrT%>GQrU|~?N^{CE6bDgjWqop4-B8MJ`I`9Lj5rPA%Htmb?Agz`2z!cy6scm6x?FRa_g_XpmiiGw$zh38Xe47 z|8`MahC?*4{PlfjQeT?+V7-RKFSI6ZZ%~f*U*6JUx+{cj^otrv4;s+SF)tDpBhl;r$15bzuYfygK~{l z7jg4pM^ERELpb4c%;^!L2;&E--E2RKf6%VVY@Z?z%Cd=sMKk$dVC6eie7Kmon58dT z_BL~Kq*ZQ_$@6mqtTW*!ny@dd9bsjZJ~TdbK4fyy_#o~voO7AXbu;;kVM2|Uzg%oHzmg-q6k*s^&2pOFU9ZwY= zy0x&2jm{4PDnd-o%d5-lvGUgP8fc+-qy=yBa5{0$@uzcr;;Mnfy+zob#L8d2Fsh2? z%jEpbUuW>(tjXCU0*ee+g!%<=XUz;ebHj`!FRflOd!AHilI5xHqP3JqXYp3+PJW}o zwVX@YxJy$Zy(Qw82NANDWYxTiu@TE;-!&P8o5IG_z8ZuJ>32=$J(7X&^xf)_pbM8@44)?OQ{8OS?Nz})OLc` zA5mX!(barVtTy?m(m!DV)5pG~;Fc0|^QWzB(WgRKatP_rws=cWy z?E=4w>b1mnFxb2k*OmC>ZzIa+Sf;@ud0$pER za)To>`dY6@kjQb7YT?YQ%qC5yPQ}yZ+xAYFbo3{Cd`pNmy}glrpUuj%{A7_2WzFkD zX3J)uE1ylecj3`?=$7(f8;`z>8ywbk^|c>%gMzYyTC+N=dV5~OdWr^?$RnC5ZJbc) z9;$L)via`kCRPUq>#xrGe%xYY%+*QJiD=9AYF^n~IWrkmIbDf0n=#KpQB-cnr0)X#G<(Aj?Z{bxQJs?wguW~Z5BT%DW zfzw&bvUNSCdga9A@kx){f!zV!b6Fd2A{!EJ<2j;_ojhK6%%91M-hig3E}+WtZD0af zAy*Ao8`pw*vikXl-r1+J=^v(MUvKejiEq)e$+tFcwg~SFqi=L;vH6z$Ep_ZMu5g?e zou|*Bz))cBExdzH>hV11oyDzd_2xaM4@_T_S>kdg-)&#+ewy>l z+jyo>^qN9#Gp6HKX>h5-O@DzBQDLZWr6|f=FZN1L%EO{HzZuhrQ{fs-aOn!iC&OVw z0v}~69OiSM>T>9K@-ph=>j-Io#!R4VH}7{C-@lF@x>tgH(Vpelb*25v*MXVgk#aTx zW6>@s$1wZL8dnM%&9~8sa*4CA^sS5y$|GLrywthIY&K|))GsZa#=B{+X+;_9`sAbL za)&-tdsP?CE`98~^7yjxwGDKkjWIhd1P@Gmcw`f@( zBxf^H#IJ%;fme&WXT;ly3!r~ihGz^eYD zl@qY|1s3E4QX)nR>FAEcIoMcHLJvqGV7h<5u0vR~|6dRQD{635e-MbMVjOM%6U#rZ z5&g$uNd9{kJ!?k?7dPa8Ao9c_QIuj3m;|NR?;k{3N=iZsf`a_ki349M;17cSt%FGe zUsC_7lNJYy^QTT0_&oYUCn*kGQuzrWR7 WaaLFyp@OnfQoyA&UJX42<^KQ>C65&V literal 0 HcmV?d00001 diff --git a/cwiling2023/fig/mseB.pdf b/cwiling2023/fig/mseB.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3fbb09992fe9925cfa5b87071d637bd0615a9d1b GIT binary patch literal 4630 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 X28Ty@;=gA`T1pBI5)#rd&;>{CT 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 qF3tr{Eq!SB0XD_sNdT=a^YdFQ? literal 0 HcmV?d00001 diff --git a/cwiling2023/fig/mse_brcancer.pdf b/cwiling2023/fig/mse_brcancer.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6eecf3dc495b76abca78a32668c7a9923e9044fe GIT binary patch literal 4793 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 literal 0 HcmV?d00001 diff --git a/cwiling2023/fig/multi_testC2.txt b/cwiling2023/fig/multi_testC2.txt new file mode 100644 index 0000000..69a5d48 --- /dev/null +++ b/cwiling2023/fig/multi_testC2.txt @@ -0,0 +1,17 @@ + Var P-value KM P-value Cox P-value RSF P-value P.obs.+LM P-value Oracle + [1,] X1 1 0.62 1 0.588 1 + [2,] X2 0.982 0.007 ** 0 *** 0.012 * 0.001 ** + [3,] X3 0.963 0.545 1 0.489 0.467 + [4,] X4 0.891 1 0.863 1 0.145 + [5,] X5 1 0.105 0.466 0.054 . 0.102 + [6,] X6 1 0 *** 0.001 ** 0 *** 0 *** + [7,] X7 1 0.453 0.54 0.804 0.225 + [8,] X8 1 0.958 1 0.677 0.576 + [9,] X9 1 0.087 . 0.05 . 0.067 . 0.046 * +[10,] X10 0.893 0.992 1 1 0.46 +[11,] X11 1 1 1 1 1 +[12,] X12 1 1 1 1 1 +[13,] X13 1 1 1 1 1 +[14,] X14 1 1 1 1 1 +[15,] X15 0.98 1 1 0.893 1 +[1] Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 diff --git a/cwiling2023/fig/multi_test_brcancer.txt b/cwiling2023/fig/multi_test_brcancer.txt new file mode 100644 index 0000000..4032fff --- /dev/null +++ b/cwiling2023/fig/multi_test_brcancer.txt @@ -0,0 +1,10 @@ + Var P-value KM P-value Cox P-value RSF P-value P.obs.+LM +[1,] hormon 1 0.001 ** 0.166 0.001 ** +[2,] x1 1 1 1 1 +[3,] x2 1 0.203 1 0.093 . +[4,] x3 1 0.989 0.498 1 +[5,] x5 1 1 0.329 1 +[6,] x6 1 0 *** 0.359 0 *** +[7,] x7 1 1 1 1 +[8,] x4a 1 0 *** 0.516 0 *** +[1] Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 diff --git a/cwiling2023/fig/pk.txt b/cwiling2023/fig/pk.txt new file mode 100644 index 0000000..07c1099 --- /dev/null +++ b/cwiling2023/fig/pk.txt @@ -0,0 +1,5 @@ + Z1 Z2 Z3 +KM 1.000 1.000 1.000 +Cox 0.871 0.795 0.488 +RSF 0.815 0.715 0.436 +P.obs.+LM 0.844 0.698 0.458 diff --git a/cwiling2023/fig/split_all.pdf b/cwiling2023/fig/split_all.pdf index 62b2398b7672dc68281e17fe16836eb0ec817311..8ca1ea337cf9c30feba455ddbd5f0b294afb3f29 100644 GIT binary patch delta 23 bcmZp*XtkJN#bRP)X*khN0!(j=S}hF#Pzna6 delta 23 bcmZp*XtkJN#bRV&X*AJJ0!(j=S}hF#PrwGB diff --git a/cwiling2023/fig/testB.txt b/cwiling2023/fig/testB.txt new file mode 100644 index 0000000..7796683 --- /dev/null +++ b/cwiling2023/fig/testB.txt @@ -0,0 +1,93 @@ + +*Estimation of the mean squared error on 10 folds: + Mean and quantiles are computed and displayed as follows: + Mean [0.1-quantile, 0.9-quantile] + +*Mean and quantiles of the range of the prediction intervals + (centered on the predictions) displayed as follows: + Mean [0.1-quantile, 0.9-quantile] + +*Displaying results of LOCO analysis. Notes: + + - P-values are from a one-sided test of the target parameter + (mean or median excess test error) being equal to zero versus + greater than zero. + - Confidence intervals are from inverting the two-sided version + of this test. + - Bonferonni correction: no. + +------- KM ------- + +Mean squared error estimation: + + 1.685 [ 1.552 , 1.776 ] + +Range of the prediction interval around the prediction: + + 3.242 [ 3.204 , 3.28 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + 1 0.195 0.487 0.542 + 2 0.047 0.501 0.556 * + 3 0.773 0.46 0.515 + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 + +------- Cox ------- + +Mean squared error estimation: + + 0.062 [ 0.049 , 0.076 ] + +Range of the prediction interval around the prediction: + + 0.794 [ 0.76 , 0.828 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + 1 0 0.86 0.899 *** + 2 0 0.776 0.822 *** + 3 0.986 0.436 0.491 + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 + +------- RSF ------- + +Mean squared error estimation: + + 0.07 [ 0.055 , 0.087 ] + +Range of the prediction interval around the prediction: + + 0.89 [ 0.871 , 0.907 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + 1 0 0.881 0.917 *** + 2 0 0.785 0.829 *** + 3 1 0.411 0.465 + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 + +------- P.obs.+LM ------- + +Mean squared error estimation: + + 0.177 [ 0.167 , 0.185 ] + +Range of the prediction interval around the prediction: + + 1.394 [ 1.389 , 1.399 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + 1 0 0.828 0.87 *** + 2 0 0.692 0.741 *** + 3 0.683 0.464 0.52 + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 diff --git a/cwiling2023/fig/testC.txt b/cwiling2023/fig/testC.txt new file mode 100644 index 0000000..4d4a334 --- /dev/null +++ b/cwiling2023/fig/testC.txt @@ -0,0 +1,172 @@ + +*Estimation of the mean squared error on 10 folds: + Mean and quantiles are computed and displayed as follows: + Mean [0.1-quantile, 0.9-quantile] + +*Mean and quantiles of the range of the prediction intervals + (centered on the predictions) displayed as follows: + Mean [0.1-quantile, 0.9-quantile] + +*Displaying results of LOCO analysis. Notes: + + - P-values are from a one-sided test of the target parameter + (mean or median excess test error) being equal to zero versus + greater than zero. + - Confidence intervals are from inverting the two-sided version + of this test. + - Bonferonni correction: no. + +------- KM ------- + +Mean squared error estimation: + + 0.409 [ 0.328 , 0.534 ] + +Range of the prediction interval around the prediction: + + 1.756 [ 1.719 , 1.795 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + 1 0.729 0.424 0.535 + 2 0.777 0.419 0.53 + 3 0.55 0.441 0.551 + 4 0.993 0.364 0.473 + 5 0.956 0.388 0.498 + 6 0.588 0.437 0.548 + 7 0.236 0.469 0.579 + 8 0.267 0.466 0.576 + 9 0.003 0.536 0.644 ** + 10 0.105 0.487 0.597 + 11 0.97 0.382 0.492 + 12 0.737 0.424 0.534 + 13 0.141 0.481 0.591 + 14 0.367 0.456 0.566 + 15 0.246 0.468 0.578 + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 + +------- Cox ------- + +Mean squared error estimation: + + 0.182 [ 0.144 , 0.225 ] + +Range of the prediction interval around the prediction: + + 1.466 [ 1.34 , 1.593 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + 1 0.798 0.417 0.527 + 2 0.418 0.452 0.562 + 3 0.465 0.448 0.558 + 4 0.959 0.387 0.497 + 5 0.099 0.488 0.598 . + 6 0 0.59 0.697 *** + 7 0.041 0.503 0.612 * + 8 0.699 0.427 0.538 + 9 0.159 0.478 0.588 + 10 0.245 0.468 0.578 + 11 1 0.332 0.44 + 12 0.616 0.435 0.545 + 13 0.787 0.418 0.528 + 14 0.784 0.418 0.529 + 15 0.66 0.431 0.541 + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 + +------- RSF ------- + +Mean squared error estimation: + + 0.184 [ 0.133 , 0.251 ] + +Range of the prediction interval around the prediction: + + 1.535 [ 1.375 , 1.699 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + 1 0.946 0.391 0.501 + 2 0 0.571 0.676 *** + 3 0.567 0.439 0.549 + 4 0.809 0.416 0.526 + 5 0.058 0.498 0.607 . + 6 0 0.556 0.664 *** + 7 0.384 0.455 0.565 + 8 0.871 0.407 0.517 + 9 0.19 0.474 0.584 + 10 0.922 0.398 0.508 + 11 0.593 0.437 0.547 + 12 0.084 0.491 0.6 . + 13 0.505 0.444 0.555 + 14 0.716 0.426 0.536 + 15 0.765 0.421 0.531 + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 + +------- P.obs.+LM ------- + +Mean squared error estimation: + + 0.19 [ 0.149 , 0.231 ] + +Range of the prediction interval around the prediction: + + 1.513 [ 1.409 , 1.617 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + 1 0.734 0.424 0.534 + 2 0.334 0.459 0.57 + 3 0.991 0.367 0.476 + 4 0.991 0.367 0.476 + 5 0.176 0.476 0.586 + 6 0 0.606 0.712 *** + 7 0.162 0.478 0.588 + 8 0.56 0.44 0.55 + 9 0.144 0.481 0.59 + 10 0.168 0.477 0.586 + 11 0.999 0.338 0.447 + 12 0.754 0.422 0.532 + 13 0.942 0.392 0.502 + 14 0.888 0.404 0.514 + 15 0.459 0.448 0.558 + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 + +------- Oracle ------- + +Mean squared error estimation: + + 0.115 [ 0.085 , 0.16 ] + +Range of the prediction interval around the prediction: + + 1.284 [ 1.276 , 1.295 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + 1 0.144 0.48 0.591 + 2 0.277 0.465 0.575 + 3 0.757 0.422 0.532 + 4 0.074 0.493 0.603 . + 5 0.67 0.43 0.54 + 6 0.001 0.553 0.66 *** + 7 0.73 0.424 0.535 + 8 0.932 0.395 0.505 + 9 0.206 0.472 0.582 + 10 0.965 0.385 0.494 + 11 0.86 0.409 0.519 + 12 0.997 0.354 0.463 + 13 0.997 0.353 0.462 + 14 0.98 0.377 0.487 + 15 1 0.331 0.439 + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 diff --git a/cwiling2023/fig/test_brcancer.txt b/cwiling2023/fig/test_brcancer.txt new file mode 100644 index 0000000..6393925 --- /dev/null +++ b/cwiling2023/fig/test_brcancer.txt @@ -0,0 +1,113 @@ + +*Estimation of the mean squared error on 20 folds: + Mean and quantiles are computed and displayed as follows: + Mean [0.1-quantile, 0.9-quantile] + +*Mean and quantiles of the range of the prediction intervals + (centered on the predictions) displayed as follows: + Mean [0.1-quantile, 0.9-quantile] + +*Displaying results of LOCO analysis. Notes: + + - P-values are from a one-sided test of the target parameter + (mean or median excess test error) being equal to zero versus + greater than zero. + - Confidence intervals are from inverting the two-sided version + of this test. + - Bonferonni correction: no. + +------- KM ------- + +Mean squared error estimation: + + 461766.728 [ 312824.468 , 601867.97 ] + +Range of the prediction interval around the prediction: + + 2039.571 [ 1978.347 , 2099.472 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + hormon 0.234 0.46 0.602 + x1 0.943 0.362 0.503 + x2 0.912 0.371 0.512 + x3 0.244 0.459 0.601 + x5 0.255 0.457 0.6 + x6 0.798 0.394 0.535 + x7 0.744 0.4 0.543 + x4a 0.929 0.367 0.507 + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 + +------- Cox ------- + +Mean squared error estimation: + + 375818.596 [ 241892.718 , 466251.302 ] + +Range of the prediction interval around the prediction: + + 1878.598 [ 1789.41 , 1965.899 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + hormon 0.044 0.503 0.646 * + x1 0.523 0.426 0.569 + x2 0.324 0.45 0.589 + x3 0.996 0.316 0.456 + x5 0.934 0.365 0.506 + x6 0 0.659 0.801 *** + x7 0.997 0.314 0.454 + x4a 0 0.682 0.815 *** + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 + +------- RSF ------- + +Mean squared error estimation: + + 366277.443 [ 248253.151 , 535131.028 ] + +Range of the prediction interval around the prediction: + + 1823.3 [ 1742.652 , 1902.719 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + hormon 0.617 0.416 0.558 + x1 0.322 0.448 0.592 + x2 0.7 0.407 0.548 + x3 0.972 0.348 0.489 + x5 0.236 0.461 0.601 + x6 0.023 0.515 0.656 * + x7 0.411 0.438 0.582 + x4a 0.478 0.432 0.573 + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 + +------- P.obs.+LM ------- + +Mean squared error estimation: + + 373701.461 [ 253038.889 , 475629.95 ] + +Range of the prediction interval around the prediction: + + 1918.779 [ 1832.49 , 2005.545 ] + +Sign test results: + + Var P-value LowConfPt UpConfPt + hormon 0.046 0.502 0.645 * + x1 0.116 0.481 0.619 + x2 0.203 0.466 0.604 + x3 0.943 0.362 0.503 + x5 0.994 0.326 0.464 + x6 0 0.638 0.781 *** + x7 1 0.292 0.43 + x4a 0 0.71 0.84 *** + +Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 diff --git a/cwiling2023/fig/vimpGB.pdf b/cwiling2023/fig/vimpGB.pdf new file mode 100644 index 0000000000000000000000000000000000000000..196728460473a5c85014ec29b40879c1a13ea50f GIT binary patch literal 5448 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 literal 0 HcmV?d00001 diff --git a/cwiling2023/fig/vimpGC2.pdf b/cwiling2023/fig/vimpGC2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..22b55d5fda6459fb24a7de5d8e6bf51a059265b0 GIT binary patch literal 9152 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 literal 0 HcmV?d00001 diff --git a/cwiling2023/fig/vimpG_brcancer.pdf b/cwiling2023/fig/vimpG_brcancer.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c37e392de440d445092670184d7f0b23cd7a073e GIT binary patch literal 6706 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 jOBzTd8hCl&^6OVYq0Mj>{BpIRd_qD1R@O&P literal 0 HcmV?d00001 diff --git a/cwiling2023/fig/vimpLB.pdf b/cwiling2023/fig/vimpLB.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a743df0971c6f725212829d34f9752f10c614f99 GIT binary patch literal 437602 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 z N%e(%Y2GDK;1e( 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

;EA1%(|4e;dJ~4}B$w}8nbvWQA)KFIJoAN7 z+UWc3^dB1)M4J^vw>tQnzI>+pWw!g}&Ivlx(!*?ycmBzTCn7t zO79@k3pg*j;aP~$tlf4z*R1Efa6)5^*zD@C`+UeaWPAsHp14lZ!eXZbVzmQer&d6> zRzN4WxSLzt*ez@BmQ~U$s#zA9)9UPL^|NrH>3uECD^~~XSb}oTlOb( zyAJ+^!wNJv`+>K;fvDq@tm9M)a({&HJt8A8n-Q3KBIM;nXgKo`&NmroLZ29!$|c## zC52gCaaPx<1<|bqv1gw@n+F(kr`>Nhy6Tmx%hjsOh2AQ~-YPpzWup>Svl3PzCb<}s zoXFTqX6z-ZkS42;4k>>2D;JH(uc~ds?kAr4Njq(3Cn~!WHN?%RT<3kX>%6oE!Z-kl zMdTGcUkRMXTX(2&I@dg%8@KG@9b7nr#K$pjfAyPnTG@}cNy)?R0Z*!g`P{M0=WZb) z?%(*+kb8Tr+1PL1EiPM^_kpV3Y|)^0u4VbM!;K375_CLtM

KSdC@BZ!?-KF+O)@$zCt$5q(I(P{0*m($NF(K33 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ȨY)*M7G0n`K9`?W6aGDII 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 z�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%0D)7f5^ObNr$=P?3Ud;L+@gGxAHf{ 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 literal 0 HcmV?d00001 diff --git a/cwiling2023/fig/vimpLD1.pdf b/cwiling2023/fig/vimpLD1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a8a8673fe7c7d910013da3eb5ec03c80beb65ef4 GIT binary patch literal 120456 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νbLA% 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 literal 0 HcmV?d00001 diff --git a/cwiling2023/fig/vimpL_brcancer.pdf b/cwiling2023/fig/vimpL_brcancer.pdf new file mode 100644 index 0000000000000000000000000000000000000000..72f7334133d9fbe2827c82deffc2e673462973c3 GIT binary patch literal 88458 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 ID--^I0rBcebN~PV literal 0 HcmV?d00001 From 626829a96179dd3074f01a2ea2117b708c5a3531 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 27 Sep 2023 10:47:23 +0200 Subject: [PATCH 31/57] Update fig.loco.surv.R --- cwiling2023/fig.loco.surv.R | 2 -- 1 file changed, 2 deletions(-) diff --git a/cwiling2023/fig.loco.surv.R b/cwiling2023/fig.loco.surv.R index aa4a241..21d3e3f 100644 --- a/cwiling2023/fig.loco.surv.R +++ b/cwiling2023/fig.loco.surv.R @@ -22,8 +22,6 @@ libraries_sources = function(){ } libraries_sources() -setwd("~/GitHub/conformal/cwiling2023") - ######################## # SIMULATION FUNCTIONS # ######################## From 247e1ebd4ddd47a2d2ea47f81269bd3661588b69 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 27 Sep 2023 10:48:37 +0200 Subject: [PATCH 32/57] Update fig.loco.surv.R --- cwiling2023/fig.loco.surv.R | 3 --- 1 file changed, 3 deletions(-) diff --git a/cwiling2023/fig.loco.surv.R b/cwiling2023/fig.loco.surv.R index 21d3e3f..c74f5ee 100644 --- a/cwiling2023/fig.loco.surv.R +++ b/cwiling2023/fig.loco.surv.R @@ -2,9 +2,6 @@ # LIBRARIES # ############# -library(devtools) -install_github(repo="ariane-cwi/conformal", subdir="conformalInference") - libraries_sources = function(){ library(survival) library(FastPseudo) From 22192098f64f5dbca992b15ce71de55da82af9b7 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Thu, 28 Sep 2023 15:06:58 +0200 Subject: [PATCH 33/57] Alpha check error --- conformalInference/R/roo.R | 2 +- conformalInference/R/split.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conformalInference/R/roo.R b/conformalInference/R/roo.R index 0a690b7..f0aad2c 100644 --- a/conformalInference/R/roo.R +++ b/conformalInference/R/roo.R @@ -276,7 +276,7 @@ conformal.pred.roo.surv = function(x, t, d, tau, train.fun, predict.fun, mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun) # Check alpha - if (is.null(alpha) || !is.numeric(alpha) || alpha<0 || alpha>1) + if (is.null(alpha) || !is.numeric(alpha) || sum(alpha<0) > 0 || sum(alpha>1)>0) stop("alpha must be a vector of numbers between 0 and 1") alpha = unique(alpha) diff --git a/conformalInference/R/split.R b/conformalInference/R/split.R index 6cf8f23..bee5ec5 100644 --- a/conformalInference/R/split.R +++ b/conformalInference/R/split.R @@ -264,7 +264,7 @@ conformal.pred.split.surv = function(x, t, d, tau, x0, train.fun, predict.fun, mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun) # Check alpha - if (is.null(alpha) || !is.numeric(alpha) || alpha<0 || alpha>1) + if (is.null(alpha) || !is.numeric(alpha) || sum(alpha<0) > 0 || sum(alpha>1)>0) stop("alpha must be a vector of numbers between 0 and 1") alpha = unique(alpha) From 7f2e86487008544214c593ed0fa6d6003bad4e1d Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Thu, 28 Sep 2023 15:25:53 +0200 Subject: [PATCH 34/57] Update plot.rmst.pred range should not be an option --- conformalInference/R/rmst.pred.R | 16 ++++++++-------- conformalInference/man/plot.rmst.pred.Rd | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index b344c09..d363a6e 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -326,12 +326,12 @@ print.rmst.pred = function(x,elements=c("all"),digits=3, #' Plot function for rmst.pred object. #' #' @param x The rmst.pred object. -#' @param elements Selection among "mse", "range", "vimpL", "vimpG" or "all" -#' describing which elements of the analysis to show. If "mse" then the -#' results on the estimation of the mean squared error are displayed; if -#' "vimpL" then results of local variable importance are displayed; if "vimpG" -#' then results of global variable importance are displayed. If "all" then the -#' results from all elements are displayed. Default is "all". +#' @param elements Selection among "mse", "vimpL", "vimpG" or "all"describing +#' which elements of the analysis to show. If "mse" then the results on the +#' estimation of the mean squared error are displayed; if "vimpL" then results +#' of local variable importance are displayed; if "vimpG" then results of +#' global variable importance are displayed. If "all" then the results from +#' all elements are displayed. Default is "all". #' @param model.names Names given to the different learning models given to #' train.fun. Default is NULL. #' @param varsL A list specifying the variables (indices between 1 and p) @@ -350,10 +350,10 @@ plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, varsL=0, ...) { if(is.null(model.names)){model.names = paste("Model",1:m)} if(!is.character(model.names) || length(model.names)!=m) stop("model.names must be a vector of strings of size m") - if(!("mse" %in% elements) && !("range" %in% elements) && + if(!("mse" %in% elements) && !("vimpL" %in% elements) && !("vimpG" %in% elements) && !("all" %in% elements)) - stop("elements must contain at least mse, range, vimpL, vimpG or all") + stop("elements must contain at least mse, vimpL, vimpG or all") if(("mse" %in% elements || "all" %in% elements) && !is.null(x$mse)){ V = nrow(x$mse) diff --git a/conformalInference/man/plot.rmst.pred.Rd b/conformalInference/man/plot.rmst.pred.Rd index eb432b8..a7d1ed9 100644 --- a/conformalInference/man/plot.rmst.pred.Rd +++ b/conformalInference/man/plot.rmst.pred.Rd @@ -9,12 +9,12 @@ \arguments{ \item{x}{The rmst.pred object.} -\item{elements}{Selection among "mse", "range", "vimpL", "vimpG" or "all" -describing which elements of the analysis to show. If "mse" then the -results on the estimation of the mean squared error are displayed; if -"vimpL" then results of local variable importance are displayed; if "vimpG" -then results of global variable importance are displayed. If "all" then the -results from all elements are displayed. Default is "all".} +\item{elements}{Selection among "mse", "vimpL", "vimpG" or "all"describing +which elements of the analysis to show. If "mse" then the results on the +estimation of the mean squared error are displayed; if "vimpL" then results +of local variable importance are displayed; if "vimpG" then results of +global variable importance are displayed. If "all" then the results from +all elements are displayed. Default is "all".} \item{model.names}{Names given to the different learning models given to train.fun. Default is NULL.} From d74667c18a2b3d47b44fd407a59bd10488826557 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 8 Nov 2023 14:51:27 +0100 Subject: [PATCH 35/57] Correction wrss p should have been prop --- conformalInference/R/rmst.pred.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index d363a6e..8795b6a 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -500,7 +500,7 @@ wrss = function(x,t,d,tau,train.fun,predict.fun,w=NULL,cens.model="km", mse = purrr::map2(folds,fits, ~ apply(w[.x]*(pmin(t[.x],tau) - .y)**2,2,sum)/length(w[.x])) mse = matrix(unlist(mse),nrow=n.folds,byrow=T) }else{ - if(p==0){ + if(prop==0){ # Train and fit on full data set out.all = train.fun(x,t,d,tau) fit.all = matrix(predict.fun(out.all,x,tau),nrow=n) From 68c2103bfa8c8c374f9adaf13537e9e68627f56f Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 13 Dec 2023 12:11:15 +0100 Subject: [PATCH 36/57] varsL and varsG rmst.pred now allows to compute local vimp and global vimp over different sets of variables --- conformalInference/R/rmst.pred.R | 17 ++++++++++------- cwiling2023/fig.loco.surv.R | 11 ++++++----- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 8795b6a..673bc2b 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -38,9 +38,12 @@ #' Its only input argument should be out: output produced by train.fun. #' @param alpha Miscoverage level for the prediction intervals, i.e., intervals #' with coverage 1-alpha are formed. Default for alpha is 0.1. -#' @param vars A list specifying the variables (indices between 1 and p) -#' for which variable importance should be investigated. Alternatively, if -#' set equal to 0, the default, then all variables are investigated. +#' @param varsL A list specifying the variables (indices between 1 and p) +#' for which local variable importance should be investigated. Alternatively, +#' if set equal to 0, the default, then all variables are investigated. +#' @param varsG A list specifying the variables (indices between 1 and p) +#' for which global variable importance should be investigated. Alternatively, +#' if set equal to 0, the default, then all variables are investigated. #' @param bonf.correct Should a Bonferroni correction be applied to the p-values #' and confidence intervals? Default is FALSE. #' @param mad.train.fun A function to perform training on the observed absolute @@ -112,8 +115,8 @@ rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, cens.model="km", CV=T, n.folds=10, prop=0.1, active.fun=NULL, alpha=0.1, - rho=0.5, vars=0, bonf.correct=FALSE, mad.train.fun=NULL, mad.predict.fun=NULL, - split=NULL, seed=NULL, out.roo.surv=NULL, verbose=FALSE, + rho=0.5, varsL=0, varsG=0, bonf.correct=FALSE, mad.train.fun=NULL, + mad.predict.fun=NULL, split=NULL, seed=NULL, out.roo.surv=NULL, verbose=FALSE, error=T,roo=T,vimpL=T,vimpG=T) { # Set up data @@ -193,7 +196,7 @@ rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, cat(sprintf(paste("%sComputing local variable importance ...\n"),txt)) } out.loco.roo.surv = loco.roo.surv(x, t, d, tau, train.fun, predict.fun, - vars=vars, alpha=alpha, out.roo.surv=out.roo.surv, verbose=F) + vars=varsL, alpha=alpha, out.roo.surv=out.roo.surv, verbose=F) out$out.loco.roo.surv=out.loco.roo.surv out$m = ncol(out.loco.roo.surv$out.roo.surv$pred) } @@ -204,7 +207,7 @@ rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, cat(sprintf(paste("%sComputing global variable importance ...\n"),txt)) } out.loco.surv = loco.surv(x, t, d, tau, train.fun, predict.fun, - active.fun=active.fun, vars=vars, alpha=alpha, bonf.correct=bonf.correct, + active.fun=active.fun, vars=varsG, alpha=alpha, bonf.correct=bonf.correct, split=split, verbose=F) out$out.loco.surv=out.loco.surv out$m = length(out.loco.surv$active) diff --git a/cwiling2023/fig.loco.surv.R b/cwiling2023/fig.loco.surv.R index c74f5ee..78b8a65 100644 --- a/cwiling2023/fig.loco.surv.R +++ b/cwiling2023/fig.loco.surv.R @@ -19,6 +19,7 @@ libraries_sources = function(){ } libraries_sources() + ######################## # SIMULATION FUNCTIONS # ######################## @@ -571,7 +572,7 @@ sink() set.seed(3) D2 = simulate(n) out.D1 = rmst.pred(rbind(D1$x,D2$x), c(D1$tobs,D2$tobs), c(D1$delta,D2$delta), - tau, train.fun.3, predict.fun.3, split=1:n, vars=0, + tau, train.fun.3, predict.fun.3, split=1:n, varsL=0, varsG=0, rho=0.5, bonf.correct=FALSE, seed=NULL, verbose=TRUE, error=F, roo=F,vimpL=T, vimpG=T) @@ -642,7 +643,7 @@ df = simulate(n,seed=40) V = 10 out.fmw.B = rmst.pred(df$x, df$tobs, df$delta, tau, train.fun.4, predict.fun.4, - n.folds=V, cens.model="km", alpha=0.1, vars=0, + n.folds=V, cens.model="km", alpha=0.1, varsL=0, varsG=O, seed=60, verbose=TRUE, rho=0.5) ### MSE ### @@ -695,7 +696,7 @@ df = simulate(n,seed=40) V = 10 out.fmw.C = rmst.pred(df$x, df$tobs, df$delta, tau, train.fun.4.2, predict.fun.4.2, - n.folds=V, cens.model="km", alpha=0.1, vars=0, + n.folds=V, cens.model="km", alpha=0.1, varsG=0, seed=0, verbose=TRUE, rho=0.5, vimpL = F) ### MSE ### @@ -722,7 +723,7 @@ graphics.off() ## Re-computation of global vimp with another seed out.fmw.C2 = rmst.pred(df$x, df$tobs, df$delta, tau, train.fun.4.2, predict.fun.4.2, - n.folds=V, cens.model="km", alpha=0.1, vars=0, + n.folds=V, cens.model="km", alpha=0.1, varsG=0, seed=10, verbose=TRUE, rho=0.5, vimpL = F, error = F, roo=F) pdf(file="fig/vimpGC2.pdf",w=9,h=2.25) @@ -828,7 +829,7 @@ predict.fun.6 = function(out,x0,tau){predict.fun(out,x0,tau,pred.models=models)} out.brcancer = rmst.pred(x.brcancer, tobs.brcancer, delta.brcancer, tau.brcancer, train.fun.6, predict.fun.6, n.folds=20, cens.model="km", - alpha=0.1, vars=0, verbose=TRUE, seed=20, + alpha=0.1, varsL=0, varsG=0, verbose=TRUE, seed=20, error=T,roo=T,vimpL=T,vimpG=T,rho=0.5) ### MSE ### From a7ad4bbaf4c275074f59cd22917823a046edfb39 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:26:58 +0100 Subject: [PATCH 37/57] Update plot.rmst.pred for vimpL Not possible anymore to select variables to plot for vimpL --- conformalInference/R/rmst.pred.R | 14 +++++--------- cwiling2023/fig.loco.surv.R | 6 ++---- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 673bc2b..da5fe42 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -336,16 +336,12 @@ print.rmst.pred = function(x,elements=c("all"),digits=3, #' global variable importance are displayed. If "all" then the results from #' all elements are displayed. Default is "all". #' @param model.names Names given to the different learning models given to -#' train.fun. Default is NULL. -#' @param varsL A list specifying the variables (indices between 1 and p) -#' for which local variable importance should be plotted. Alternatively, if -#' set equal to 0, the default, then local variable importance is plotted for -#' all variables. +#' train.fun. Default is NULL. #' @param ... Other arguments (currently not used). #' #' @export -plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, varsL=0, ...) { +plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, ...) { n.folds = ifelse(is.null(nrow(x$mse)),1,nrow(x$mse)) if(is.null(x$m)) stop("Nothing to plot") @@ -376,12 +372,12 @@ plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, varsL=0, ...) { } if(("vimpL" %in% elements || "all" %in% elements) && !is.null(x$out.loco.roo.surv)){ - if (length(varsL) == 1 && varsL == 0){varsL = x$out.loco.roo.surv$vars} + varsL = x$out.loco.roo.surv$vars for (i in 1:m){ - for (j in varsL){ + for (j in 1:length(varsL)){ plot(x$x[,j],x$x[,j],ylim=range(c(x$out.loco.roo.surv$lo, x$out.loco.roo.surv$up)),xlab="Location",ylab="Interval", - main=paste(model.names[i], "- Var.",j),col=NA) + main=paste(model.names[i], "- Var.",varsL[j]),col=NA) cols = ifelse(x$out.loco.roo.surv$lo[,j,i] <= 0, 1, 3) segments(x$x[,j],x$out.loco.roo.surv$lo[,j,i], x$x[,j],x$out.loco.roo.surv$up[,j,i], diff --git a/cwiling2023/fig.loco.surv.R b/cwiling2023/fig.loco.surv.R index 78b8a65..a15e510 100644 --- a/cwiling2023/fig.loco.surv.R +++ b/cwiling2023/fig.loco.surv.R @@ -19,7 +19,6 @@ libraries_sources = function(){ } libraries_sources() - ######################## # SIMULATION FUNCTIONS # ######################## @@ -829,7 +828,7 @@ predict.fun.6 = function(out,x0,tau){predict.fun(out,x0,tau,pred.models=models)} out.brcancer = rmst.pred(x.brcancer, tobs.brcancer, delta.brcancer, tau.brcancer, train.fun.6, predict.fun.6, n.folds=20, cens.model="km", - alpha=0.1, varsL=0, varsG=0, verbose=TRUE, seed=20, + alpha=0.1, varsL=c(2,4,5,6,7), varsG=0, verbose=TRUE, seed=20, error=T,roo=T,vimpL=T,vimpG=T,rho=0.5) ### MSE ### @@ -844,8 +843,7 @@ graphics.off() pdf(file="fig/vimpL_brcancer.pdf",w=9,h=6) par(mfrow=c(m,5)) -plot(out.brcancer, model.names = models.names, elements = c("vimpL"), - varsL=c(2,4,5,6,7)) +plot(out.brcancer, model.names = models.names, elements = c("vimpL")) graphics.off() ### Global variable importance ### From ee4e11deaf2cc445424c20e8e825a1440e75723c Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:52:58 +0100 Subject: [PATCH 38/57] Update rmst.pred.R Error fixed --- conformalInference/R/rmst.pred.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index da5fe42..f98e437 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -375,12 +375,12 @@ plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, ...) { varsL = x$out.loco.roo.surv$vars for (i in 1:m){ for (j in 1:length(varsL)){ - plot(x$x[,j],x$x[,j],ylim=range(c(x$out.loco.roo.surv$lo, + plot(x$x[,varsL[j]],x$x[,varsL[j]],ylim=range(c(x$out.loco.roo.surv$lo, x$out.loco.roo.surv$up)),xlab="Location",ylab="Interval", main=paste(model.names[i], "- Var.",varsL[j]),col=NA) cols = ifelse(x$out.loco.roo.surv$lo[,j,i] <= 0, 1, 3) - segments(x$x[,j],x$out.loco.roo.surv$lo[,j,i], - x$x[,j],x$out.loco.roo.surv$up[,j,i], + segments(x$x[,varsL[j]],x$out.loco.roo.surv$lo[,j,i], + x$x[,varsL[j]],x$out.loco.roo.surv$up[,j,i], col=cols,lwd=1) abline(h=0, lty=2, lwd=2, col=2) } From 354747e9837ced2544191f871c95615f9b5a00c8 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 19 Dec 2023 11:25:28 +0100 Subject: [PATCH 39/57] Update rmst.pred.R Replace range by length --- conformalInference/R/rmst.pred.R | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index f98e437..6291134 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -222,12 +222,13 @@ rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, #' Print function for rmst.pred object. #' #' @param x The rmst.pred object. -#' @param elements Selection among "mse", "range", "vimp", or "all", describing -#' which elements of the analysis to show. If "mse", then the results on the -#' estimation of the mean squared error are displayed; if "range", then -#' information on the range of the prediction intervals are displayed; if -#' "vimp", then results of global variable importance are displayed. If -#' "all", then the results from all elements are displayed. Default is "all". +#' @param elements Selection among "mse", "intervals", "vimp", or "all", +#' describing which elements of the analysis to show. If "mse", then the +#' results on the estimation of the mean squared error are displayed; if +#' "intervals", then information on the length of the prediction intervals are +#' displayed; if "vimp", then results of global variable importance are +#' displayed. If "all", then the results from all elements are displayed. +#' Default is "all". #' @param digits Number of digits to display. Default is 3. #' @param model.names Names given to the different learning models given to #' train.fun. Default is NULL. @@ -246,9 +247,9 @@ print.rmst.pred = function(x,elements=c("all"),digits=3, if(is.null(model.names)){model.names = paste("Model",1:m)} if(!is.character(model.names) || length(model.names)!=m) stop("model.names must be a vector of strings of size m") - if(!("mse" %in% elements) && !("range" %in% elements) && + if(!("mse" %in% elements) && !("intervals" %in% elements) && !("vimp" %in% elements) && !("all" %in% elements)) - stop("elements must contain at least mse, range, vimp or all") + stop("elements must contain at least mse, intervals, vimp or all") if(("mse" %in% elements || "all" %in% elements) && !is.null(x$mse)){ if(n.folds==1){ @@ -265,14 +266,14 @@ print.rmst.pred = function(x,elements=c("all"),digits=3, } - if(("range" %in% elements || "all" %in% elements) && !is.null(x$out.roo.surv)){ + if(("intervals" %in% elements || "all" %in% elements) && !is.null(x$out.roo.surv)){ d = x$out.roo.surv$up - x$out.roo.surv$lo if(sum(apply(d,2,function(s)length(unique(s)))) == m){ - cat("\n*Range of the prediction intervals (centered on the predictions).\n") + cat("\n*Length of the prediction intervals (centered on the predictions).\n") d.disp = paste(round(apply(d,2,mean),digits=digits)) }else{ - cat("\n*Mean and quantiles of the range of the prediction intervals", + cat("\n*Mean and quantiles of the length of the prediction intervals", "\n (centered on the predictions) displayed as follows:", "\n Mean [0.1-quantile, 0.9-quantile]\n") @@ -304,8 +305,8 @@ print.rmst.pred = function(x,elements=c("all"),digits=3, cat(sprintf("\n %s \n", mse.disp[i])) } - if(("range" %in% elements || "all" %in% elements) && !is.null(x$out.roo.surv)){ - cat("\nRange of the prediction interval around the prediction:\n") + if(("length" %in% elements || "all" %in% elements) && !is.null(x$out.roo.surv)){ + cat("\nLength of the prediction interval around the prediction:\n") cat(sprintf("\n %s \n", d.disp[i])) } From 89b1f43f36d236598fa9f9eb166611a4f132dd1e Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 20 Dec 2023 15:58:15 +0100 Subject: [PATCH 40/57] Update check.R Test with factors --- conformalInference/R/check.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/conformalInference/R/check.R b/conformalInference/R/check.R index e1183c5..01131f4 100644 --- a/conformalInference/R/check.R +++ b/conformalInference/R/check.R @@ -27,7 +27,8 @@ check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, cens.model=NULL, alpha=NULL, train.fun=NULL, predict.fun=NULL, mad.train.fun=NULL, mad.predict.fun=NULL, special.fun=NULL) { - if (is.null(x) || !is.numeric(x)) stop("x must be a numeric matrix") + # if (is.null(x) || !is.numeric(x)) stop("x must be a numeric matrix") + if (is.null(x)) stop("x must be a matrix") if (is.null(t) || !is.numeric(t)) stop("t must be a numeric vector") if (nrow(x) != length(t)) stop("nrow(x) and length(t) must match") if (is.null(d) || !is.numeric(d)) stop("d must be a binary (0/1) vector") From 61bfd6aa5a2d0ef982d7af5c42adcd9debeb34c4 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 20 Dec 2023 16:04:06 +0100 Subject: [PATCH 41/57] Update check.R Test with factors --- conformalInference/R/check.R | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/conformalInference/R/check.R b/conformalInference/R/check.R index 01131f4..db45b02 100644 --- a/conformalInference/R/check.R +++ b/conformalInference/R/check.R @@ -41,8 +41,10 @@ check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, stop("cens.model must be km, rsf or cox") check.pos.num(tau) check.num.01(alpha) - check.args(x, t, x0, alpha, train.fun, - predict.fun, mad.train.fun, mad.predict.fun, special.fun) + # check.args(x, t, x0, alpha, train.fun, + # predict.fun, mad.train.fun, mad.predict.fun, special.fun) + check.args(matrix(1,nrow(x),ncol(x)), t, x0, alpha, train.fun, + predict.fun, mad.train.fun, mad.predict.fun, special.fun) } check.bool = function(b) { From 5099094880af5b2057c5dfeaa7ee040b8e2845fd Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 20 Dec 2023 16:07:09 +0100 Subject: [PATCH 42/57] Update check.R Test with factors --- conformalInference/R/check.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conformalInference/R/check.R b/conformalInference/R/check.R index db45b02..8bdbc25 100644 --- a/conformalInference/R/check.R +++ b/conformalInference/R/check.R @@ -43,7 +43,7 @@ check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, check.num.01(alpha) # check.args(x, t, x0, alpha, train.fun, # predict.fun, mad.train.fun, mad.predict.fun, special.fun) - check.args(matrix(1,nrow(x),ncol(x)), t, x0, alpha, train.fun, + check.args(matrix(1,nrow(x),ncol(x)), t, matrix(1,nrow(x),ncol(x)), alpha, train.fun, predict.fun, mad.train.fun, mad.predict.fun, special.fun) } From c7190884b179cf4283b45a5294b3bab613173294 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 20 Dec 2023 16:25:46 +0100 Subject: [PATCH 43/57] Update check.R Removing possibility of factors --- conformalInference/R/check.R | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/conformalInference/R/check.R b/conformalInference/R/check.R index 8bdbc25..e1183c5 100644 --- a/conformalInference/R/check.R +++ b/conformalInference/R/check.R @@ -27,8 +27,7 @@ check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, cens.model=NULL, alpha=NULL, train.fun=NULL, predict.fun=NULL, mad.train.fun=NULL, mad.predict.fun=NULL, special.fun=NULL) { - # if (is.null(x) || !is.numeric(x)) stop("x must be a numeric matrix") - if (is.null(x)) stop("x must be a matrix") + if (is.null(x) || !is.numeric(x)) stop("x must be a numeric matrix") if (is.null(t) || !is.numeric(t)) stop("t must be a numeric vector") if (nrow(x) != length(t)) stop("nrow(x) and length(t) must match") if (is.null(d) || !is.numeric(d)) stop("d must be a binary (0/1) vector") @@ -41,10 +40,8 @@ check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, stop("cens.model must be km, rsf or cox") check.pos.num(tau) check.num.01(alpha) - # check.args(x, t, x0, alpha, train.fun, - # predict.fun, mad.train.fun, mad.predict.fun, special.fun) - check.args(matrix(1,nrow(x),ncol(x)), t, matrix(1,nrow(x),ncol(x)), alpha, train.fun, - predict.fun, mad.train.fun, mad.predict.fun, special.fun) + check.args(x, t, x0, alpha, train.fun, + predict.fun, mad.train.fun, mad.predict.fun, special.fun) } check.bool = function(b) { From 3eedb4d8f27a5298b71685f4e0eeba003d379141 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Fri, 5 Jan 2024 12:33:51 +0100 Subject: [PATCH 44/57] Factors authorized in x --- conformalInference/R/check.R | 25 ++++++++++++++++------ conformalInference/R/loco.R | 36 ++++++++++++++++---------------- conformalInference/R/loco.roo.R | 34 +++++++++++++++--------------- conformalInference/R/rmst.pred.R | 28 ++++++++++++------------- conformalInference/R/roo.R | 22 +++++++++---------- conformalInference/R/split.R | 2 +- 6 files changed, 80 insertions(+), 67 deletions(-) diff --git a/conformalInference/R/check.R b/conformalInference/R/check.R index e1183c5..f5f5671 100644 --- a/conformalInference/R/check.R +++ b/conformalInference/R/check.R @@ -1,6 +1,6 @@ check.args = function(x=NULL, y=NULL, x0=NULL, alpha=NULL, - train.fun=NULL, predict.fun=NULL, mad.train.fun=NULL, mad.predict.fun=NULL, - special.fun=NULL) { + train.fun=NULL, predict.fun=NULL, mad.train.fun=NULL, mad.predict.fun=NULL, + special.fun=NULL) { if (is.null(x) || !is.numeric(x)) stop("x must be a numeric matrix") if (is.null(y) || !is.numeric(y)) stop("y must be a numeric vector") @@ -26,13 +26,15 @@ check.args = function(x=NULL, y=NULL, x0=NULL, alpha=NULL, check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, cens.model=NULL, alpha=NULL, train.fun=NULL, predict.fun=NULL, mad.train.fun=NULL, mad.predict.fun=NULL, special.fun=NULL) { - - if (is.null(x) || !is.numeric(x)) stop("x must be a numeric matrix") + + if (is.null(x)) stop("x must be a matrix") if (is.null(t) || !is.numeric(t)) stop("t must be a numeric vector") if (nrow(x) != length(t)) stop("nrow(x) and length(t) must match") if (is.null(d) || !is.numeric(d)) stop("d must be a binary (0/1) vector") if (length(d[d!=0 & d!=1]) != 0) stop("d must be a binary (0/1) vector") if (length(d) != length(t)) stop("length(d) and length(t) must match") + if (is.null(x0)) stop("x0 must be a matrix") + if (ncol(x) != ncol(x0)) stop("ncol(x) and ncol(x0) must match") if (!is.null(w) && !is.numeric(w)) stop("w must be NULL or a numeric vector") if (!is.null(w) && length(w) != length(t)) stop("length(w) and length(t) must match") @@ -40,8 +42,19 @@ check.args.surv = function(x=NULL, t=NULL, d=NULL, tau=NULL, x0=NULL, w=NULL, stop("cens.model must be km, rsf or cox") check.pos.num(tau) check.num.01(alpha) - check.args(x, t, x0, alpha, train.fun, - predict.fun, mad.train.fun, mad.predict.fun, special.fun) + if (is.null(train.fun) || !is.function(train.fun)) + stop("train.fun must be a function") + if (is.null(predict.fun) || !is.function(predict.fun)) + stop("predict.fun must be a function") + if (!is.null(mad.train.fun) && !is.function(mad.train.fun)) + stop("mad.train.fun must be a function") + if (!is.null(mad.predict.fun) && !is.function(mad.predict.fun)) + stop("mad.predict.fun must be a function") + if ((!is.null(mad.train.fun) && is.null(mad.predict.fun)) || + (is.null(mad.train.fun) && !is.null(mad.predict.fun))) + stop("mad.train.fun and mad.predict.fun must both be provided") + if (!is.null(special.fun) && !is.function(special.fun)) + stop("special.fun must be a function") } check.bool = function(b) { diff --git a/conformalInference/R/loco.R b/conformalInference/R/loco.R index 338e233..e5fd108 100644 --- a/conformalInference/R/loco.R +++ b/conformalInference/R/loco.R @@ -70,8 +70,8 @@ #' @export loco loco = function(x, y, train.fun, predict.fun, active.fun, alpha=0.1, - bonf.correct=TRUE, split=NULL, seed=NULL, verbose=FALSE) { - + bonf.correct=TRUE, split=NULL, seed=NULL, verbose=FALSE) { + # Set up data x = as.matrix(x) y = as.numeric(y) @@ -81,7 +81,7 @@ loco = function(x, y, train.fun, predict.fun, active.fun, alpha=0.1, # Check input arguments check.args(x=x,y=y,x0=x,alpha=alpha,train.fun=train.fun, predict.fun=predict.fun) - + # Users may pass in a string for the verbose argument if (verbose == TRUE) txt = "" if (verbose != TRUE && verbose != FALSE) { @@ -120,7 +120,7 @@ loco = function(x, y, train.fun, predict.fun, active.fun, alpha=0.1, # Get residuals on second res = abs(y[i2] - matrix(predict.fun(out,x[i2,,drop=F]),nrow=n2)) res.drop = vector(mode="list",length=J) - + # Re-fit after dropping each feature in the master list for (j in Seq(1,J)) { if (verbose) { @@ -128,16 +128,16 @@ loco = function(x, y, train.fun, predict.fun, active.fun, alpha=0.1, "considered) ..."),txt,master[j],j,J)) flush.console() } - + # Train on the first part, without variable out.j = train.fun(x[i1,-master[j],drop=F],y[i1]) - + # Get predictions on the other, without variable res.drop[[j]] = abs(y[i2] - matrix(predict.fun(out.j,x[i2,-master[j], - drop=F]),nrow=n2)) + drop=F]),nrow=n2)) } if (verbose) cat("\n") - + # Compute p-values and confidence intervals at each tuning step inf.z = inf.sign = inf.wilcox = vector(mode="list",length=m) @@ -150,7 +150,7 @@ loco = function(x, y, train.fun, predict.fun, active.fun, alpha=0.1, } else cat(sprintf("%sPerforming LOCO analysis ...",txt)) } - + k = length(active[[l]]) inf.z[[l]] = inf.sign[[l]] = inf.wilcox[[l]] = matrix(0,k,3) for (j in Seq(1,k)) { @@ -167,9 +167,9 @@ loco = function(x, y, train.fun, predict.fun, active.fun, alpha=0.1, colnames(inf.wilcox[[l]]) = c("P-value", "LowConfPt", "UpConfPt") } if (verbose) cat("\n") - + out = list(inf.z=inf.z,inf.sign=inf.sign,inf.wilcox=inf.wilcox, - active=active, master=master, bonf.correct=bonf.correct) + active=active, master=master, bonf.correct=bonf.correct) class(out) = "loco" return(out) } @@ -191,7 +191,7 @@ loco = function(x, y, train.fun, predict.fun, active.fun, alpha=0.1, print.loco = function(x, test=c("wilcox","sign","z","all"), digits=3, ...) { test = match.arg(test) - + cat(paste("\nDisplaying results of LOCO analysis. Notes:\n", "\n- P-values are from a one-sided test of the target parameter", "\n (mean or median excess test error) being equal to zero versus", @@ -229,7 +229,7 @@ print.loco = function(x, test=c("wilcox","sign","z","all"), digits=3, ...) { if (test=="wilcox" || test=="all") { cat("\nWilcoxon test results:\n\n") - tab = round(x$inf.wilcox[[i]],digits=digits) + tab = round(x$inf.wilcox[[i]],digits=digits) code = get.signif.code(x$inf.wilcox[[i]][,1]) tab = cbind(rownames(tab),tab,code) colnames(tab)[1] = "Var" @@ -237,7 +237,7 @@ print.loco = function(x, test=c("wilcox","sign","z","all"), digits=3, ...) { rownames(tab) = rep("",nrow(tab)) print(tab,quote=FALSE) } - + cat("\nSignificance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n") } } @@ -248,7 +248,7 @@ my.z.test = function(z, alpha, k, bonf.correct=TRUE){ s = sd(z) m = mean(z) pval = 1-pnorm(m/s*sqrt(n)) - + # Apply Bonferroni correction for k tests if (bonf.correct) { pval = min(k*pval,1) @@ -266,7 +266,7 @@ my.sign.test = function(z, alpha, k, bonf.correct=TRUE){ n = length(z) s = sum(z>0) pval = 1-pbinom(s-1,n,0.5) - + # Apply Bonferroni correction for k tests if (bonf.correct) { pval = min(k*pval,1) @@ -283,7 +283,7 @@ my.sign.test = function(z, alpha, k, bonf.correct=TRUE){ # Median inference: one-sided p-value but a two-sided confidence interval my.wilcox.test = function(z, alpha, k, bonf.correct=TRUE){ pval = wilcox.test(z, alternative="greater", exact=TRUE)$p.value - + # Apply Bonferroni correction for k tests if (bonf.correct) { pval = min(k*pval,1) @@ -381,7 +381,7 @@ loco.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, seed=NULL, verbose=FALSE) { # Set up data - x = as.matrix(x) + # x = as.matrix(x) t = as.numeric(t) d = as.numeric(d) if(!is.null(w)) w = as.numeric(w) diff --git a/conformalInference/R/loco.roo.R b/conformalInference/R/loco.roo.R index 5dbbdb5..c359e82 100644 --- a/conformalInference/R/loco.roo.R +++ b/conformalInference/R/loco.roo.R @@ -74,9 +74,9 @@ #' @export loco.roo loco.roo = function(x, y, train.fun, predict.fun, vars=0, - alpha=0.1, mad.train.fun=NULL, mad.predict.fun=NULL, split=NULL, - seed=NULL, out.roo=NULL, verbose=FALSE) { - + alpha=0.1, mad.train.fun=NULL, mad.predict.fun=NULL, split=NULL, + seed=NULL, out.roo=NULL, verbose=FALSE) { + # Set up data x = as.matrix(x) y = as.numeric(y) @@ -94,7 +94,7 @@ loco.roo = function(x, y, train.fun, predict.fun, vars=0, txt = verbose verbose = TRUE } - + inds = vector(mode="list",length=2) # Compute in-sample rank-one-out intervals ourselves @@ -103,15 +103,15 @@ loco.roo = function(x, y, train.fun, predict.fun, vars=0, if (!is.null(split)) inds[[1]] = split # Otherwise make a random split else inds[[1]] = sample(1:n,floor(n/2)) - + if (verbose) { cat(sprintf(paste("%sComputing in-sample rank-one-out conformal", "prediction intervals ...\n"),txt)) } - + out.roo = conformal.pred.roo(x,y,train.fun,predict.fun,alpha=alpha, - mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun, - split=inds[[1]],verbose=ifelse(verbose,paste0(txt,"\t"),FALSE)) + mad.train.fun=mad.train.fun,mad.predict.fun=mad.predict.fun, + split=inds[[1]],verbose=ifelse(verbose,paste0(txt,"\t"),FALSE)) } # These have already been computed else { @@ -123,7 +123,7 @@ loco.roo = function(x, y, train.fun, predict.fun, vars=0, } inds[[1]] = out.roo$split } - + inds[[2]] = (1:n)[-inds[[1]]] pred = out.roo$pred m = ncol(pred) @@ -144,7 +144,7 @@ loco.roo = function(x, y, train.fun, predict.fun, vars=0, for (k in 1:2) { i1 = inds[[k]]; n1 = length(i1) i2 = inds[[3-k]]; n2 = length(i2) - + cat(sprintf("%sHandling %s part of the data-split ...\n", txt,ifelse(k==1,"first","second"))) @@ -154,23 +154,23 @@ loco.roo = function(x, y, train.fun, predict.fun, vars=0, txt,vars[j],j,nv)) flush.console() } - + # Train on the first part, without variable out.j = train.fun(x[i1,-vars[j],drop=F],y[i1]) - + # Get predictions on the other, without variable pred.j = matrix(predict.fun(out.j,x[i2,-vars[j],drop=F]),nrow=n2) # Get the conformal intervals for differences in the residuals a = conformal.diff.int(pred[i2,,drop=F],pred.j, - out.roo$lo[i2,,drop=F],out.roo$up[i2,,drop=F]) + out.roo$lo[i2,,drop=F],out.roo$up[i2,,drop=F]) lo[i2,j,] = a$lo up[i2,j,] = a$up } if (verbose) cat("\n") } - + return(list(lo=lo,up=up,vars=vars,split=inds[[1]],out.roo=out.roo)) } @@ -180,12 +180,12 @@ conformal.diff.int = function(mu1, mu2, lo, up) { n = nrow(mu1) m = ncol(mu1) v.lo = v.up = matrix(0,n,m) - + # Cases where mu1 is larger oo = mu2 <= mu1 v.lo[oo] = trunc(lo,mu2,mu1)[oo] v.up[oo] = trunc(up,mu2,mu1)[oo] - + # Cases where mu2 is larger oo = mu1 <= mu2 v.lo[oo] = -trunc(up,mu1,mu2)[oo] @@ -284,7 +284,7 @@ loco.roo.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, split=NULL, seed=NULL, out.roo.surv=NULL, verbose=FALSE) { # Set up data - x = as.matrix(x) + # x = as.matrix(x) t = as.numeric(t) d = as.numeric(d) if(!is.null(w)) w = as.numeric(w) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index 6291134..e13a9c3 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -114,13 +114,13 @@ #' @export rmst.pred rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, - cens.model="km", CV=T, n.folds=10, prop=0.1, active.fun=NULL, alpha=0.1, - rho=0.5, varsL=0, varsG=0, bonf.correct=FALSE, mad.train.fun=NULL, - mad.predict.fun=NULL, split=NULL, seed=NULL, out.roo.surv=NULL, verbose=FALSE, - error=T,roo=T,vimpL=T,vimpG=T) { - + cens.model="km", CV=T, n.folds=10, prop=0.1, active.fun=NULL, alpha=0.1, + rho=0.5, varsL=0, varsG=0, bonf.correct=FALSE, mad.train.fun=NULL, + mad.predict.fun=NULL, split=NULL, seed=NULL, out.roo.surv=NULL, verbose=FALSE, + error=T,roo=T,vimpL=T,vimpG=T) { + # Set up data - x = as.matrix(x) + # x = as.matrix(x) t = as.numeric(t) d = as.numeric(d) if(!is.null(w)) w = as.numeric(w) @@ -196,7 +196,7 @@ rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, cat(sprintf(paste("%sComputing local variable importance ...\n"),txt)) } out.loco.roo.surv = loco.roo.surv(x, t, d, tau, train.fun, predict.fun, - vars=varsL, alpha=alpha, out.roo.surv=out.roo.surv, verbose=F) + vars=varsL, alpha=alpha, out.roo.surv=out.roo.surv, verbose=F) out$out.loco.roo.surv=out.loco.roo.surv out$m = ncol(out.loco.roo.surv$out.roo.surv$pred) } @@ -213,7 +213,7 @@ rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, out$m = length(out.loco.surv$active) } - + class(out) = "rmst.pred" return(out) } @@ -260,8 +260,8 @@ print.rmst.pred = function(x,elements=c("all"),digits=3, "\n Mean and quantiles are computed and displayed as follows:", "\n Mean [0.1-quantile, 0.9-quantile]\n")) mse.disp = paste(round(apply(x$mse,2,mean),digits=digits),"[", - round(apply(x$mse,2,function(s)quantile(s,0.1)),digits=digits),",", - round(apply(x$mse,2,function(s)quantile(s,0.9)),digits=digits),"]") + round(apply(x$mse,2,function(s)quantile(s,0.1)),digits=digits),",", + round(apply(x$mse,2,function(s)quantile(s,0.9)),digits=digits),"]") } } @@ -278,8 +278,8 @@ print.rmst.pred = function(x,elements=c("all"),digits=3, "\n Mean [0.1-quantile, 0.9-quantile]\n") d.disp = paste(round(apply(d,2,mean),digits=digits),"[", - round(apply(d,2,function(s)quantile(s,0.1)),digits=digits),",", - round(apply(d,2,function(s)quantile(s,0.9)),digits=digits),"]") + round(apply(d,2,function(s)quantile(s,0.1)),digits=digits),",", + round(apply(d,2,function(s)quantile(s,0.9)),digits=digits),"]") } } @@ -377,7 +377,7 @@ plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, ...) { for (i in 1:m){ for (j in 1:length(varsL)){ plot(x$x[,varsL[j]],x$x[,varsL[j]],ylim=range(c(x$out.loco.roo.surv$lo, - x$out.loco.roo.surv$up)),xlab="Location",ylab="Interval", + x$out.loco.roo.surv$up)),xlab="Location",ylab="Interval", main=paste(model.names[i], "- Var.",varsL[j]),col=NA) cols = ifelse(x$out.loco.roo.surv$lo[,j,i] <= 0, 1, 3) segments(x$x[,varsL[j]],x$out.loco.roo.surv$lo[,j,i], @@ -405,7 +405,7 @@ plot.rmst.pred = function(x,elements=c("all"), model.names=NULL, ...) { 1:p, x$out.loco.surv$inf.sign[[i]][,3], col="red", lwd=2) points(1:p,(x$out.loco.surv$inf.sign[[i]][,3]+x$out.loco.surv$inf.sign[[i]][,2])/2, - col="red",pch=23) + col="red",pch=23) } } diff --git a/conformalInference/R/roo.R b/conformalInference/R/roo.R index f0aad2c..83e1c56 100644 --- a/conformalInference/R/roo.R +++ b/conformalInference/R/roo.R @@ -82,9 +82,9 @@ #' @export conformal.pred.roo conformal.pred.roo = function(x, y, train.fun, predict.fun, alpha=0.1, - mad.train.fun=NULL, mad.predict.fun=NULL, split=NULL, seed=NULL, - verbose=FALSE) { - + mad.train.fun=NULL, mad.predict.fun=NULL, split=NULL, seed=NULL, + verbose=FALSE) { + # Set up data x = as.matrix(x) y = as.numeric(y) @@ -95,7 +95,7 @@ conformal.pred.roo = function(x, y, train.fun, predict.fun, alpha=0.1, check.args(x=x,y=y,x0=x,alpha=alpha,train.fun=train.fun, predict.fun=predict.fun,mad.train.fun=mad.train.fun, mad.predict.fun=mad.predict.fun) - + # Users may pass in a string for the verbose argument if (verbose == TRUE) txt = "" if (verbose != TRUE && verbose != FALSE) { @@ -125,24 +125,24 @@ conformal.pred.roo = function(x, y, train.fun, predict.fun, alpha=0.1, cat(sprintf("%sSplitting data into parts of size %i and %i ...\n",txt, floor(n/2),ceiling(n/2))) } - + # Train one split, and get residuals on the other for (k in 1:2) { i1 = inds[[k]]; n1 = length(i1) i2 = inds[[3-k]]; n2 = length(i2) - + if (verbose) { cat(sprintf("%sTraining on %s part ...\n",txt, ifelse(k==1,"first","second"))) } - + # Train on first part out = train.fun(x[i1,,drop=F],y[i1]) yhat1 = matrix(predict.fun(out,x[i1,,drop=F]),nrow=n1) yhat2 = matrix(predict.fun(out,x[i2,,drop=F]),nrow=n2) fit[i1,] = yhat1 pred[i2,] = yhat2 - + if (verbose) { cat(sprintf("%sComputing residuals and quantiles on %s part ...\n", txt,ifelse(k==1,"first","second"))) @@ -259,11 +259,11 @@ conformal.pred.roo = function(x, y, train.fun, predict.fun, alpha=0.1, conformal.pred.roo.surv = function(x, t, d, tau, train.fun, predict.fun, - w=NULL,cens.model="km", alpha=0.1, mad.train.fun=NULL, mad.predict.fun=NULL, - split=NULL, seed=NULL, verbose=FALSE) { + w=NULL,cens.model="km", alpha=0.1, mad.train.fun=NULL, mad.predict.fun=NULL, + split=NULL, seed=NULL, verbose=FALSE) { # Set up data - x = as.matrix(x) + # x = as.matrix(x) t = as.numeric(t) d = as.numeric(d) if(!is.null(w)) w = as.numeric(w) diff --git a/conformalInference/R/split.R b/conformalInference/R/split.R index bee5ec5..02e04e3 100644 --- a/conformalInference/R/split.R +++ b/conformalInference/R/split.R @@ -249,7 +249,7 @@ conformal.pred.split.surv = function(x, t, d, tau, x0, train.fun, predict.fun, mad.predict.fun=NULL, split=NULL, seed=NULL, verbose=FALSE) { # Set up data - x = as.matrix(x) + # x = as.matrix(x) t = as.numeric(t) d = as.numeric(d) if(!is.null(w)) w = as.numeric(w) From 89c80bc69095daa8ea64f68717b2c9eff4b97b9f Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 9 Jan 2024 18:29:30 +0100 Subject: [PATCH 45/57] Update ipcw.R --- conformalInference/R/ipcw.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conformalInference/R/ipcw.R b/conformalInference/R/ipcw.R index 94fa0e3..6b89315 100644 --- a/conformalInference/R/ipcw.R +++ b/conformalInference/R/ipcw.R @@ -17,7 +17,7 @@ #' @export ipcw ipcw = function(t,d,x,tau,cens.model = "km"){ - if(!is.null(x)){ x = as.matrix(x) } + # if(!is.null(x)){ x = as.matrix(x) } if(!cens.model %in% c("km","cox","rsf")) stop("cens.model must be either km, cox or rsf") @@ -66,4 +66,4 @@ ipcw.rfsrc = function(t,d,x,tau){ (t[s] > tau)/censfct[[s]](tau) ) ) return(w) -} \ No newline at end of file +} From 0425f10af81702245f9fa6e94634b61d704f2476 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Mon, 12 Feb 2024 17:10:25 +0100 Subject: [PATCH 46/57] Rejection rate Rejection rate and impact of covariates on censoring --- cwiling2023/fig.loco.surv.R | 15 +++++++++++++++ cwiling2023/fig/reject_rate.txt | 4 ++++ 2 files changed, 19 insertions(+) create mode 100644 cwiling2023/fig/reject_rate.txt diff --git a/cwiling2023/fig.loco.surv.R b/cwiling2023/fig.loco.surv.R index a15e510..2df1805 100644 --- a/cwiling2023/fig.loco.surv.R +++ b/cwiling2023/fig.loco.surv.R @@ -614,6 +614,14 @@ for(i in 1:m){ } graphics.off() +# Rejection rate at level 5% +pvalues.reject = data.frame(t(apply(pvalues < 0.05,MARGIN = c(1,2),mean))) +colnames(pvalues.reject) = models.names + +sink(file = "fig/reject_rate.txt", type = "output") +print(pvalues.reject) +sink() + ########################## # 4/ RMST.PRED FRAMEWORK # ########################## @@ -816,6 +824,13 @@ tau.brcancer = quantile(tobs.brcancer,0.9,names=F) x.brcancer = brcancer %>% select(-rectime,-censrec) p = dim(x.brcancer)[2] +## Impact of covariates on censoring +cens_cox = coxph(Surv(tobs.brcancer,1-delta.brcancer)~.,data=x.brcancer) +cens_cox +cens_rsf = rfsrc(Surv(tobs.brcancer,cens.brcancer)~.,data=data.frame(tobs.brcancer,cens.brcancer=1-delta.brcancer,x.brcancer), + importance=T,seed=-1) +cens_rsf$importance +## ##### models = c("km","cox","rsf","lm") diff --git a/cwiling2023/fig/reject_rate.txt b/cwiling2023/fig/reject_rate.txt new file mode 100644 index 0000000..09ed440 --- /dev/null +++ b/cwiling2023/fig/reject_rate.txt @@ -0,0 +1,4 @@ + KM Cox RSF P.obs.+LM +1 0.048 1.000 1.000 1.000 +2 0.059 1.000 1.000 1.000 +3 0.069 0.027 0.001 0.004 From df79528f3a7f9bf716d27566e7718bf5eb943b79 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 20 Aug 2024 14:30:02 +0200 Subject: [PATCH 47/57] Update fig.loco.surv.R factors --- cwiling2023/fig.loco.surv.R | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cwiling2023/fig.loco.surv.R b/cwiling2023/fig.loco.surv.R index 2df1805..c6ab4ba 100644 --- a/cwiling2023/fig.loco.surv.R +++ b/cwiling2023/fig.loco.surv.R @@ -2,6 +2,7 @@ # LIBRARIES # ############# + libraries_sources = function(){ library(survival) library(FastPseudo) @@ -822,6 +823,9 @@ tobs.brcancer = brcancer$rectime delta.brcancer = brcancer$censrec tau.brcancer = quantile(tobs.brcancer,0.9,names=F) x.brcancer = brcancer %>% select(-rectime,-censrec) +x.brcancer$hormon = factor(x.brcancer$hormon) +x.brcancer$x2 = factor(x.brcancer$x2) +x.brcancer$x4a = factor(x.brcancer$x4a) p = dim(x.brcancer)[2] ## Impact of covariates on censoring From 5dd268f89a3721b5a8f6ed66731fd83a193cec5a Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 20 Aug 2024 17:10:49 +0200 Subject: [PATCH 48/57] Update rmst.pred.R Description of parameter rho --- conformalInference/R/rmst.pred.R | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/conformalInference/R/rmst.pred.R b/conformalInference/R/rmst.pred.R index e13a9c3..5098fed 100644 --- a/conformalInference/R/rmst.pred.R +++ b/conformalInference/R/rmst.pred.R @@ -68,6 +68,8 @@ #' to conformal.pred.roo.surv (whether already run, or to be run inter- #' nally, see below), loco.roo.surv and loco.surv. #' Default is NULL, in which case the split is chosen randomly. +#' @param rho Proportion of the data for the data-split in case it is chosen +#' randomly. #' @param seed Integer to be passed to set.seed. Default is NULL, which #' effectively sets no seed. #' @param out.roo.surv Output from running conformal.pred.roo.surv on the given @@ -113,11 +115,11 @@ #' Perduca, Bouaziz (2023) for the extension to right-censored data. #' @export rmst.pred -rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, - cens.model="km", CV=T, n.folds=10, prop=0.1, active.fun=NULL, alpha=0.1, - rho=0.5, varsL=0, varsG=0, bonf.correct=FALSE, mad.train.fun=NULL, - mad.predict.fun=NULL, split=NULL, seed=NULL, out.roo.surv=NULL, verbose=FALSE, - error=T,roo=T,vimpL=T,vimpG=T) { +rmst.pred = function(x, t, d, tau, train.fun, predict.fun, w=NULL, cens.model="km", + CV=T, n.folds=10, prop=0.1, active.fun=NULL, alpha=0.1, + varsL=0, varsG=0, bonf.correct=FALSE, mad.train.fun=NULL, + mad.predict.fun=NULL, split=NULL, rho=0.5, seed=NULL, + out.roo.surv=NULL, verbose=FALSE, error=T,roo=T,vimpL=T,vimpG=T) { # Set up data # x = as.matrix(x) From d69430211f893b54331a9ba34a438b2f2959d6b7 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 21 Aug 2024 15:04:01 +0200 Subject: [PATCH 49/57] Update roo.R Format issue in case m=1 --- conformalInference/R/roo.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conformalInference/R/roo.R b/conformalInference/R/roo.R index 83e1c56..60cc2c6 100644 --- a/conformalInference/R/roo.R +++ b/conformalInference/R/roo.R @@ -369,8 +369,8 @@ conformal.pred.roo.surv = function(x, t, d, tau, train.fun, predict.fun, } if(length(alpha)==1){ - lo = lo[,,1] - up = up[,,1] + lo = array(lo[,,1],dim=c(n,m)) + up = array(up[,,1],dim=c(n,m)) } return(list(pred=pred,lo=lo,up=up,fit=fit,split=inds[[1]], From ac93512924e5340d4239ecd74dcc9cf2a122e898 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Wed, 21 Aug 2024 15:44:40 +0200 Subject: [PATCH 50/57] Update split.R Format issue with x0 for factors --- conformalInference/R/split.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conformalInference/R/split.R b/conformalInference/R/split.R index 02e04e3..9f35370 100644 --- a/conformalInference/R/split.R +++ b/conformalInference/R/split.R @@ -255,7 +255,7 @@ conformal.pred.split.surv = function(x, t, d, tau, x0, train.fun, predict.fun, if(!is.null(w)) w = as.numeric(w) n = nrow(x) p = ncol(x) - x0 = matrix(x0,ncol=p) + # x0 = matrix(x0,ncol=p) n0 = nrow(x0) # Check input arguments From 53218da5783cd0d1bfedf5256b50d20bae3845ee Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Fri, 23 Aug 2024 18:26:58 +0200 Subject: [PATCH 51/57] Update ipcw.R Error for division by zero (if the censoring survival function reaches 0 at the evaluated time) --- conformalInference/R/ipcw.R | 52 +++++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/conformalInference/R/ipcw.R b/conformalInference/R/ipcw.R index 6b89315..4559771 100644 --- a/conformalInference/R/ipcw.R +++ b/conformalInference/R/ipcw.R @@ -36,10 +36,19 @@ ipcw.km = function(t,d,x,tau){ fit = survfit(Surv(t, d) ~ 1, data=df) censfct = stepfun(fit$time,c(1,fit$surv)) G.hat.tau = censfct(tau) - w = as.double(lapply(1:n, function(s) - (t[s] <= tau)*d[s]/ifelse(d[s],censfct(t[s]),1) + - (t[s] > tau)/G.hat.tau ) - ) + w = as.double(lapply(1:n, function(s) { + if (t[s] <= tau) { + if (d[s] && censfct[[s]](t[s]) == 0) { + stop("Error in weight calculation: Division by zero") + } + return((t[s] <= tau) * d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) + } else { + if (censfct[[s]](tau) == 0) { + stop("Error in weight calculation: Division by zero") + } + return((t[s] > tau) / censfct[[s]](tau)) + } + })) return(w) } @@ -48,11 +57,19 @@ ipcw.cox = function(t,d,x,tau){ df = data.frame(t=t,d=1-d,x) fit = survfit(coxph(Surv(t, d) ~ ., data=df), newdata=data.frame(x)) censfct = sapply(1:n,function(j) stepfun(fit$time,c(1,fit$surv[,j]))) - w = as.double(lapply(1:n, function(s) - (t[s] <= tau)*d[s]/ifelse(d[s],censfct[[s]](t[s]),1) + - (t[s] > tau)/censfct[[s]](tau) ) - ) - + w = as.double(lapply(1:n, function(s) { + if (t[s] <= tau) { + if (d[s] && censfct[[s]](t[s]) == 0) { + stop("Error in weight calculation: Division by zero") + } + return((t[s] <= tau) * d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) + } else { + if (censfct[[s]](tau) == 0) { + stop("Error in weight calculation: Division by zero") + } + return((t[s] > tau) / censfct[[s]](tau)) + } + })) return(w) } @@ -61,9 +78,18 @@ ipcw.rfsrc = function(t,d,x,tau){ df = data.frame(t=t,d=1-d,x) fit = rfsrc(Surv(t, d) ~ ., data=df) censfct = sapply(1:n,function(j) stepfun(fit$time.interest,c(1,fit$survival[j,]))) - w = as.double(lapply(1:n, function(s) - (t[s] <= tau)*d[s]/ifelse(d[s],censfct[[s]](t[s]),1) + - (t[s] > tau)/censfct[[s]](tau) ) - ) + w = as.double(lapply(1:n, function(s) { + if (t[s] <= tau) { + if (d[s] && censfct[[s]](t[s]) == 0) { + stop("Error in weight calculation: Division by zero") + } + return((t[s] <= tau) * d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) + } else { + if (censfct[[s]](tau) == 0) { + stop("Error in weight calculation: Division by zero") + } + return((t[s] > tau) / censfct[[s]](tau)) + } + })) return(w) } From 0124d3d8104457c7abd370b9d50beeb893744046 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Fri, 23 Aug 2024 18:40:34 +0200 Subject: [PATCH 52/57] Update ipcw.R --- conformalInference/R/ipcw.R | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/conformalInference/R/ipcw.R b/conformalInference/R/ipcw.R index 4559771..ac00d92 100644 --- a/conformalInference/R/ipcw.R +++ b/conformalInference/R/ipcw.R @@ -36,19 +36,10 @@ ipcw.km = function(t,d,x,tau){ fit = survfit(Surv(t, d) ~ 1, data=df) censfct = stepfun(fit$time,c(1,fit$surv)) G.hat.tau = censfct(tau) - w = as.double(lapply(1:n, function(s) { - if (t[s] <= tau) { - if (d[s] && censfct[[s]](t[s]) == 0) { - stop("Error in weight calculation: Division by zero") - } - return((t[s] <= tau) * d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) - } else { - if (censfct[[s]](tau) == 0) { - stop("Error in weight calculation: Division by zero") - } - return((t[s] > tau) / censfct[[s]](tau)) - } - })) + w = as.double(lapply(1:n, function(s) + (t[s] <= tau)*d[s]/ifelse(d[s],censfct(t[s]),1) + + (t[s] > tau)/G.hat.tau ) + ) return(w) } @@ -60,12 +51,14 @@ ipcw.cox = function(t,d,x,tau){ w = as.double(lapply(1:n, function(s) { if (t[s] <= tau) { if (d[s] && censfct[[s]](t[s]) == 0) { - stop("Error in weight calculation: Division by zero") + warning("Error in weight calculation: Division by zero") + return(NA) } return((t[s] <= tau) * d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) } else { if (censfct[[s]](tau) == 0) { - stop("Error in weight calculation: Division by zero") + warning("Error in weight calculation: Division by zero") + return(NA) } return((t[s] > tau) / censfct[[s]](tau)) } @@ -81,12 +74,14 @@ ipcw.rfsrc = function(t,d,x,tau){ w = as.double(lapply(1:n, function(s) { if (t[s] <= tau) { if (d[s] && censfct[[s]](t[s]) == 0) { - stop("Error in weight calculation: Division by zero") + warning("Error in weight calculation: Division by zero") + return(NA) } return((t[s] <= tau) * d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) } else { if (censfct[[s]](tau) == 0) { - stop("Error in weight calculation: Division by zero") + warning("Error in weight calculation: Division by zero") + return(NA) } return((t[s] > tau) / censfct[[s]](tau)) } From a4c3fe9ece34e4b7d304a25e5ea5f1dc6c2626b7 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Fri, 23 Aug 2024 18:49:06 +0200 Subject: [PATCH 53/57] Update ipcw.R --- conformalInference/R/ipcw.R | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/conformalInference/R/ipcw.R b/conformalInference/R/ipcw.R index ac00d92..0e333b7 100644 --- a/conformalInference/R/ipcw.R +++ b/conformalInference/R/ipcw.R @@ -36,10 +36,21 @@ ipcw.km = function(t,d,x,tau){ fit = survfit(Surv(t, d) ~ 1, data=df) censfct = stepfun(fit$time,c(1,fit$surv)) G.hat.tau = censfct(tau) - w = as.double(lapply(1:n, function(s) - (t[s] <= tau)*d[s]/ifelse(d[s],censfct(t[s]),1) + - (t[s] > tau)/G.hat.tau ) - ) + w = as.double(lapply(1:n, function(s) { + if (t[s] <= tau) { + if (d[s] && censfct(t[s]) == 0) { + warning("Error in weight calculation: Division by zero") + return(NA) + } + return(d[s] / ifelse(d[s],censfct(t[s]),1)) + } else { + if (G.hat.tau == 0) { + warning("Error in weight calculation: Division by zero") + return(NA) + } + return(1 / G.hat.tau) + } + })) return(w) } @@ -54,13 +65,13 @@ ipcw.cox = function(t,d,x,tau){ warning("Error in weight calculation: Division by zero") return(NA) } - return((t[s] <= tau) * d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) + return(d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) } else { if (censfct[[s]](tau) == 0) { warning("Error in weight calculation: Division by zero") return(NA) } - return((t[s] > tau) / censfct[[s]](tau)) + return(1 / censfct[[s]](tau)) } })) return(w) @@ -77,13 +88,13 @@ ipcw.rfsrc = function(t,d,x,tau){ warning("Error in weight calculation: Division by zero") return(NA) } - return((t[s] <= tau) * d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) + return(d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) } else { if (censfct[[s]](tau) == 0) { warning("Error in weight calculation: Division by zero") return(NA) } - return((t[s] > tau) / censfct[[s]](tau)) + return(1 / censfct[[s]](tau)) } })) return(w) From 51bde67cd8811aadba3c5e14458ab545a93892d7 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Fri, 6 Sep 2024 12:09:06 +0200 Subject: [PATCH 54/57] Update loco.R Weights computed only on D2 --- conformalInference/R/loco.R | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/conformalInference/R/loco.R b/conformalInference/R/loco.R index e5fd108..721f05b 100644 --- a/conformalInference/R/loco.R +++ b/conformalInference/R/loco.R @@ -331,7 +331,7 @@ get.signif.code = function(v) { #' predictions. #' @param w Censoring weights. This should be a vector of length n. #' Default is NULL, in which case censoring weights are computed using the -#' Kaplan-Meier model. +#' Kaplan-Meier model, using only the second half of the data. #' @param active.fun A function which takes the output of train.fun, and reports #' which features are active for each fitted model contained in this output. #' Its only input argument should be out: output produced by train.fun. @@ -419,7 +419,10 @@ loco.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, # Censoring weights if(is.null(w)){ if (verbose) cat(sprintf("%sComputing censoring weights ...\n",txt)) - w = ipcw(t,d,x,tau,cens.model="km") + w2 = ipcw(t[i2],d[i2],x[i2,,drop=F],tau,cens.model="km") + } + else{ + w2 = w[i2] } # Train on first part @@ -490,7 +493,7 @@ loco.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, for (j in Seq(1,k)) { j.master = which(master == active[[l]][j]) z = res.drop[[j.master]][,l] - res[,l] - inf.sign[[l]][j,] = my.surv.sign.test(t[i2],d[i2],w[i2],z, + inf.sign[[l]][j,] = my.surv.sign.test(t[i2],d[i2],w2,z, tau,alpha,k,bonf.correct) } From 092ecc2da3e5dbc42fdd9a0c4d8a63298a8c44f2 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:29:27 +0200 Subject: [PATCH 55/57] Update loco.R Weights computed only on all data --- conformalInference/R/loco.R | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/conformalInference/R/loco.R b/conformalInference/R/loco.R index 721f05b..e5fd108 100644 --- a/conformalInference/R/loco.R +++ b/conformalInference/R/loco.R @@ -331,7 +331,7 @@ get.signif.code = function(v) { #' predictions. #' @param w Censoring weights. This should be a vector of length n. #' Default is NULL, in which case censoring weights are computed using the -#' Kaplan-Meier model, using only the second half of the data. +#' Kaplan-Meier model. #' @param active.fun A function which takes the output of train.fun, and reports #' which features are active for each fitted model contained in this output. #' Its only input argument should be out: output produced by train.fun. @@ -419,10 +419,7 @@ loco.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, # Censoring weights if(is.null(w)){ if (verbose) cat(sprintf("%sComputing censoring weights ...\n",txt)) - w2 = ipcw(t[i2],d[i2],x[i2,,drop=F],tau,cens.model="km") - } - else{ - w2 = w[i2] + w = ipcw(t,d,x,tau,cens.model="km") } # Train on first part @@ -493,7 +490,7 @@ loco.surv = function(x, t, d, tau, train.fun, predict.fun, w=NULL, for (j in Seq(1,k)) { j.master = which(master == active[[l]][j]) z = res.drop[[j.master]][,l] - res[,l] - inf.sign[[l]][j,] = my.surv.sign.test(t[i2],d[i2],w2,z, + inf.sign[[l]][j,] = my.surv.sign.test(t[i2],d[i2],w[i2],z, tau,alpha,k,bonf.correct) } From 800bd54f89f78235b28793aebc10c395af4590b3 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 24 Sep 2024 16:08:59 +0200 Subject: [PATCH 56/57] Update ipcw.R More efficient computation for ipcw.cox --- conformalInference/R/ipcw.R | 50 ++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/conformalInference/R/ipcw.R b/conformalInference/R/ipcw.R index 0e333b7..76d26e3 100644 --- a/conformalInference/R/ipcw.R +++ b/conformalInference/R/ipcw.R @@ -54,27 +54,41 @@ ipcw.km = function(t,d,x,tau){ return(w) } +# ipcw.cox = function(t,d,x,tau){ +# n = length(t) +# df = data.frame(t=t,d=1-d,x) +# fit = survfit(coxph(Surv(t, d) ~ ., data=df), newdata=data.frame(x)) +# censfct = sapply(1:n,function(j) stepfun(fit$time,c(1,fit$surv[,j]))) +# w = as.double(lapply(1:n, function(s) { +# if (t[s] <= tau) { +# if (d[s] && censfct[[s]](t[s]) == 0) { +# warning("Error in weight calculation: Division by zero") +# return(NA) +# } +# return(d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) +# } else { +# if (censfct[[s]](tau) == 0) { +# warning("Error in weight calculation: Division by zero") +# return(NA) +# } +# return(1 / censfct[[s]](tau)) +# } +# })) +# return(w) +# } + ipcw.cox = function(t,d,x,tau){ n = length(t) df = data.frame(t=t,d=1-d,x) - fit = survfit(coxph(Surv(t, d) ~ ., data=df), newdata=data.frame(x)) - censfct = sapply(1:n,function(j) stepfun(fit$time,c(1,fit$surv[,j]))) - w = as.double(lapply(1:n, function(s) { - if (t[s] <= tau) { - if (d[s] && censfct[[s]](t[s]) == 0) { - warning("Error in weight calculation: Division by zero") - return(NA) - } - return(d[s] / ifelse(d[s],censfct[[s]](t[s]),1)) - } else { - if (censfct[[s]](tau) == 0) { - warning("Error in weight calculation: Division by zero") - return(NA) - } - return(1 / censfct[[s]](tau)) - } - })) - return(w) + coxfitC = coxph(Surv(t, d) ~ ., data=df) + cumlambdaC = basehaz(coxfitC,centered=FALSE) #cumulative baseline hazard + hazC=diff(c(0,cumlambdaC$hazard)) #baseline hazard + timeC=cumlambdaC$time[hazC!=0] #times where the hazard is not null + hazC=hazC[hazC!=0] #hazard for the times where the hazard is not null + baseC_fun = stepfun(timeC,c(0,cumsum(hazC))) + G.hat.t = exp(-baseC_fun(t)*exp(as.matrix(x)%*%coxfitC$coefficients)) + G.hat.tau = exp(-baseC_fun(tau)*exp(as.matrix(x)%*%coxfitC$coefficients)) + return(ifelse(t<=tau,d/G.hat.t,1/G.hat.tau)) } ipcw.rfsrc = function(t,d,x,tau){ From 1a55b091b9c8310aa287f1cd3ae74bab1f5a71d7 Mon Sep 17 00:00:00 2001 From: ariane-cwi <77406785+ariane-cwi@users.noreply.github.com> Date: Tue, 24 Sep 2024 16:09:13 +0200 Subject: [PATCH 57/57] Update calibration.pdf --- cwiling2023/fig/calibration.pdf | Bin 7491 -> 7491 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/cwiling2023/fig/calibration.pdf b/cwiling2023/fig/calibration.pdf index b7b1d4ee9e98bb53bcc27865e175c42c1c30f249..147a976f2d3e60876c180cce2c293ab88cd3b12e 100644 GIT binary patch delta 50 wcmX?Xb=YcxiMok_rJ;eLsfoF%p(dBUZ+?nPVo9okhKrSvff172#^@I^0AmXcx&QzG delta 50 wcmX?Xb=YcxiMp|YrID$jrHP@jnI@OMZ+?nPVo9okhKrSvff172#^@I^0Awi*#sB~S

Im03qtG0 z???Elz_PHCx$8GTk=NRPiTQh470yqgyX^w;au&p+kcT_XDU-b^GwbN=Iyw_0mW>e` zaO+rwRd>EQDXyLr59$iDmPKX$J1T-4f@TiEi$#Wh&@wG2udbU{x8w4R=iaprSY>qf z4ExeE+~74wX-l3)(ke)rBU*)i=Y6?DeC|B=Mnj*fYwTx@1{k~Z%&Z#Swwm3x5)H_c z{l^Ot@MS^3Q>mdYo;IEHi*C? z$?B6ku1%tReX@G}^8={Cl9}X{=XQ0siRzEp>W|MYL1veh%#L;$jNdh|nN>dp1v0nh z%#A{1#X4j|4*S9rkQ&RzVc=P`@Q2Mts&4qZW6@l=L)CvD-4xeXooPp3I-ZqC+`4wn zQG490+gzOCX3uaF(Phc#vc`T|b3bj1Mj@Id8_m)=73hmPIPXteva*v<1jaLC0v6eP zyPZ$n5HKX}ixb4B9K$=*tOGoH#K;zk^~s2a&PGE&1tZ>pqIY0O*kn9ob!u*Q&2OLf z+=c4O_`6g=TQOz4HdLgLe&+^D-Dzdr?PT3Kf9#$=zTGR~H5OIs#2Q%aWIn~>r&^Wwmo?Q+2c04Ka($hRN-#eDPHK_(m3(E2qj`P-C*yY9}kv(vgJaLE2 zBe}2YdN#U2G&8jSgs%@BZ7xr0Z)#%P%6Z0co{ANG&SUJz{ZyEmM)lIB{cIdiv8Q>e z`#w_bh@9%?$Pjg3jJp4GJx!uImb`8IH`p{}Ja={E9gB13^EWvoxa}9ru3lZ(jpJ{2 zU4#C{AqOU_?PV&#=w zfbYnl5t4Zz{dmsuvS)dNx<&4-a|6N_7|$!X`5kU|0=}|?_paAZDiAX?gmWLL%q*Az zHg=esJItNx>D}t-iFyRddIZDxfc#{=hX=bshjXV>et)O^{yKN6zU)*NrI!D6Y6XDU-Kh@8JvMYj>N+7`@eBZi|bd)lcC(lf!tiYvL|DlC|a z>!s(x#;GjAdF}uc>#6S8B4T&*Fne{Q3HEGJaK5X?;gDgF%`oU(=iTf4Jq2(Fizeec zFW52si96c;8|-w_*-bQ8Cl$S$i9Q7X_%5vo4*H&D^=O~tx-tJ-{A&{HjO26cD>HG> zr-;@nsv$UPVLb10;~c^&i%C_vdlRFr8?PZP*U)qg&M-O$R^9Weop!{y@7Kxaz_X(f zM&FF0&uq}--{4?ScN_cq6w=UHJcUDP9IZA_RvR^Un>BaednUyJ`2Zc4_T7c^lW~m* z-_I-O9o4<+Le^6emthFj5&LKln?t^5W`0#_o>ps~7EXtYr^7o{sbP7?b);@Gm64m3 zk@xw*lbV9rbvVbl(SJesS;^GHw3kw5gC(#1l}oJl%UuEP{CU~=GyPq%dLLsDNBv{z zKQqg!YnF9Mdu#1{T$*4nI9Y0bW@~NaV3ql9#UYw=x^8)`P6i5_Va6{>F1c__<5p^-nvQWZg`%aobMb z#kDW~wKrc1yZgm;!^xcdbWXlGVH;Uc%`B)+21hr8V;srccg;#A?UwQ93NBuOJ28cw z80ijW;%T!wIRmB& zU-=V-XxC!2Yokg?vr0%K8?>1Xy2tPp3Yiq^nCui5hN%gs3Sv{W)ZS98l7Ws#ay zkqQ;K%A&xP*^kXSvn#ve)m`z%31IUCaEvOb^r1Q=le>^T>874{wVrq9Yu5di6)GMT zD<17s>jx!>J-9_@_~Ht?mbaW(VD>2!y@iv#g&VcOnzg|?sq@{;`OfUVJG(D*F)wy8 zPt>AG)}k4ZGBOLe&yLo0ygzx-px{7&@%#($uUz%jnlK%nZe_B}vRP)CNY=bKd{T-r zTZwVBAlLjM#g6|xOQv}mamp3>v@7y32O^J7SHM+TyhB!ac65W^3ar7FxG)%HFKQ!kn-=Cw!|#?KJ0-cYg0`W$GMe>l}7I$L{C&_7=bm zIi2&68{N!}9;Bm;&y|%m&P$rQ(9aQw?EN+$lP6MMPNa=9K_Q>AEKcy$N^jOmfA5Ht zPHxxOn9Nn*!OZhUT<*SPQly1RLHFlw_vcPPZ#SN|vKp?ghWAtOoxAL-I)!_5tzPg4 zJ6Ccqtwf(!E5uf+lUC1=J39t_?ec%+Kv$x&t5Ml6jvV{JZ}{}k8!+GHWfbFGs^X0m zTDcWFxeYRDJXwxq(%v-JYgRSfxj56uyxPZnNFx)^C@&Ard#dL>0|H7Eo0uA%KIC0p z^0DyPo74O`ArZ*wFRTUch?9F}lOsai0(|!m=#@*_2JwT_Tg=2A)CTq+oTcrMdLun%HZ9Gqo4A`>*~LzG`<()bvBc9g z^E+gJhXHS-_FFr=66hpmZSlRM+7=&0FWYP{+fIYeZhz0r`E>St`qkhPcTB8$7A46w z$#Yadt*0*<{avSP_vuQ`M_K(Bn|M*piacbj7Bf~0c|XOxpUetAyMljnXH?*a_U4^G zVxuNfTQrewtTlw6=ft~sFMHo1e%)by+ks9E!daD|PqCmWI4SR*l<%fvqe&XG@wDo= zM0OOyPYw{zr&UM(k`m$d8||=f3K64`%{)$7TB9pm({w7)SS8t4Wx(EJy>PfPr9NG? zK3yitJ{x8KBRTmahK>ONNx{X!4jU{G!$(i2R zV>!X;%YM?7jT#rz$yV)VtL}V($59pg|HZpLxsYYyLMAf2k~-s!+P}@(zr7RN)isIC zY$#^;6BCI)$-JLekxV=Q>73Ksy4c(L)lEPqX}y%pj%0R6vJrpXjK40-6N~f2MAgw` z)zO{1OJ{D-m)w9J>dhYNPZ0%u;%1O?mq>?)c-}Fph=4@Z)S5r%<}K$yg2oqpMC;B zjvJA%J|{tpjAv#QtBka0 z;%w$emFjTS>Trn?)X56e&n*G2sJYX85?6E@y+;&mH41iQ>%0RC6P8Nm%}VBtQtHi0 z>Xks>YMgK38Y^C7Pa2e%6-k|q8r{Vj-9t_zp7+J-9OUsd^LR4R;@N2N!nd%jZ{bcg zwNP@jSaEcx8#{z%SMViv;}C`+(^gZbO{ce$TiDGl9OCT>zn?SG#EwaF$7HAfkSWNY zt;at`s+@`~=q*eqn|)QNG1sjzH-y*Y>@XXhMs0;`ZG}P~+F~EtF_2}Cb$JUa^J3+k z^wli()ok>(Z}zq?WGNT3l%K5|)7!rKly!E@x^rsqm#l;NTu|aZ#B8Th;iOvOA!DOhzmVp%IXnQb>1x69AwL7v*kMV%ewW;c7DN? ztE_sJ?dK$gyxj5|UT$KBC6yVXAoFifkZ~f3@cnrzb!RJeH?m@zS+SWeJJ~Kfm9Ihd zTQKqvs3n|MODJUW6f=27Qb;r|cY@9XxBI*;oOKn?x;mL+-Au7(>&)CqR~4R$_t-u) z!wim<4yXT}?ttCyfID3IRu}A)tJrA`xyE5#^Q>+_E~&b~ov1STtj;}$j0f?LROM=H zk2iP6pGDExGwSXcftg(FK$*A(l2t`ENZ&$Tu~uD^)xZYdO|xV-O*zr+U_#i?m#|*@cj$)qfYjt z9$N=_;fp6)=1!cwQ^dNeS|y{%~ze=@3qd&th@u$v_J$K2{Bz5m4@hSh6v_4*_u7gv7MV_|Kf%$%CS-I~Icc4pOXW^WcCB>keC z2%jVK7032M)h6!uPof+*6NGcWj!1ljpUgZSnT+Rt``z1vlf2?d-e@~;m7GhDA@0{{ z=~D1jX8hy7*s2ci)aX0<5D4FOQm9{Dl=mb$<)p>0YlB`ITQDc)y#CI;sCzHk>2ns! z$rP)}Bu+BZ!daotT(ZvGb3=hCPAet?eq}!K#(P1I;8H&j_uN<9bJA|Qa48S&R)@3W zF|QE+oXF?VYA14}1}_!=34qwLUAQ zcS3dXD%CYhL|G-z9mx`}W{EeVVw+L1WBJD4pY7bW@tz(@C(#e$tnlFNi}%P)o%CB% zs>WTvEgqK4Ub?fFL5b_Qe!gvmLI}k=2s>ZtM7(PHjduqW!u%!_I$RbzTqgD;lY5d+ z$_%dP>B#~WTI-_Fx?$i|_EhWQI{akR*i8_>PcReNkhKCbXR_Hd+1DWpXVPtiP2q`9 zjQzMV_eMA~U|@z9#xcc)leLB`Vbyg(RiEN*pXP0E>m&kjs_{2NGM(zK%Y3MF6)xxx zu&%PNkJ{zM+U14nu*K@Ig|ma=*};B}I?k9=XO0jeo332tJ+8jTg|q*%&i;2Doqcck zMNVlg3m?ylIJ+XQWWQIl-=B1*u;(BzD0-(Qd#Al>sX`X4Q+v7vwG|(Ju&SqC-e?tZ z&um_8Cp$-{J4Z3YsaE^9#+24%XC%^YEjHp=icW=IlMMv-d;HF#FRbqIi-~Ja4xLyY8j# zOr>~CwRTJ*|1B;2w=IV~(+?=y59s;Y*!Pq5g852jzmdDuTGpVtyj znwOn4nK?CQPKoG=Wb{O#d2z9KaiNoVv6J|2Uh`b=!Ci(O)WrLjmixyil-DOzRc9<7 zM~!@u=6(jN)&4sKaeM+zr`_}7Vy;{~S3c3NKse8Hc!l2fs^7W-@API~g#g^6V?nC( zz-2t2GdzgA8$O9p#Ihlr=WV=8$#-c$JmYS3nSpxYv_&}gnoLca%-k?xog$p|Hhkmq z%JDtSD8mr zPiMKq#8)KaD~8AcCx%i}zSuXr>}gDPYBoD{z#R(i@Twz2RmMdp_6Bwx;auZiyH@W# z>AFYDyNoV6;#mWMNnNe~^(XXziBaL1JD}JR!EjnLo7F*fbubDd?gNW6HFm?pDs#-+ zoAdTg_k(WtgOMiQct+fZS|e_|tr#A#8<$zjNkAv#&w0bV?DjfE)??)NkYiylL8{}# zF=gYJ-Wen+m($$_X1>jt@2e7}3QzslO6R1iiPp<+L2s|ABlKoc!e6^TxaHh)0-qO! zQu;$R`$G-!x_Bqc+O>&$c5-f%iO@6c^1h$i^Mi_TF}Fpes_6Q&Vc@z z62!7$R4M;i7xmAAVFALq+A-;`%jvUoLVI^w&0V-&pCcIx3f&6aLrYqk#N4|xH3PFX z0}~C5ll_YmyYF$~`?n!CM1RL=x&Ab`nc&l-|?=C6UhJbAQHs6)#0uI6??iBd&by0&N2?qGRQ)#W+7J2 zKC5S+qv^~ZFz0H8S}Da^DZ?HYK0WN>2~dV z6_BN>$xd$Np;CROH1d<0`ALPQ55=Aj&qYU^DZ;tVD^GUKlQp5@Y^ z`>tL_ANOh>_vZ+$JW&_DOE`=#nn%=APS#T{1m_iF^D@V2+0(Q_b^2m;`b<@+Y*new zuetOg>%1g7A?$9%bJ}QsR|UGmyKr0&0fiwXqap?Ol6%_U1yDU9a#&;>{A$? z@h5X*rDYD@pnmc^G)GFEhr{Q=7Vpj7tavvYlD_dSc74mj6Td7ce&)n6yH?zwsv6a- zo7JovS%7U}0TMY_jU3Euu4VVu3dJjmwJS0wig}qRHe_uG-_LKd0Ph8>&0!AXca5;) zklb-d+-Z|{+CAoK=R%w4kdW+?p&NZk5MT(Oy_c9#+7Qm zZl^PPw=?=~uDWwh+*K!o#7*?0yyrWL7lbqK13J=t*ha6Cws@5gTTzXzDBNj^cbXxl zMU1sL87EEi7|-_zx&v*U+kQoFboS}H`}Cb>LHAjZ$+^hpTs((MW*=QVLb|~fyTQF( zYv~R&ckZBdxy(g}Q=#smUEdEW`yO^-rFufLdcw2CqYvJ!!a_s0Y(KY7eXMSMteuN& zKZ*4|jrAs%u`W(&)LJaoTI^)rbTe;We4Lbk^bP2h))ud{O|NI~f0fxw$xAPVtmSIf z@~*@DIwc4h$uqH2FS1)N^2HTvy3WiYQN<%!#iOuqSll;k#D}&8A4;@%Gg^Gy)kBj> zIb4u6kj)w>oa+_O^ZgeYd-Pw+o@%#YpZ<5N|eyH?udI-5V`rs24NTD^;xPqGHXi zUvby(RZ+x_;*;Y~yiFJ9c9+k_jatUDMO5yZp4c4f+SomNv`FGQsX|Ra!=4y_?P6E%aI|_FC&itaKw*1`UFLU#x|L_3~kTua0RE!q2w0Okx8}!(RqgU}axXl!7Y;f%*XZfD6z-*q`^IL#XZ=T@$(4hcZ36ov2pKwPK;}-8y_1Z5 zH!1&R%{|HjVpO$PZaAAmq?B`G$a zJc}4jTcW+iRNQo?Dq(4LMWuC3ot+tt4UXzNnuahtZO%?#+^MiQ@>9O)ad9s=m0Qz@ z+w%<0eT(P5iN03JzE%Sg!O1nR@JR>3Ey>z38~u2i{dfjoBChmirr$wk@L{wvbw#^% zMH^Xq%`CkgW^31<%sf-G&(y;2U;O=_(iO@%rV zqxep*fPgV0H&fR%Ti5jUUdD-L&A^>2_)~hu>>lBK591nX_OE!-bs!f{p@iO=>E;zK z`n^C``8|uL}M6 zj_0C>LEK$2?k>|BHQO1rQmMOIsrzNfqEqY|A`#D(jOWU13+1INba0w-c$#w4_v+T$ z*7*#&pTUrbCsVL3bzo8*C|9IH{AV!|IkP*Ll|5#5mGaV6O2iB%b+t16?ep*a?di#L znZH5@xM~NuF{~vzwEM(B2i3FN9WP)&HHjo*9lK+jzGp1Hp&2+kGKCh&YwfNgbGnR`Vkf`2lRw7&?45FrcIp~+>l!7VNy%r@R(q4`qs{80 zgJ2uq(qi49gJlbT`?ArXJL|33>SD?Z|xwuZ=bzT$It&-KP z5-%|M`U)|f#hA{;d>9b8|7s;qIXoachtLbvD;W7 z;dPL|d5zM-BTl6)IF*asoXftm7qg1XSw*4OPg&fRv*xDm$?Us2m8v(@sy92&(8_D9 z>os0NiC@$kYJKiyrf>H{D7Oo!(~M z-e!d@^x_VBqs?5i%iONRU8qD+tVA)|M6tu2mmYu7KCrk#u{qk^8{PVRZ+bqNDRg!Q z-3S(H#tOac2z`Uwoj>T~8>2hQ8mbx*Q&!oTtnN$>@c)H-d^x|38FaD_MyJDbx5M** zrpN0my1r*)i^xfYe`X&X@F?~wR3V(`wIG~t+0D1ib#zvzz)Bb6z3Mn~?}dH7Q@hLL zO=t6_$E(9iY1KnyZXSsFc)Zd7YUzHd}=6?24e$ttq@Y$a5!zPux(V|8ICyGTAlZuGRiikURuvB%ecS1{>HI$^VIqI0qjK8&c!FwQ^s?zjC)P9 z+TUo^ktr&Cb7xM}J!MJ6Pp8!n^lOiP{6ThmuBBH){+v;>gC5=RjD!uz=)@qL-w+Po z-Pq-gb8@F=PhUKHNOLW#>Om5^#fZO33SnKmr8aM2CF`dyo~cy$s#f@V@!;xU6YN8H$NHLvqgWlnb#+LpXDmm=z(M`yk$<=B$kPld|AX8nr!|`E?sT_SZ`p zcW~)yo}?}@o__-z$jCmo#S;@wEYquKEpuWauP_10W277XUeWVFQPRrGZl1$Bt zOarD$^)cb+pSqY;@ckRj_pXlB%DDM9aU4VHxLe+?gQ-8(tv{ByPLtPZ=6;{O-@iRJ zA>E|qlUaXcW#^3=EzKG&!#;*w5%w!8Pps+_>nU2HF?XA1$r`b{Ml5u@DR#SglJOi@ zSqx{+1qGGMtBCW`yx@vAKI^Zix0ojWFN)YQMyFK1N!4%CNJTjzk@Dw3{LW$g4rTU= zRrVUI=;kVVH!Z9rBvtc~a-$bwvm+7pMbe@#!t<#3Jldgh6Bz_)VGvYQmgxAEh#@uFk5T0~Vj(o{1Ab)r_BdH3EdJFe0|f`Jw8>9jR=rO%Cg#5}VPC z&FJ*z?e^xagmBdb!Nq%A7B17qLvKv=*xA0!bScy&Elbu?#r3iJ+z{C0UUvCA7S?yv zhN#r>sn+osfR}ipH6yDNv;Sn(wF_AZ!uR)YaDF?N^g&6W!l8Oi#2NMlXLwL&=djMu zK_{R?(~sxyiYGq8nYE$Q^c#E;CiZ5Nzx;RQt-|k|R6IM)XWywr59fN-U-I2JX!64N zeaa_i@~1MxOzpgE?YteDb9DHqmt{0$ClakMNVGyET3NksJJ-21@9Ddm?YlaXkoXPG z-{?$}E#xWDQW6v8##j{rOC7v%Kgb?Hn-1J%i8PX-~;aK1?6 zYTZ1w9w~FoAe*|^&+8XCst9MDnb?fO88$!ZSzoS~e<0-D< z!H94^XCM~cUCo@QX3tXxFpXM{RtEkPPA^|)Ac<4|v`qbX2x(@q#aZkQ&)BGW(5!h- z$c`*#M~;Lqo>+%ZtU@MrS=B`0J!=HeQ&`2l0^xkqfxos&;&VZb*Vo)}`r0jd%96NO zBm8sk$%~4@UQyJeA3{)ZH%iuzBUdDwEAsA-V#_c$8XF|*@yq*NJQWdsvM)HABmSJr zF+;S%+Mp)Kyx?B^$WOegjOUa5$|&jdzUqtj6?I{=bzyf-&xzc?WNzR9+_0~7NcIE|Tiv=G=!d?=6=ThOmE~7H}i_;;8BT-*DSzq}{BG8v=_9!fP#t3KT_?3;`sM*jK{pd{GNY*5*Ft;tv zZHJ{EQ2}D5vH9EF`yD4B=V0b27rGpl#pUooc8+lFv{>WGS1@`5@k~bi;~EcPgbsIz z52_O%&TFVCR;?*ksHI;PEq(S1ihBi_BHek>=+4M|5&rmwr{+XfH*UnwH{<7bv$nk! z(~Big=S(cro35?5pEQ*#s+B7md%Vp(-b}6iY_0vw9(#6=JrPrzjHw;OlGyiZn)P(T zN4n7?o&Im#{%@n@%gj)ot}L;tE36?XNVFs8tpiFB>!)T#g#!a&g!4T6>P@|?qZ`$_ z+M?EVP*d(uPS&{9H19N>z2ENMZ>9cXwf^GHn`d7|XU)>AMcS#D)~%SS#=?ZS?dfe8$IBi1Dh%cvS*Js&OHW)m?LSH;AqoYhZl~nGxL!YI?^5e>E6z-Zx!E zV>hR{n=?!y<4V2F2czFXwco*ziQvrl^qY?JYEhjdue6(2TIkeS?9{pQw5`NcS7WLN zY%U_WvTIy2Oo|yMi84^hDo~ZRQFU$fyt?2vR83EI`O0%R;QETLZucn3&vXgJw>U9zS{=K3cPu8Z)S2L+}*-W~|v$pxH?Nqht zi>eJdR&~)%x>3C&oF`RgA8^t20pDil_bAp`L39`JIPJ1(L9hZqe%f_E|YOZ%{u9us-oVRs3*$i(>FPwXH^&Y+D$gz7- zm+r+$x0loX8}^sl$}Kw8KRMT`2D@Of-wU-*~x~r zj4}C~r+PuMdcl|#!l&YNM)q8E=T6RiY9xVFe`@YLL?i{mna^P&a;S1|tT~!%j!GA} zY8SX6qaSOAOEdaG)+fqT`U|Xl^U`CZD{QeVY~y^mc|QDXEO9P~aK6RRr&x8OtGpY$ z({-X4x={?3{I|OB-wOH8#S`#MG<;t4;2UlM<4^6))Asax1`W5vIrmL|+3gM+DS+7w zz!%Slz1EI2qdg!0LQ~E@Hc#GTd!!ZOfe_EX0LAvj;bMcX8|MRk2mB_DO5;@hulkN^ z+u3T{MV@nC)1UEdBf2eR0z zbDqka$M51rhcv|V3ZTbm-O{b+Xk~?8UE!ZZWu2-k#@L@vn7iSSpK17{>>(oo?)=Mh%c`5dJ*>y;E3dM=6_p~Zt>@WsTshe2&>M!gxIx1Ow z)!d-#GqDVP65_co#eI*xh*Smq)DWoX(U3 zRTRRx65>ih_^IP~Ch_FoA>(#hCeKa3m|qI%uyMvpWWpsg;f5e?+)lCAP3eS_W zXdttOYObO7Ix2;lL}k$=I!WJWJoAFDj`oRu=*fQQiB8sOakAdcuZ~OFu2xukIZ0A+ zC~JnO+(pVuN+}f4E7s7@elR+pMUem@yGxEms^eGGixCA zKmGB4|MBBLN^hUNzBsraI-CFb-~aKy{qgtXKl#f)`-lJezy0Tb{EPADkK_0w{_ptn z$M_P@pa1bk&p-a<^MC*0FQXH6{PC}*B=nEp|07X*9_f#8-m&oUjPB9km^J0IL_VL+ z=;x>PweS0UI-{ST_E&)8^XZI!eu@kEbzMI{|L1=@zxKcThu?hdfB1KQ|CfLE-&}v3 zfBfzL@yAQzJAVGp8~$*wyw5Q``P;wyEl<<@JICP(~^EHz8|0d zh<<(geA#Cc{CxT&`t|8^2p#9oPk%(eKJD+b`h41dKDl|BKNO8WAI~s+{^M)>{QTFq zinr_6P5PT(ckZg={YbBJ#rtfZ_vv@{`pXZGbU(j8{8Xm@#Gm~^|9zkEub+)?@!$Pr zzUlKV`-JCNN0IO!f8K!^{-1Lv__Zv~`;}Ec^UKGXJHelMBkmtpe;!^ZG2@ z|KUIVyMOy%{;&V^_ka41zRo#=9eDk?p#Sdg|I5FBuH$c>W%yVB&tL!X?6QCLZ~x=Z z%lQ-A<^Qj(vb=BL=Z%Tc?7JN2&rf6YsYagl`1u&&C;zE6d>+C#dnn_m`+OXuPX^rM zPls@3w@=~l`8YGtzChiHEKteNoX&uE?i<<~8V(ahJb zUw1o3Gar8Ti=V$aM4vw0uiqS__cxc(fdBcMLo~Cb`s-(7H1qT;d>W#eB_F?@QjF$P zs3ksy8o$vn9{lyQF`9ojTyu;*^-cZtkPyypN%{4JV>J79_180u(aZ{4xYHr}`Iig- za{N~56@K}A9HY4cj_`~_G&An=*S(I>tZ2du6QlVg?mIq-n^&DizbC#g)hqLk*HvzQ zr?bcJbjG_mO2c2D#%QkF``1;+Xm*84{`IpVnolvj5iyz-VAuj;^vSHlTb%e7|B!F>%x6*@%ay+@vplPqxtELPqA0O z4w1hu3*l$)3HLHYv*QuIag08@Y1q|5H20qHgk$vHtt;+oF`Cs$I6`7HS5|n!O;323 zsfTA6qWQLjdl{q8+tT9MmG~saOCP=z!cPb1if>y8KTjhccp90XcYfaW`FX`d2;tmE zu3vX1M(=lTI2#+!#_`9_8-M$Z&!oQAA3vX1h~}FUcCZ-Do#MtRg_Y8dxR1o>{ktuG zrx<;DA>nC4I?8_uv8&Gj3yff&6{DaW%QMzebo zcgBk=EWg!7xX<;{-N?8b_}SOY_2;J{`nh)F+798TEA;C-6`jlZh`UgX<~tdV&KSL) z_K}YN{4_*!mr3E|4ADHlu8`4%Xnx~T;x{h%*%DV)jNYGZF;|SyCrb^#IYgg(*$VDu z(>D$$dR7M9JND$xJ$Z;aA(zCvH2&$=ijUE!*HGg-9>SR)J91dCHh{gcJzj%qRM< z-yNe*4ixT5()-x3J2hqYH6A4~ni=*HeshRsP7o@z7|m}ScD5MJ_bt4QF?zr6E3EPJ z`-W&);3A=jU}@%z^4_xAODT5Pj}Q;~nvi9@b}!=KCCSq!@ipizB>O zF`PR|L1zQcvb}?xu%mZm6z^F4=aUN2`{|9{;O1^nTD2gUYW-Ksdn;W*c|BSqR^&F7aHB(P!1?_?M9pyoY?p zQ^X4DD3rSDq_19lUG#0I5J$zm+8m&+A6@(BD?}uifBqZF3nm$U2b%32?t zxqQWJJ4SPNjd|F`JS?9vkB`y(&7ltvqfdqxcF#j~FZ#_%{pQhcM^@TYyM}r@Msqg^ z9kQYh*>ggKdOJp+cj}01GlcUwRXiu0WVOY`7o$(@5$<$|W*!w@)~t7RlVyFq)007g za|+pG##|t)w}B_o^&}dyp|)g07gy%Rm08Z1al~joshB%W3K5zffOv$@sSM~Kn;6wjE`#%R{e z9bGl<5GDTI7`?wa$1zHb=5F1vTQ{8(8RrCgl>I8ShqDcbT=p5aCYoDWJ}(Ep`B6G}m36-f1pa(M+!D zCAS_=`WVf8@d~?Xh~}LPJ6??DE*`EbMxWi`in;kkJViwtv8s!hFZ6jXUUk3YHXft* z(~e$W*E8&xW_C?8Q~b>_dOtnlo)x2+)rTsnx1~x7{mB^3w?C|%7`;E+@sv8BQh6oa zetsIFnFofSjnRDjPxLhKvnj`XDn_5PBjo&reTnD3hjThcbG?VXAx85)hu(IKX1;VF zQ#({!9jL8vW<5J+>^@d@A3OHou06P5#TKpD%{R)J8E4OoTl^T|ydSy6`;jp}kl<(Vt0Y?1{!`{^fvIh|&99?-fN`ls#^}A~7VFO#&1@^?7mfMFfQzF#y;NO<0ey^q z+{;YtnR4PE!jM0IcU9l;j_+cOe*Es6eV?0spC49;;Y`KO_8lGcBG}o@D&BKb?4+H{ zGTv7(e(%obkRy)`YqA*4Jt*AL7|s1FTv&`|j&g+BIYe`Z%BV81N@_;uB@4?? zfa55_#9;29H1{ueEUaVnStDTwstfKdWCJn!JSTMWPj>QO-+;Jt7VbhF2(&H)S_OKo z3cc1_tjc4w&oo-a-K<8%99&(8-u5eg=@`Ag`^Hr7=2UMi_0R-H_&$vm&$t-PT`0_& zVl>aka9YG@)<6Y4V9aDX`Z`^Gofmi$-pBLu35k&+!k_PZ!nelh{2eX!gX|G@*Q)G2 zBYVr<#lkCz@N;E}&ja&-bjQOiM)ULz>nKL=rw7n=2hnu}lfk0N;1A)OunzclOYADd z=>5&OBSm*4-{{fZ%%d~1m8@(f0Z*KSCmxdFXZ#eC^dI)a;k>|eND1d_5}vB#PIlhO zgsDu@R3`Vh$HeG;XAbm24|WDp!8I4{=QnDOn>EM4SD{|PBq`yfNIEHgSmK4Zv7@@n z@nwq9`;BVM-C{IXPR#pM>kL^r^nOu~3|WSde`j9RK=q_}pR4lkf;|(x@MkBBcjMyS z_(4(+e;3u;_etTKesYQf494@f!h|SB^X;!8#|hE<95B%6nrC$2RJ(Ah9ev@hzHq){ zZ#PDtJ?mojL=;%X8B%$MJS#EeMlqW2QpdaG&cTfHlP!`q8C=x3mb^Turd>S zp#=$FalQv+e-g6)d8^}O{t#E;E4q4!X!Lk5-Jy$9*Us9%*SM-f{4r#~_JoR;A`i4~H8;mX2r4S~GS-8pns2YO`(v*Y~A*o5cMFMMNAN)Z0| z98d&=^Nk3o$s*L`Q@@6_7o$(!USe%`3bBhSyQs=;m`%22Hi_Gfa8|?N#BG{B4ndZH zT}-^LF|H1`6yba?!qe)SnEWvO`}voXavQugDX;7Ej!&!dq!@;e=;Y&+89nrHQZ&6) zIW|OMG*A0*CU^C&hv-^Z+f6g|6Ig?59MlBQ4N^hdW19p+&vfW8EKwczM?ZE_gPj*T!3X<04SR0Wp8HPXqaQEz{&M5suN%Y?ZY?C*(-byYlmL0o8l)caJ(T zTz68Yd&O2ujNYpT8m|eBH@XZV({0RTQ;kPljAjlU_T;2JdDIx_B$LkoL}d}8vI2=* zjYPg9Ha|x1Zw9}$nBR(OrKwtZ_QH&5LB=ye@2IGElrRoRng%pvvQ3%n_Zdb9@w$t5 zT^i1j#&e{ACR)T29R>z?*DgK5iY^@2MvoOkj6UxvCg4V!CG^yZaRB15EI7?VE?&`9 zqn)4B%`Y|fZelcdrqEM}(adh*b7;#9;y{1dr^uHX=Vmrifefwe>=bnBi#qksbrjTf znm-h>?u*c!nD{kK{GRKKth7rrU!XdgP#vkEDs1ZW-w|CAqxrUEye*tB6d=%x>gy6u zml(|)G@RF6=XD2ez6&>BPRvtIt0Pom@2a{e34b}M*IwiP5Tm(EhkkgB=2ds(sO)s) z_%g-l{mnodB%uu&aPLjH_mQKc!(Y|gi+!Q2*;I+s;uy_JHms}|&5S){idEc)hIw5x zn;%thR~7t%h+{wMTq_CaXJr5MnefxhACAU4xT%wRM+RVwJ}Vc!QcQ_PMvSZ-Yj2d? zVTgqA$LE>I_3Wt$Ko|&Tt{L{P;_26c3hQ8=Ft((VyS-5P7ud})e1CfbdbDv@9<%Xq zhFwIDR%lLCX-?ET_QYZ|-<+6f7G|0q9ONzz@|cEUCStyJm~X{so>2{F6!PPz0tss< zM)R7(-k7vER_t$8`&$MQI}3^3K(B9N*FP)bL@h#uXOF0Y7=3Du5^Irz71%J+3Oi>O z5-$PqoP>D3u`+M1%o6}0g!AN$jP6R_PfMtBL?6&N z-V^(>C&J-Ld=+jR(Rm zWLKH%Hla>Us#Av`W4Nj+Tv9{lv9a@5PfSftF~vcptYT9BkTLvu&7Hf?u(S;O+9~xH zRL@P-b4Es(l@SgrL}b9oah|&q|L(=VJ1}rP{^q1SHC7_hyBZb|xL5eQ8C}V&u4KWT zEX6&kGroujKbbk+2jfoz-aba3dkGW)YVU$lG&7*E_G2`2!pKk7^sF{;=$f=FP%8Dd>c9Nsn1ko6jEK3;=g=EC`Hj0@0R^~- z0X#6^Vcnm^jl7bEF&j`vJ_7@tg@I0BjV7^1pHnO9@?D&NRrE`$S)&;oxonQy_cyMl zh}4VG=ZyhRqKHQ^=-m--cL@1?#9BT^pK}h~T6U+A;*;#pZ1x~OECs;6*E}BY@^d=(K52587n9t43 z=dURKlwu(kqnVL}LOw?G8^@V-)y(>9hx~=%#`p2Cj>`d-c?{*bV$tv{3s!o)O`&D_r zD%8fR)W+V#o_Q;k7KbkxpVgvXbI0>)#Sz5WVd4Im8<=@*nOVj+wt1G)sDEtyc1D*X zvr94NBgjgavw#!Y#0l*!dbILW>#m$(}1jLLe^wx>g3DnABnZ36pl99 z%3t|pFQI^$1E2GSKIp}rXiWCP?wXmIcGPTLHCqCTDG9|i_VMtWJCUP<*%qqQEcFJ= zYMW=Z33?St4Eu%?p)H-4c+E}MjGDfvrcW1i^e$pK8up;pR~436F~#s_ok_$+S7jdd zuo%tzRdBzG-{pimf|{rR<6VS2$0^r!%8ko}nyc7Cqb@)-hOXbU&O25;cA$Y92sK1^ z4RKPd=Ty!M3_>;rp#zWBee!o^`dwPqB_@Y4nxBS5zKC1?oIVjrkc1?-V*VDRdA0|9 zLyYF0`~|=AU8ir%!9s0&YG#qZlT1>x2gfptWBKeE5zE-b!-q~!w@wc<(5f`h3Un!p zbSX2+sjO=1yOQlfxT;G%h7*|gQ+)R`=I1ebKfU9OB}Sif5%)4J_cG2)FDZe2McWTGs?d=x zM6)&!{+jrH33^*edRw*QUUqAMW}>{sUU{B*#D3nye!lLC89!b0w@>_SYF>f|mdykE zu8Htf)g~42z>0h&AbVP+disJ7dA6a)kf3Cjq-598v+3&DjB_FUYx-zI8Et78}|65Vl?xRjywcAeZo97d7g@zw=If=81f;U&*BT3 zdZ!Fnp%qf47199WZNl(=S3Y>#_MxVT;mk#&zd&Beu3gY?&q) zt0oMnMSLqx>3pJ6N~)APU>n`2jSC#AOPn6yMVjy;8}c)B01CAB%c8a4iPP)L3^5|#)k7MH z!LTdeLOvt+E6V+LUAY8%l_YnS1{Qx4i+{YnQFrP*mmEIo&Shn#Xzf;Yc1PwN{_?%J z;Di$}3GF@9;*cxjZax|8fr>_)#>|~nsxgCqU*lDC2Ht^S@0#3K;6^GZvK@{b-Hsdy z8eVDfI*XZ#{Y&slWxY{@9RSUt%9Hn?rv0H)|10Y3d-mUeb!x&o4V5Zrc;2o%8mn6D zPz`^%`7akBw2ID0Xh<|^NW2zAoCY_2tJv|?^m1tVgdM$dT|c{U#-5DYVZ6N1N!J7@ zLvb%lac^|J!8Re5uEaq~jOJCJxN4$^kIIuqDEBvMkGo%!s@@F+%A0f1k^6+|q49mq zAbw@>zQ#-kegDIC9f)R)7#JLI`#Yiu*bz4tsKp zKKHt^USe+y4ogiAO9{QeRP29o$FGcVKF6qjdoSv@QT0Q2BtcCeNlhT3)=I9mhCM?( z^^3S+U-20gZ+o?3%vVHI#pJwda{kf`;{4`R&TwIMUW;-=71}RVJoB#_3d42qj!zjg>Y>R5 z+!6PuBch{Y^nQveFRRKM>P2`bkc&K-bC}=6Xl8b?Lw*aRg<~k|6xy7;U*|8+KZTB8 zjNYHcs%=`e8H}bZM$-o03T9C;vk2-3Md}An-V$rHOPWzo3dpCkb5L*)e)g9V&oAjO zkFyjwf}(69D!V7vI|b6sF`7>?dRYk*RDkL!W$EP{s9K5s0$`{f|CF4tf^AaGHbGCf zs;67fkSp%TK{32aF?{qSft+7dJ#jioW2M5=u*%c$JBzymRMv$l8@iO?s&8T%UmJ;p z>$2`tJ*s|4eA7Ie0|W+P7jS=2{dALQkUz)%D#E zB|)YyS*35#T-n2RhqB-~6;)@U>!14C^#|L;K10wGY29qMlj)@z&anvhLimH=h{HdthbBUzU^K(Ao@>wp%Mdqh`p`RNGXg2>|#c{QLJ_;hQpZ z4H4sxC)xcZ4@emx{H!sc@YpqJaec;UKBpD3#)O?OdFMMayXSdvqmD|H zQd@c|n}j;Y8qHsJ`wf2(+GEMuV=1nW7|k3wWY;m8yI#Vshne83&^cIgP&K3V|)t!#Y4kxFP8U8d`{xlVMoGLudvwK$TrQ&NGRE$34 z==(j3I8eGFoF~K=eazwh6tbV}DOV=mPyPOaS$bJ!>6PD06Sxh36(?KO$u=gG=vX*A zkBqb;4mx;J?OIh>z{r;VM*|YE35l3cVFHxz~gYDY--4!58jgMPf|R zHKiCcr0~90;o!i=Ok!hJ%u%c6sG~v#cMHgc49}1(&yWt*PdDoaIzY87zF}XLVKaT} zvpAE$VOQa>GkTjj8O^wHl6{J6;6Iys2q#y;c{o42h?cyBmaJe3R51lE)Nq%2*k7G0 zo=hx{Ev~T`eZCVqpmgCzhE|L5$B*#$Iu?080Y z9OTj2Spn~2(!1E9jo$CYS0gG*D5HJtT9{cryoLuOZi z%`3*{0UcbI(pgE$D^*@_J~$R-@* z=!oOg##8E0Wb0C7%V;6yh1q;jwfI_j(U_sJLWDy~F3u)8@tMkUDv-t1$YQ9uH~Zg0 zlQv0{cAVe9s}`-UcuGjEdvxc(O{OD6g8yxjA~9GMNvw+JpDy(IE}d*KGc&9CK!5RI ze{t}zFb5?Y=xYbD!lkszrL+Uh)s5zAKm#^sWH)(v_k#cUf;4>I&DayGnt%)un^?0R z)=sFzMb%|~*RdZj4jUoEz86QTFVleDFwbn9XBMazm1~`6=9qtX`GS1y6IRe7s#p;j z7`41&)WTI)PhnF$b7S;AN9Z=D-{>|T@$VY9S@9gIs`R)v&3^(qq?&E^wY%LRJKCi> z`kaz6_et_NN7pQ?YxeBU1$%Yjo(KXr!uKyj5v1E)y`Z~Um|2gS2K#B!=@n5rCo7x; z^hmmv9&_jf$7o(ve8SQq&6tAbbqX3aSf!ReyflF+$LzL1DX>T>us~R-Sm__W8b!Vu z72*I@+5ibGjbxTa#dM=C>cC&H*A?WrDsJ5HL=LBIT2KXXZ@9c)CaTp+r#+(v$*Mty z9#lAsJE!0sj)+~3h#9ItS*k$aeQciHBDz8~BJDEz@mc-&it47Sx+wth6=V3|Hs9qo z|E&MWi@TNS!^a`#MWr-yV8yH~a0)4M3hD6f>+_0Q5iXRcFqk2ux16Y6EI_h^GOD^ zml)0cCA!%kQZ51JtsCrO{AQ>U4<3YgbV3lnszZwYlC-BW8U3> z^J>C*eRmXkiG#%Bp(|A3#a8XbR^urXqxVxdq9r+^ZFCq8;O&kDB^WBJdaMo>-|%M@ z9jB^}Q^%)WpMI~}z9W>sGX}o%1i!n?Jb7j4ki=*{hv*bjq`H)Wsm$u3wwNizXy*C} z69RIj&yPe<2_U{Gz8v6miam56VikJbQth!KE-+i*4mDsQ@ z%~S~uk{G>D37E6gm$#*02Oz=*?|9WaK6JA&zdV$Yhs`!gkM8^2pkcz;JYn1@b~QM< zwE9m|%FA#D%XS7!5$GAC&kg~FA)%v3B@RZC)GIR`a-{H3G2^M4@r()~{O%Bat_=O# zmGu^TS=x^?YLTp3q=Q}E#jgIYm|tK?Ru)IH?;ex|^+s{M@zpbE@XN#cO!AO`JwcT_ zK?gs-i=RI<5JMhOF*O~nW z*#V?^GtwM-UPXFd31j!9se6THNtI?v1AwO;#*!cG{2lE4ZM1y8>hw35fVR^Pk(u+K zY=rUm^Q(ig*3C~nsr!3c_ZPkPs$P4?e7tKup3!5;xBVJ6+T$ls?k77XTO2Xi`AO{j zchnv+-^bFqj+2eHxQRq=tZ^e?4|TDJ3h;@=_{6V{R|QhE29n1&{um(j~gYSLqoi5n- zDm?>nm#zKx)d%vWh{sA=eT`?;L}$Frs-t7J(KXvBm|~Y@ioH=qLGD+T`+d)m-XkPt zZ-*R7pxczK9(V)$a}#e+z%eW0m_2dyp1-9I2Suo~_%LOvYzt@j0v?Irp_4!z|Mc@) zh3Ion;Jk2HNA%{Iar4Z`aL~-h;$8KnV>t3XpoiGi&zNFlPB8|%IIM%pU205u!tR?Vq9)XOgAPMme0<`}K)xdx2##z7 z2Yg?feP0W_8OowR7}A*-z4sClG)W3H0|AOm$*6;fV7&NV4CRi{`#QPfk4`>tN#xv> zxTD8tR;N*2zOsur7*hB~tBzXSIdAF29MH}^ghs{;K5GWwp!M3M_1d6Z*rZ%I6goq$ zl2@G8Kdy;bq03yQ%l!PMa2CX9X0y?q;Nn~SeZMZ4pcPHfo-->{Eisy_BeE(_c8MD9 zM#~Gfx}*QpwPsIb;Ov@x?F7H}GI4hh{%6#w;deK7AfLP>+^rbBYX=Sixi7lh`5*5+ z6u5zu!};d-6K2dFz}%(>RE39j<(WHDvBb>Goy4eLbn)cuVCVO1aSh7o_GM)f(SuO= zWJWV4s~7YAO#SXBTA^=TrEk3HOk{NIvL|fcSJ(I#=*o#-)}X=Bq`}d^|&OpHFy0$qSZ{fP_u+?Vj2 zn1f`^K|0FXuBtY{@*v6aph7pbS~oRA_brRF3$Mu}ugL;&tRii!?`!XQhr;)b(cJCB z^66eZH##CW>!6I8QO=8-R@596`*FPZ;J*ETl)X)_ElqD7Hh+J`9ZCbq^wBwkSpm~9VXoho$ zt3k*oQ4?Cg38-LZcApZ~!2P!MuMUpq)P<>i3s__;u*e1|AV*L@b{HVmZZ(xsNnU z_6}w(xc$Q1#8o5akWfpSFb^Iui(`aY9Cy6|7i1mrj5w*=;dMUR_xkFc)PZf@1Ka%G zKfbF}w}cpd1CWgYeeG7iJs1JkLcZ8_D)A=K__>%LNnO*7~0E4Zd$Rpd~QZx`(;e z4X(O{tLDBM;1bAE1BUGk3|pRL4Sd0P4s<~25c7lqMO`aNe7l(`|tCQznOP^JtRK|R6*>IS~KE%@f{W)5~1{{?6c zC%@px5~tBz5!nSE*(-QtGmhfUsf66}UFP~vCcNX^H-S5bp1wJuZ+QCh4R@G~k90Ti zIeHBk7HBa>&|(a5*dD=Qo4s~`X^ZOayQj|pBzc6s_>~96h?YBPI^w+(oO5Py&S}6O zZ-GC4S4Ohh(bf1f%&`GQ?+l7wMuvcY)k8KxkWHYY6S#Ku;M&ERoO_ph@K;+fduN4f zo`B{}Tsfa}#p7ZWoRI+|qJR+%;6;qUi(p?);2VBvUY5`6gX1A%3GQyqFeMAlnHkQR zyDR*H?0bdmn^Aaoa<(tDf53STc-;h*`V1=dy@g^WljAoA@1z#qf1kUD=@A{~v-L2a zZGduZ1mzl6Yi>7QaXQJsdBY>*KNGa~Gx|F$?DB^>p$qzYEB5sgSfoLyr{l#X^v;R@ ztcnS!81xfZ1MF7z3`!8#6DjP81XUKrDhsB?jxa5@gKK3Eu9XYsqOKm{JGPYOPB9A9l9XX10d zcR1~FHZOr@hazVT25m#AyPrqwVxF=5PT?cXkGyZh3|$bYvU;ep?v509Y=M(Nn8Q}F zrv1D_zB5<@OC*6qTMDjnpq!aOIm4b=?yaDJEuO zs8>c%uUu!--zT&!7<;(F)I+Wj;9lbV8JJq$=GW}+OD6fb^8=nkoX_TW>-MEYoUl3& z?*PB}8T{f|oer)N$ZrGCfdb~hzC3{CqEA`%nU#+;EAwbt=wL7d9{6j>W+~tYUV=Mp zD##)WuI~hV77Bcp-M;j{oxkQncz@!CT`YFuCjYOnGqJNKbm=2Tb76;kR?~ppc7z<) z&zWkW`fo5%qQ!Y9P@qGo@7jcS9Q|-$x<{+utOdYhqrTdmFFmMl+2JZ};hb4d%48FsFq}1eiZGLyrtbKvI|h*#Q^r`AfIp_SF>`+%TtOhB+Nv zcY{(It02H~TflNB2&HGxNq@2>ujuKRY3^~P{(iJDg|Ydy=ObMqp1&P@h8N7TUtyO0 z1ijasUnre-i1~75%jg!L5trO_CS)}Li@!nk-9q-w9CoNku~!aG4?Q?NY(f&U5<0GY z*c>6;f4zdkKn+tG0eP4ac>q<|ps4X)=%Kd)50aqzqrelo@|Qllj_+ts+`o83^F7=g zeE`VsQ9ja@;K1z}ux)-rT`ruyc22(wQQ#8-YnUQy7(DX&j5R!%#XzW^JOD=?AsZ=h zzfe(et!VG}nz>Mb^}+6UcjV>uME*ITey;*2riOb7USt%#$N0nK0FaI=ELO#^(g z1$>hCU_dm!JX~Fw1>yTsVh%cdrx9|-3$t@TH)zCe5TG<8pfm*3Ov+LHw2*z^hksRM;iI4t%7~sz4SLo;2z>QqXbi zq#b)?sOtj!y$AfAz-pL+({P8$JAK7Tpb7EMuon0MCVZZVs#N&w8nTM)8v{Plm9$_b zL2WSsNt`S89LNJF5bkdcEb{)PV87#mZ!=*B$g@UJXK^k8NM-CwIHbu(nh|^MP4L88 zz?@k0Rd2aXpF$URfgWv9bh;RLKgZYo^gW!8yZ$H7@Tg9TOxz4>$cI|5d30rbu_L_S zIfV?cKsHpqXD5I%o4#0>uAAS#rp*rIFpRJ2#ie;Z+Uxhqha|`tN zr7+Zr6MTJV^z}{PZk8~!L z-)Z1?g7uaBbMlcs#R3>?@L7k!QV{AMa`7MPfD8733liko6ziHq*fphyS{HO*EngUk zOHNzJO+P2S>jC&k&p2Pfu2|I{|($&kb9UWBHDpj-+;N;0&|fuCeQIUKTKLkWHCEEDWL6OkP)%@wyf;;#Oe9b--qN#Ab%)hxtg~NWW*#xM$-e)D&v# zZ3*ft*c_&$zzq5sX3!7lRgciCCRid=qJn3lCNnte-#JYkJfnK>j9Oq{y`pPS5vbD&4 zT-X6yUpt_y)_kNHp8Hlke5(aKt`*gs%V$bH(p|m6u3jT11xl>oNw#2u@Cp-zH!TO> z=M~OD?@CAEq-)^A*8=|o)R8l&Be~z|P>338au`|L!^GMK8n6~LV0Q&8djrAFiJ1`m z?uhEw3jEd@brj9ht|7E{{l*0Rtcnb4BqIuUujk)R;12m=5BcGMHv6bi?N^Xh7dn5; zUCsWt(TNDyxg&k~UrspNXRO$+SXKiktQMWr?=B$&y4K^nYwf?)42lJCB3kudGOLbz zPwtJbK`jV=EEN4%K!&k`3Zp><(Lx2mIfgrnI=-*053K$h;rh8U(z)jfI-eQ(J(tN5 z-2Z`p#kp$5AI&~`e+s)fiM`D4UMIdYh#Ow}k)wl}rUwTtn29pOOq2npVk3Bp-DlM= z=oYQeEt-H*%z#q7U{OHEnSqPL+6YkXQbb3l|5wy8C-6Q^VRk_CsIrfA1vpf>2UPja z;^{C0wuc$81UnOjo$0e5cpXI!ItuV98#V6r3mt4%=&geFB?afp&y~1b*GE>TD!>=|>yJCBetd&ooJUh_mDccORPFSoEA?IDxY&1!q-e3Ap`%!W18v)-}Vlu1~h)UB+_g*MTQ%3!bc> zPpa^_SSbx~!5d-bK!FLECFTK{|I=Ki7O$2Y$bs#Eob`a5 zeX1Mx$v)c8>F!(#b@+(<=;ae+AL**D(9`A zGt@ymqX5_$P+`4Hv4jkxhYVu^Gk*qVeh1cDk8{&HFfM!O3UpA{_lQ)Z5+>!Zx2*!^ zfsT|Nri*m!biB=}eBq$N+2$iXH3yuUBWAzgRo=fRt5vL(QMo;UXEX4+C*Wo?;ARaB zDO>QPoG{mThPlS97;|q$$Mtoet918BqY1h349btYq89ipBmYZg7)}5vXTT@#`wP$X zfGQbk=miz$iWMi!Qkh|v3NvXz4+nJwYdJv0hn)yudd|S~-0eO@#2|lRmp9;ablm9& z&esgx!2xy1=+P4=A+so9jlRd#U>%KwS#+-KGJ%?Ba|sx%MpnUd>R$csI-748l{?!Ch!YL;)}X zitiKT8F0oBc>h!I{=d7$b?}Yt!8f+U42B+NFl?JObihO8asUfugozkXP0X*kTpjV5 zj`j5dU)dFWW!Y=Sb%pA8_XY6S{N+OJS)e(13KGm7r_kf=o;B;Eebun1uE-H&vJA4) zpexQ!r0yhWVOMR?A8B9p#KjMlZ*Rks6W=#D@n<;k7j!IF=va1`Gu6YKsRp2WK zld;P+z!PwMDe4Fi7M%RJ;7nfOOonY>#a#f3pcQK%&}q$})4FR@nF#}~HPA=zFju&T zxx$>qLkIld?iw+!$y^5Akcrel-_gbw_MBjULfm13NB;cs$oDyN z{c@f0*-`rT+ycigRDOWnWeaYX1DKE_Fd^^r9bfW+1fJ{ZyTf{$EjCHc?BISz@Ic-b zI~#y536)1zW%k{*wt+i(3-0J0_^LhdRqxZH_}2CecN$rxKyUAX-Oe+#ora=)^$5IU zNso#q5Y|FyxtCk_{p*vxe@9rk%sT?bNe@WfO{tI(@yG%3STO5%g;~F>p>x+Yf(sBJ z2Q4569b9dDaJ5}!5%_k59z>n?j@?)5;84c_>MZ~VP){5i?} zp1*L<-zltj)rsCW+3yxU+J75tEh)HKex8h<%hZCG>jZzkiTNtKd;z+JXAz)GGoVZa zhaiPB@Qr=U(?3DYj6EfoHPynbsh4>?3HTo=cvzFCmiS0>8F#mOyjzfuP{>EvH5ME* zR`^_>k%lR*ydwco&axZAl#m^lw_KRvkpEXb2r$dd;sO-59ju+i3pClTkqc^|wQCm9!< zNFN=NUR`Duo?r`45&{M$1qLSLL*&0VFf0d1Xhu-b%mQdp31|^mvW(!!^2z2L-sdCT zkv;A|f=Xrj_KuJ2M88e28PE+I-`y~m&{E827x=HOFohjXzZFlvR4`A8z1HH7bRV58 z2Tv0C)~k5L&`0*!o++DxYVF=n>)?{zqo??lm9t5?*p-N=OoD6!RcoNH?(=K5YJm*u ziyPy1?HRh$8E!X(wiChq4*n7oI8gIz`tL;bV(|R^{8xs|5Kd?2P`kZ(1?Q*h{M5JU z<8Q1&RuH>9Dh1bj@V*?u`;zM@r}b-Lo;LKxd+3edS(bZC#a;|_m?rrA&*1Y?b0q=}F9i@YQ|hpAEQ`{1sshS}x7;HAjmEx_L_!EqA?!j3o(76^DV@b4Np zVYTRl1-3jhdX~Xorudh^=D3Ym^#X|wLe1a{Wbo*mQlW;cSi?2wd$!Q`Y>?l#`Gww3 z$fFSzF5oy`5S#s+d4A&03SF%PtkV=(rxp1^^~*QB0%i;t{GEf)K=RYdZ}fkcKF*yX z(_qS03sbfTEPW|B`hM~rk45I-2@Tm7h3sp=$+^PG`N;s>Q}mHOML*Xma4KZ0myqjrkbC$3?E`c3yW@$;pt=Dcs{u}FBRHi^a6+Ha2^~PU7BII7 z^J`|9U&FK0L5l`e$LBgcOEL$?-p_FYY@m*v&n@Odd=;JeD)>d!(0Kw3fC2_EK=?eO z?)jSO^2-UXt?`o~389dK+{p!s*T;Jdm_jWJt<%xZv(|CnF8EYE8X>?uyAnm^5J%%B(gX|C9p#(Cx` z`eIjdhXCsTcM-2#r?>=2rlyty?Vj~ zjt+Ccdzb^hr2xo?!u_nnF5SPTTKkPJqDJ1AmbbqU`SqqDcuRjwZ}_ z8P#-|dJCOq*cW=(7r2K3Z1b;~qM!h(A;W`rkHWi0;9NuH%gLhutp8}>G}VIB)Pk19 z`b~!jdOSfBcb{iVFtdm#);)KY%zgjo+RkOu1v}(-_YP)#0YZlE(%?Ty!GH3lD*&@} zD9qBi&-9!y4RD5OfS>;=kkyue1zd1lo+k!4CQg_GUQY|Wo&m1aBe+&Cz_?cbMqh8U zN(e@vQka0+;Z5z~O}#5pKHo6|#sFE#eg5G9iRlOmQ${=7{TP^CvZoJJ7dVq9WkjPx zhq?ocvvcX9f$J^>*WE^*LFFUcKcGjP11{1blfo%)z~r2P z$=RTCX|Zxy9wGIS)p3xsB0s+S9nnYjjX*gcl?Lwluh4JWgCqSD4xQ8m^HEorkGg=1 zv{H2V9LRqUJmNQ`o4_uKf?Lv^+sc!IKraX9;)1hl#k>*Fi51WZo^$7(R0?yt!CY@e zZ#`g|&%iW))s8{>Geh=6;1Wy0CANdVaS#5+9qh<^a3i0f;+sLm#~2(SJ(#IpXSHnu zeV^wBp45W=?uz~0?y(OaS)J#eQ_x*+n@IG-!kVf1N8uy=+b(?{-&3hPwNOT2_J!$P+=DpNf=)-kec@|CsOL;~dqJENIG}$#f&=>WH`GVA>$>ZT zY#*Q)w7@VRn5ai#qF#e(=q*e`?|@bJfK_+c8GHF=Hh7;DAMW4I{$BgY_K}7A$O_e} z=MU%L8!`Yb8~B_$sN8#;z&wCWJp!*2YRVC6N&+=G1vNQ=q=zV?J8zTi?w!=n_h|4m zVBh8GLBQ(6-g1FDx?mmk*-Jf}um-=R3Esgoa^Dx?o-1H!fNN5~H5c&DSKyyB7ZbRb z*tG=4^BP}#=mIEAiAWn%EA!jA6EwLwD2ah%J_E;m)6W+Cc8UAU#C>MQvmcNe)PgqP zQMSON1ViN!{FDh4fD{yf+^cfgOb@e#p~pj^$8+cV-+A5(rjxAi=_Ctw0_;D7Q}_r@ z;R~|26|y%1O(R83BNMCfDbBd^Z_~Xd7>Uo|BmUWm{Uob_8a?*Y11$@7w_!r`2os|3 zI)V{-ZymS|6g{(m!8=xb4nTHccNOQI>2`NF zXY9|_7V8VI_g*ZaOFTidID=+!z?}FI=frc%8Py($tAi_XtG{6>`Ko3F?ag%tD({5u zP3}Qa1YH>lU7345w5?=)o*nqsjP5x!Z-i+Ba7!rMkqJ}4XZ_}0B!69mRUY}$1VUYX z7q9LuWJJzu$b_Jnhj3rpgo%waoPXdI)n`w1}*`AY0#%_xFbxMCN#gM zb|++1rO@-5(8Zb9#p%$O>e2HFp41FaYQXM1!tUH)Zbb`oD|pf!ba6uOnb4a%dU*h; zqXkY!gH*lEFHbtpK@NCz1NBym>a7f2?fm7!<{c5k%-R86?Gd`#{LF#N7aV=>j%EZ7 zZxkHf7C2k3;A}}iTB5*NYC!dEan=F(%+W`hk9d4GFabYVXosA%$M+4~Cqp-6fM#(7 z%_1vQ+%q0Q3pYV2HG@Os^5hmD*^{`|c!2zTr+SI=t zLcoVM^bb1J2tCvY1b)>N{HhytMqB8NG9SA8-~F011K&Ej2f)Oi9w+`JAZ9~o-@0Jt zfpepvlBB2@28R6%410Ek0B$yg8r8ea#_q%d-O~!)Uhtx&6|pYNIa0_u2w34XBIhlk z$}sq*ET}VAs57}A>QJK^oU{O=TLGiH_vR;5urpM!TcGZrV^F9ya4~Jc#k9i-+QSLj z!FRd`-{}T@#uoaF1llAD+9ZDJu1alDgFg|$o1v3*?T&p;RPQWKSYzDzSD!WECtHu8 zyoNqPuU`xc&!hjI1>~@LAH7#q3$UgYXLsFmB=CV;!3UD_8qifEIszS;6*@BPQRa5O ziog5f$ODtQSDe%h{F)y4H655tJu;aL_4}@(fdy8%zLcK$gFFY+=G9PbUVRBXZHe(QpMv z!wG%l8P%sCu^2&Nv0yIX3UdJ$cqgymolJnv)A*X}=XK;1)ViQtonOjT5Trq9yY#?a zI`X(Pe5)@uwD;W2!AI!xUi+?A#}l(d9?(M`&|qG5i}R`z;QA@_6f#JGA=IqPrA<9# zO$%6sE3gWAaTILGVG6yuoM(BreN5|zRBjhFnnB^ln zE&)*zLd(b+W}&TyyX`$ge5mh@cdHm*N-pnJ7rm8%uhs%zZ8y+-{U7kx0Vl=D+BWQ>kc=xv8-8*5{_KdT(lSlAnUN@;_xuKkK}$O z^kPiGd#iv3vV{352{MBeP`7J$o%;dMaf7#_!I{v)nb4u}&_my0g0I$G-^w#UbxY{T zf*08gUS#)qGM`M*ouEFldkxx)6sAzXT)Q6T+A*3+{*!08YWG(7NGs)w3U1J|Ag4?DiiY**Av!mGL{>=T&`n9A7Udte3g7=B~P7RkNUeSh0S{ICVGY zIR9%PIv>@6FvFI@3|n?>0Dc8}D*8D4Fh-wa1^k`;Ron?ihyw1E%b%Tb zY7o#tXZv;laclzmLPZEr5m=iGCLOIf=?KhNR`6nJFjcda@98Nw?RNv*tCes62zP=7 z&Rc`pwtd&OzQ-~`k7fBZ#Yg*hVFm@o85CfW*mKk>O#H?ZzcKHWE?XF3F2c35y}%)K z1&7cEY=IWo0-u%YdE5PK@?3%42|l+&Yp{pTUhiZUx)-09hI@8h`;a4vtj2~6Dk&;u4+zj|=}BH(pX;B_xJqt+LpqchQ-#pq0s2)9rZ}}Q#c2Zv=-3gtkM2b9(OwHzB{F+d0}C3tkKmC& z!6V^5<&tw7sI`Xt8_e7QS8dyEFW*!!>-Q=a4%KM$Cgj z>D7YLt3$TXW3~XUAcOuTItF&qcBf-U?30meSHIOTNei5B`-(iuc6a%Fo2TabQa;l4 zo?yMFfcE;TpnoGsfWDW2PBjlD`)L1dzz}2mXFutd%xH@@79UqLcf>6J4g>M}B5El&>PX}@< zUw&p9K#4cLyndk_0O9^^z_&-hx2gN$&PV%6G=Et8NOR;%?~tD= z?3aLj6HI5OFr9e;O0xn=vtTmG3X@4DXd`COM!et|#q;KUq<6!sXIkVQP4w>z450x- zibjd<3IM}EXnPazJW4j8!9P)PJpM@(SB&cK3Q0EVrA zg>g?6?&KF69_s$!uF+u>P!E%UUaE6o)KOs6F&+)?DTPzdUDj$*&)9L2aF3I1GW5%R zsO!gbp#!I8K}UOqjy6xe1Kk4FqSx6*T+f3?LJIkMg0~61N($<%Ahxdl+_yk}2*l<-dTonO7 zpK@fUfk`-oe;{inaHF8;Mp3Z`9#l*(&i&2rK0cDaO^DtEKG%ZjL+fk$5Hd(|WRN7B z{hjicPl12e^A}6et*{n7!UoJf9dQENL>>7I&UYQyf<17)GJNa&HSNw%WU7I4u;86q z-*?P+z;f(>K{eSzH924d8)5&NP>ak^i`-e^+_3-#EIO1|aEGa1HJ_iAk;AMEVEp#L z_`P=yH==lgfqWQ3doL!w7c=Ao9;qNiDqiMcg1bDgvqC@mU37~Lw(8K=286~=cD<_^V}yN z>RZ>~twSCg__xpC-_9Hew+prKtf3m7^yU2OJr2s3$3X_n6R_#e{ToohkNBiUg(nqz zKHh^P_HQ$KN$21t&1jQ5>GGE&fIDk^q`Q>Qq{BQ<&J+ND#_4{^BQZX*rwn|Y8XW!` zFgaTA$-H{=?QO~92VWf$LWGGzwLSg)_L1E00`I&JPdP(sa3;Nd~If3D;~1|Qk`?mgCX@K}H0 z)X%;IPI0YT%))_}PTG9_qr_i~`x_kOwXh_OJGRUvAt%o{|Qx0V7oA-icv; zd6l~h^O2r83CbUeSz6xE6f&Sf5zdT6jm<@ z^ad%Q_b_g|hiTgbM4BULG}!^#?QRKoH|}r18;7;amG%6oh`mEr3cb+ja~&V)j_mcx zC1Az?gSM!X1Xs)!Trnru;>_TR!*jdcuGzl0Xr9#-yeRHZ;XW~Df!osxZchXBH6!S2 zwrs$^rTJ?jS%TdQ{bd^HGh6Uf1=_+0tOWvoFGYTDhkj-MW=X=Ci@Cs+L)pNQu#H$d zWK?Bjtf)Hta}WR8z`wW!|6+m;48;x%SUAq$;J8U21kVZkyPyl2Q5RIfzqSVdT2M)? zppxSE)+y>&m>0buXIsH@aQNfNNBeHU{P-5;$KSgd6Q0A&-zt)U=OViILAPtgZr4?D z@!2u_45f+OssY`K5xN!k$?^+WEo;X9%|h?>6+XH7{KiLmU0#6__^3SpxB91u{ZoWYbp{`xuEeS4+_o==-KiKUtGkQTy z-?V^m-?QXTC?9FI=@l$NK~9i;(~K;EiWq9_h=J!w3!Wo9Z5KLm(do`(_$?r;3nr$m z$ZYS}U+i&m6yfxlz+l?Yr_WV`{)*@1fR6w&D?kk1gBF|>sjlnMk?k{JD%uEB(e4gx zT+u7%rI?ZfXUt{@oz75Z;Lx~_pgSJ?9BllaA2QuUgUP)8QvTa z6R)5pX7Chhn&8a9YV6^E8*-fn<})o$Wdswo6+F~Fv7hykzxXp=2RhCH|dsiOr>$ADdEgk7kEcC`oXYKPIPeMCpqg0tF6==cJ4Zw2Pw1moQq ze0K@BSrq5RLg!&c7SxqZ!l$u&!abb(6FLAh%xHrN06k0q;JOG9KgbEV+XVVf7&0mae?wbBCD_!V5^J79}FV2jLsf(j4rbOUF-w!Zqn z-fJTLX0|HwIAW`c%3gqlBlbSiSZp|8|JUx~XK?pu{G-?{pK^^x99?^_!< zs|za6wPM$OVkSAmR1Dy}kHC3nzL$H-EwB_o0Wg9B;B$Aq+M4iR?{2&NWC)&9$Y2}n zd#IF!tiAWIEM!2QiQ4p((T6v+3PJkpmVv&#l4 zbPX3w^;%)7SBK%BJkYppN8W1r8} zkk0`IMDy!p^Hs>itKta)t`=>Wg*MPJwxDC=F171Eq)>?hg?pqgPj;_$UIAMIymdyr zHD~lw$Y14R9LWb=29v{hdC1C9MP-{Z( zdKL0(0@XT2)jFIoEu1jyC(!+M#p$pfiTj$Rihf!t_-Re}=lSKf)zN{eW5vM^F)m-M z!TlGivl*&00-6T}mdE{fxo_^?3kqsz=z#Um0b^c~tG`>A9}MJ_@x@IUnBfNRlnzh1 z*Dps`zh4J^8_#-o`-F@1Ze0}f3-G8F@Td-MRz0{`alan03`BmwifE*-lh5Dj&@JL> z%01x~l+M5z?13}bpeAf9GGzzOx{J(_0lxSHa}0LzasOI^CjzjCXJ8NWIwk)c;3;w4 z3q9_M*>6S8UyXf;j{MCY_?zIa)1tdhgLUT_^M=NSL)P=yI*l;f0pI-U#-?BAdTsOU3O!wMO&hm3#GgyD?y({lde7B9#&R>&9= z{B7)4Uwxq(plL0jX%m>~^P8FOc_TG=6Y`h9ECt_XP7;xkhgCMvhi709cX0je!S%BN zzT5)7JfRAjp$gg~9FScZ{hK`taen2pp0yHOY(6KN-$g3!A`Q50ZN*F@p|e0>(@dCs zJabh4R%FK4&>e@y(Vy(q~J0+!7q6RzhsU<3jo>s1WbO$`HutG zb|bR58{!V_+Z6~r7wIc6B*+UP_;a;-d(^zT7iK?Ffo-%^e$Y8O|Ix!oN(@U z`szdYzHbSYR0R*48h-aWt)9T}hl1bFon6vlLQ0PlQl{V9e57l$13rLmEg+zx=z3ki z1)xNi+xujy4mfZRI51Cvh7LQrrzTK&rl?rF^L)5(1&jln6%6K>Jw>;N0q*5K)aU5l zb&9%I@E>f!e{h%24gU5Qn+$T5Ftf0OMyf}R)PSDQz@890Vt{K8s^0!U=RUGG4iJQdx!nS5yA_=6K36hekDb3d71ro@85_=x`EJPs1~PRQLFI03fc1UMnfo*~QbaMbizPcP7@ub>8p6Mu#i ze}EVA`0_%AmJo!R*+G+Mn_y^mmye*p|%Q`vJ{xI6S!V8aJ?GzyIbsc1FMuu zL@DpHrC534zH`HOieN+;#R+9l>5ow9H^>QE)POF?%~tr_tG7=Fr|lk`wg>pOj`r2b zx^P4m%>Gz$_DA)%(nq>(FWzv>Aa#}a46{yv)Y$^3lK|bMZ*=oEk7z(QYD9OyhC1FB zRN~N2n4zC=p9I&zX0ivD$p#|c7BsvBC?f@wkzj5Rg}FfshJvgx6J)`daUbn}1^@RI z{NE>7Th8EYd7nPKV6O2BbBz~}9ai8v+~1WB-Wol4Yjm*M@4;!Gz@>zOO9``yfct^$ z>kQ)_A+*};XRNNnbLinY+%wz-t7DBg%{GC4+=rT5`}Z`ctly^A5mxsUoJ@c>OMy2# zGW1b%SOd_PS&?y zqB>mONBYSQe;i@D2|>S+VmA_aTr={xfIBc+bnz@$N0-3XgC_onzAeq;o<7nX)mN)I zP8VG05U_$n!1M{7k96<5FkIhe4rg?k2oqn}l?m2on1Why4TU#j%QiavJ6t(|T@3}d zn%$Jc+#ES3FvDVm85Va(be?(+%5aL64%ApR&iuGfE#j=mW&SHNPH~=BO3~lo&Pe?{ zVedkh;$5p)(bV8zf1RJu0GVw8ncdQBR9Yjiw8DN=!+r$9_L08uoCY`m`cO@u&-%#n zyMhQierIsWq#l{cQ0POr?{|i2yE*jCz?o}BXRhowLLXTT=#Z1}yL-HyzpkLBU2qz% zcp8Fn!bs8Iyr9l5PDAW~3-`bd1*f|aobK+KS_7|$7Q7-BH2PNTUIOMfqQ^H>HGM?p z=)^TLL!}RRbqjbk>%f5VS|aM_)-HXqZ~UaNkP~-kr1aQF0Umb?JnjLWk|WN!AaHx2 zFdqo`_M?2U8C}gwVS?)b^28VsBS@fE^r2o?f$M^*_mlTKkjY0{*ZArqFjnu}8&>Fm zJ{Ua!$oD#Yq;G109leCS)Dhu)r1g}?a%Pyr3^VRmm~r1=#(fJj?zwVv`)vtK*a6t- z2+Yv?JS6f5oR92X8u%{Zj4*JQn!#OaKo@SrE*#7dA7O?#YdfG{g}n^$2%z8*(80~L z2RGAgz~yu8z=NCM+`&XVjBdJ`>PELOKHf{6p|N0+({U5*nk$>n< z|LULrxBuZ^|N1-r`1DD@{r~2VPt4Hxe7t;U{`GG@|MQ>!B<3pr^PlqCyh;6pzx*m~ zd%9@6zjXKsi~BA#_D`@ofd2`NpPwkKhe+;IG3wyhkyLjzxwaXul(!J|MA!QTmApb|Jq^ZEv)~lJh^-P`tx6Y{ng*Jzy9^- z|NN)_?$7&A-+s5qI41YI=@0*E*-AI}tK|>>YTdw``_*&7XXR{jg}>NJYGspI_fv~M zG4>9wvHyuVbcyOuNbG-N?W5!Q35oqraQi>IpOD!7M3chx{Dj8-Cq8e;Cz*VHLSp|D z^6j3Vc)qQ_mCp_Qo9C`(ZsUFKB{Ra8JpIqx{ktb|{dJb&_WkSmZ-2W4Zol2qw&>Yw z;Q4Lb1pe};!mYV>UQvr%A;#hU%X2d{{!g}<)V^OjdG|EReOK+eo&1qEsLJ=q2^XZq zyg7Ul!S<<}sqz>3cYpPF|Mb_tK8xY6{=Z*;^XuRK^(TY<^;duYU*-S)?XUdT|NhsX z|IHs+>zVettfkpn|DXQpAO8No{a^p|kAM6wx2^W6Y>8Ur;{L~f{BQr^b1{Fz7x@4D z^{>zC|5tziU(PlCp)J^Lzjg5^txrDk`S1Kkw%=0r0mQG=lxa-emGBn6<0h_m za<={Ma4BNBTR%6c^CoiQ?Ug3K_q)52nJU5?#hysPpC_?6onAgKul?QTM(_C`kyu=( z_uWX_4z02?w_K6Ltk~2I|Bv0f&*P|~ zn38+PF>Q_9?RigrF)HVt`@3rV`8%m=YOx1~@lVJbr19GL|7`^>PQv$QAS+&C_Va$; z8h+kuE9B*^>GBrU`x@O+C%&Sd^_n^UWVwCa?qc1;f%)*1=PGea`8?N>xfH5%*Sx&G zB<3ZehdOPLsfy#Id@GKrSvtqNLtp#;jHJ5-$F%vOmv6-zFaPE3aUeUDuI*8--)d71 ztFTS@TS+W4PGz+Yd18(Kfq!DhE$vQ-y%RIWzdsulw|71l`H7oK1*QEmR6&sb^2=h{>bcua)@8MBXMf(wBxWVX z{hGIoS^qv?^N#tXq;XD4exp{`Q$S+A=41ua;LWPaR0=ssKJmWK{km`Lk<|5*yN;zr z636R2dzZ(G3_3~eV^L*XipE6eQMvMX*=N0Z}gJAoVvcz9P&V54WaeZI+3%&O=`#p|nPw>0lfhJeJ zIDg_huw#D0x<8bf+!s!zr9CulSz3;O#2Sf0SDI5LQG`cOLdGO1fk1ov7F;_|sb4qDMaAlbo+RZkz_``C2yFm-i7pl_aKR zSsg!V&Lh^I;3QA}6F2EO$#dPLhP}r$+hgY5W178#osWkqetcSm$aSszlV6-Z@BFQ4 zMn5H6TK8RO-Z<=S@xJcYZXj4~m@8^ZJIZC3j$I4k9t%qhXa=m3MyW zE+jGkMDFJvapgWqcLj|-dROM6bS?wG1RC^lJeD2rp_qw!mn%QL+ zwU~4ETUN>yN+(%gR z_?lDG9B`kOlQ*WzHJ9BK;`e_|{k<%Am2~y+fX2E{C&}<6<|>OUTiR4Seh1|g(3p0z zXzMG-LcPy2I{6QfE7ZZXdSFz|Q}(%fsqexldCHeT-Y z9=F2xdDz)ak}0ZTMXJ?7@987heoSG}}Y0lN`B3*S7@BFPk7(=xbLnndy`x2%n`CfP zN(N*xvx4;<{N&43K=W)Bah+1_>D9F?Z%OAxBUuJxetf3SXD{gcDWqz9LEqPv4OU-* zRup+-HEzN^vvr<|oHe%2lkACfuT%Dy-FLTXj>_>mCq17Lwe8(v<4+c|C&l&dmTePN zWe%y-uw!f_fb5JdvWll7O%n62ysjt7XVr2|G)QqujaR!r?~~0XIgc%-acYlBl1De) zl_ln9Mf9wQvR8!WUlKE-dtJq4kBs7L&RKu2NadODZ+h8#&74*!-Yb$2cDt%f1EN!nF= zQkYbuyE!$VEN{1v_&G`DAn~pMuFqQr3h`SbS-8dXc`C$(DewLI4JBp>;-14be$c!- zXzsdWMy_jx9q0291>Msfhc7|%p)w2$R@_ix>UMQI%aSZl@C%9gdpASShdlcw@3+O& zY+uN-weu6|P1oI&PqBvL+AWxk26X)!X>Dw7SPeQ2nQY5&uC!Nox$bM9j5x2oezIlA zJ3e{r&zT!ZR-cw;ZX{W~t%$m%2vsJ2%ALuA*wcO2T9Ri}Js~xw^i;RMf8Hd!RMQ@U z#N5r9_B1t1o$?bFOO}7TqHT}NXT6+E8m}kU&--=bU5id-EtUKs18gD$V;osdXNlLa zYV+r;zRO+gb{D(sS_dZ{)>RVRR^leJP+v|5sX+zx(|GM<^>&|!?TV9ZJOs2eWn$W#I#N)uPJIfDsC+hiwvlWJ%; zdL#$fC{41u>xZgpP1)DFR-qbGeyY%)u<2c;Ps2NR%-`E`tvO{)PU-4dT#9w|eya1* zMnJ`lMk{COvCcalID~Lh6w{WNKfhXiyW9T!)Vm=Y9P>$Tgd53e#XCySqw=!()p1F}^tf!hJ!}%kAj=YS(*JY@i>v@)e@M(V%)CB{&tAU?VNLKRi`RPY z*N^Ascshd?3)54+mHZ{)2k^I=Lisv~bV&z^-+7?LG;I|Zmfy(UrQcg(@y4)|)z~9R zPu3=D)b$^ed`h>9At?voUghk=Za?p(C(K@1rw7P&58rcUpiZrWcD$ZW$?sS39+A!8 zLi2?kHvupp8|eH8Pd2doI1ifN6`jh8e)eq47P)stI7L+|C5xXPA9tXc z**nkQ7;;Jp)~GRU4?nBsH;Qq-i^S6Dvr~5SeWtE3jj29;tt^Ou@n|)c(#VjuA-xMh z6*Ly6&;6~|PJ!%`7Qf(Hd1>#j*xo2HEko$|>}%Qf2RRFy;Iy_f+b+#_M$+{x+!b6u zJ1~*pn2L>C%zM>62WWyuG~J0bru1N!(&6UJCh7h<1&PkLlZR`yBx_tbT@uqem3_@p zT~A|rWT~$A%!S)EZ+h2e)O6j!6q~Qt9#PpNS2h-BSzH#r%$>)P_Oj=|bC49irsBfPyLBs0yzY#a|a zZAm?~jD53|jO)(WvfpSyY&E8bDlJKC6)n7+6J2mZTl+;iiTe2M4yZd|)P1(Wc(>LvME*!2=PrKu18ATG_ z+1%x|>>)*dL$kll^(lgZExj{Ms>#vMbxe6r%Fydzjwsj2_dF?WT$|Yjq*c|%xw8@J zIX}pX^;$*B@oF!3w{@xOEr-^a#)BSIIqRF{IMvSjbl;PPFeJL>l@?D!TQ(jo?3rYp zjv~)3-*@E=1@Y5Vyi8&))vh&~46hEmhQw-jkz~-y+>sm|MBOwVQatbEb8=#n{*h9_IEYr zJ6K>Ik zjV$P>#&mkijDt1F#rON6F+X`j^Ve=zZhXk}79_l)c4uKL3#JKg-(soqEz_EUHzQoR`d`Jq(T43tGlKTt3TBg?* za2JTugOFMLaOZ!{S(2>mVp&^~74*`{TGFBH_O9)?Npt>S7Sb!22eXilq5j1F9qCRs zt15FB#Mi#Js8LonQL3s_=EHHDg0B@py)|}hL(ck&?m$(uz#?42eyu@^u+(R_tSngv zbY8Q$&z*0oII8+2nmjvun$nJ_;tC@9CC3jExqE4HvTGM`$J~9RdXUH=c$-v*8nY+Y zb9WWr>|O8f*6Bz83}zfJlE;DAF4;-`ehipodq7n^gN}@%jVZzNHK~>ydMu>E!g*-7Sh&TX%OD zlDCyx!nLnQ$<_AXtal78$un*b23n-+Wm#a}4ZSMUvt`9=M}J(;*hLP_(%i5JqehXD zv`tpFu9XxI&4QRE!@nl~)6T0UN0peLl`(sgWT0D*E&a?PNZmoVR9{(5ThWApupTXR zHXgZj6eQkUta|Q$8J3^Q{V&7sv_E&U_UYy{o9z#sn?ug}qrH-t&r$1B4dIrM{$-7s z^Yo}2H`}Bdx}|vJ$?y5El4Sg3{j$BYw>KWF^k5mmux~YlX*1VZGgF?des3~l_NqF` z@`d$nl{aAs-nJfIBsqPp#eAaG^Aoig^G|+4d&>Rkf>hyEOLi;q<}p20M3PlCth=5> z)A({{mh@MesfHz{Wb5^^(`qlZ*iK7Uqugr}U0=iS0$pFNo^?`G`L%SN6zNvaYfVyz zym>q0m;9HcPPYyj=K-<;1u4>)o=#mo{Xp%*oqk|`7y&&Q&rA06jj!hC{U*_BOkopS zOyvb_%2{}Y#WGfj*RnT{*^0`=5w?rQ&l+W1VaoZJO*=7FDe=aW8;Ad*JD+61{lVc# za=B?b5x%>*oSaq!G;Zh1riL^mNR4X9x*rnn{ngGfRi_Tkf+XhpeLd`%sXh@!v+t>S z^8M71Y?akjSu55iNP4@U32P(NG>k*JW4`8MdvO;9SmHd4*Gw0t&3JV8KkZ3V>#m}E z(v-UE&V&CxJa<(1T@HB6dWjdIq6`ytRif|~4yd4^EzS6@r%EIB29-qd!A0ENyjjDq1%N`=} z#!1%M1DAMas3Kv<8*Q@nJfuc5-G;=wH+@&fYnPzv9-=X?=Q~S4@nP*pS*i2V4;x9crn^QhHMydq3P+9k^X@w9Aw0ujx<`qb zEBWRtG6c&`!aAN}g1#W|epiyZ)cvw=OxtQWRZdY6pWczLF|k9bd^X z7y0M3h93|lHE7oc$n%SCnAuc7#7APgrAe-Xp)ipG{7ZtX&+9SAKdlKb_N4 zs$#{8ckED*Ebv_wV-Tq@tN1q9+Aq^Ma>Az6_~8Way;nM;vcpNt``2ADlB(owRd+Ru z9cNovq=r3fOb_;~>_b+JSZ}SVV&vZKJ4|QU>olf^g;~iMtC~}(`CvQDlA@ee%bql* z*Dg87) zZ>GkSJ$rb{lP5ckr#yMOYl6BdH`FOhSL=LsLt&vzG6lWFPe*6__BHF>OTJoVH5ot0 z{0gi2C1zn2t_R&prh+e4J*kt&i{5?-|DajDx{QxNcOJo%r#CH&-SO`JSSMv!#h$>y zWIWn+(E%{0KHFX=%;oiTTbFu>WzE`_;BCh)SWly*ykw238;YC7Heq9J*8QXfJiECB z|EP*SXq=ZRI5~?~eZa7+UiAUTPSv(B1Pl!p#eT`;tRX41)wlHM81jP8sFamYH|b&c0?g#4L%vg?|nXNJZ!A1-*4 zH{m#1HdFH3`B*joo_fC|ZekE(6@Hf;QaU{nZyuU`ir7IfhG0pD=O9Wm zem5=4%fc!&wpg0N$4bUppXOqi9yP^A5!a)pP!#d*9h7&=Z6j7qGlx~}q`GAe^5oaj z^S$bmZ*Sa;W+&R=&NbDvy?J_8VT87(XL=R?2_ZrK)b+1m8xuzAn#MG?X&N7T_-|eADQI`GEve=^daW=;RiRpA(x3`D9 zrP__z@y;r5*-oBAc2QlI7SkJZiJ6M^;hS0fI4x}Lsp?>p)&*T~hld7u9yjq5x@%F<88g8=x2;b9Jvy%Myz?!s@muxViGNB^Chp zo(XsDSXDa@gu%10=9yE#+HjOzrdlY7wrtp;Qv@tg@XoQw6zc zrX{S}`*=DmT~Xtt*l3qkmYz=h6xWq$>u#?7yw|;2mO6YEb^9^Z?&Fq|voIEqqlm=f zqIlaq#naxH+{fd7y>Wju*G#6el6aLD-?*vu)sl6h@$N+!IxJiSTIRSVT!h@-`g4L2 z&tV?=C%$vp>o`4!s}v2)Q9qu`y1*^b!{?rv9_wUcGs@T{Gz$1$jA z58BwoMNpbzJjEoumZmPa5<7j_&wJGprcE_pb&XF?y34aq#;fmEw_bfqvNR+&_F;;I zDP0<4doHrhI!(R*P59+6D6?qkrfE?$mdfLHMaR)t_H&J$_eRa)h1u;%WYMr3&H&$e z62`TGX~Kif#|1+6KzbaJ)Md9GS5!fv&Rslt zuxNKR=7z$Pv6`aNIxnWEyyNe3c0C;~jp=b?`q8gYDym|Rta?g1ozjw@IN8&Z4C5fS zOS<_@e?sDx9KY+QYqoCD=`l;s;L3O9)4xh~wk%)Rxnz6i*H&Si*WKuo)~~Po6tuUsRQd#SfEy zGvTsBaW!6N0@3!;%TgPePu&#W=J8r9!j(+s#Vhd|&-3~HJKrF8)p$EZnhLQ?rjo5& zBr#`Ok9(57Kh3HLeSho(CDqRvlBKa6*H*R9_N;h|X?gC6s>h4zuWW9U?G{ti_EWug zG^S#B+1^2A)pnbh!ErvCvEA`ep0E53)u|qRTwY}ERm-x0rXH$~&#y9gRoj|uT7r$> zTiSzM#-d*4Vqh*>{JFB12&Sv?CH7rRr(T zoFA|Atx&5Euf<~CqaS@33G=0N-HEgxVts(6{2JvZX}q1c@8`EFa_tPYn5@_K)0$T2 zW%FT`m@)kRD5eybspj5RrOG`spf*KrR~gR9m~|}2Ikkx^uk|`5=6iQMWwZH%X6yTC zZ~EQ|Ov07qPSok^>ck~O{D*jR8#E106w$m!g;WGBqnN@WB^s9Lj=~TXTbijOQ3G1O5!z9bv?XNsAaZ6I)G>Iuc zGa7zk4h{KkXa2~Ls_$@Kl6bZyowud&Gbw7bo?Wk2d%9HzB)e+06Nw}j zPd1rBV!;k&MYO{lsF@iBsWo%ae=yH?vfRPB0HYjS7L z_*#i~@7ikqY>pMmxXp4NIPCW)_Lt4eFz>i3-f>rbQJzmX&@e>n2HtD0EWMbl`Mky} zzvc7l*`2k+q%qCAh9Q&AEp67*SM)XA&*WWoNzd!4!ldW*;-FNm1FbqWjp>J);yfgLphQ}GjunC4koM2xR&&BdV?WO5l)AZtuQDpAy zY>HuPEXrxwD~=nHDwvKN(eW(aMb}n2nnqcj5v@v2P27F8k7u!GtdY$Q$i{HciIa3^ zIAp7@jt9<=Ugir|n}o5`RWEPxJPz$bHR0SsD>;c*efHTREQ#Y~Bk_834Q$#sP}Q`? zyO(2sSr8a*_8aq=RGZ@1`=W^GHnY<-I&PYr>(5yHxM1zwR=ic8-B+g+Kk5!s#vc4* zNDsy;IhkoqQ+YuWZ-m_#A7ogxXlFHkSTUKjW+ru3(3tug!?%bk+BiZQQ+~tv1}mInO|M>y;0AxM(0y{_Gc`~Wa;dugB5XjXx710S5RXNQWwUlc3Ldv z>hsY@YNtM%K2lwq)`MTDd)u&Ht2#xFdzU2J^wVYi$tF+F6yA9Vm$e!rMdG#I*ij^i zcQuBn#L^|ROiJsCY;IMWg}Ui8>c=$C^go$WHlO=ng*i9#ucK1j2;r-*zom zYrbZo%*~f+H;;3$I9A(^-ikP09S%bgpZEMIai+YpWZupaQ+rqrLon85)2t+>c647w zdY^v6MW2A2d_K2H4WYC4cD%V1>AYpC3Do(t(|lXZIomucraHSw>?SAj$=hVkUbmB2 z^^L~tYszk$kCSo}-}{$&vGd^jOP^4aO8Bs>hp`_;VQ=wz++2Rj(uU+R%RI@3 zEmT(~>P3m0jOwxbKZZxHBz~VTvWIDaD~rA*S2TTdqjY|S=~J4_yJ`<-Wy;D-rfHtC zGGClerB^n!Lu2vE_x^AeY8fz)^70HMzH7DEsV{f2$`u_i?`*s0wBC>Ip7*tprnq$u z)89>V@4S0+)+sE!v@&7quiYo4yW&?xfW@>^2=G@bbf8t45n$v$8`~Z+6xpN zk$D*!iScd2~Wj{WM{#4IqL-aW=$v9Zs-CNb4#>rXY#xWf)RMZo6rV0s; z_HuG%bHzPwVFYerTRkB<4b4)Ub#Lz#L#oD6TQ;{xtDbvjx=2@V4%04bm#;jYQKCs1 zWb=Mhqf(!)B*`3_!+w-_(Zj0xiHong$z-fB<;EOFR}t(tEnW7D!c z+1VxD&iD_qIwgN@hOACS!qVBbn)G|8P4;M_adN)VQ#55~s{9n@)$3IGA?V<7aT~?Z zp*zmhRF!A@R}-wi8>`|tKveVQS=smJng65xNjWz)=JM;+eOu}-I_}$odA+Q=B0kGn zGg(aZXh2laYfg$1Z`AkUQ185d*?i0z^8TMt(PjH~H~oq3+vCA(vgm_^9i{Q3b^Zx6 zXu{7Y!_*}f!1@KFP68E#ulp5kmki;mXX~LC*?CP*QIgHynT8_i z{2lk!WI^cjnT=JkzAfg-*bf3BJAmy^P2c#gJAlNln*5ouk;R8d09in$zjqFe>2!9J zxU`L=km0f0vZc(<5Zri&uUhA%Fg%VbuE+HX0gmCTaNDP!z$}swT=?gQKK?5g{o)e zNxa&N&XvgA4(d=mL){LJvxs(e$nsI`>a>@9vAqiQB?-TPXtuVwF*u`;vVMT;MQmY=Uk=j1J$ zo1N7!_I{G+%1Y)xE^+SfURhK7Xy%nQtH0w#8jt&II~k1Z?)A}cWZ@-N>(XcOroH0i zj1(*C(d0}g;g1xX?#b-1xvYNs%P)<&COnmhD)CGeSk>9BSw_C`AYX}S{8S=)(r)+r zsKnxvY1Q9=2{u#aX46{_YYEplYn`F7pozEjwam4*8B0!Gd#?^IPIX2$=|xp%FEh`Q zFmdV8(kl~}9@ROClV3JJN|GnD9+a(0Jx9iHt5VO=GX-xcH>T=cT;jZ885(DolF`%Q ziKwFI{=JKJOVyuOVlm;reQ&b9OEXug?SN0`1SN3~TE~Z=$P~6@J;t9auql1FWoV4` zyY4$#7tX43dMthzQ_d|!S+vJ3 z*PBu(_a|4=m{<0xPNq#pQ=Zin9Q&C{E2Q>a%^FurxtpfpslrWM#!i)Zd+FS{x??j+ zra22)OmFU;>W*zr@ESjJ?#(5W4;ygJq{DzJ#rBPZQj_}NKN)-V3OtRU2{E?&t@h}K zi}Z2APmp;5NxX5AH}%}mITd!#hak#VXP3P{$}}>45)#Y6q}%6hIDh-Lm~)lRrZ%UB zM8apQ=53`hofDXkPCA`6x4oeq3 zVm2kM#A`f!H+i4uP_C24Z%(&oM!l(cHKs?!+jK%-Gd7-1=%csZS`l4{RlgQL8W?7K zOLx87+uIZgx%UINIlcO{35uI^qKR<~lT@wEeCLv^(Lc}`S6B53uIlpz!)ZkrJod&) zym6;{_eXqq50_A5ak#qGFH`2dHJzQKvDm)dkrBP)&88gb9XFk$`L+$4_Hp9lzEp+T zW{$iXQ#mRP^K(A(e~SufMD$Yvs` zD+L{$;G?+d^Wpetyl2H2CU!KP*|=9tIwJJwS4(;LVir@q=jObZc5w?O>!fz+JKX*1 zlJsO`0M}oBS^T*3U*1wdcDwlyHsyBTccCgefvMP?#BNH^zH)VrZ1zpWALQs}nlQYr z&nWR`|IsF1b+V+upJk65MZZq{!(%Eh4!8(4bhLUu}=TYTLefx3;L@h|!-uWrBaE86} zd#9AlZ`xe=s@>>up1gJ$n(^$GWP%6rdYrq>bD}Ha^(az{U?kIWt1^ABj5F1u-dQ%I zxTs&m9kXZ~*&DX2Y0S(v!<5ziTAgH1JRdghPdV|!NtCQ@dwZPx=I1>=$!aCz=%zow zg5UmJT2oHlg{r!`SU#1Ezfnz}Kc%y7xvx4gn*Q)OF+RPfR0Yj5CrpiLJo=wzGw-C{ zlXxTLrcm6rC>vcjbY-(3PKSRh1|-ubV=*R~2|n(%=8(RJAxRpqeD}@YUIuc_#T4~L z@TFI#c^2$MF?fk(4?C-;xGU25^@^Hm8q5K)sivVGWvmRzt5auCSWM08l)RMt+{|mB z344u@0sCOnsGR3Dl!z4q54l8%r6(z&Ao9b)yoS5Ud7fBygC(q;; zEr(5m&*p(4@p_p#w0Xf&DOc+S7Qxb;T5~~9vWQpB=}8(B%={P*GmPFkF?C~7gDfkM zc(pqtXJ;U)!!Qj}Pu`bcyLU*=a(qX0%7*Efip&M@ys|WrSEkBq)gd0`b$fc5MHm3b zt6gH@z8cO|(u1a1Ob?sXTwSKt^ycdFHhD1}Zkkl-PyFI&yNs=J6sAcgCgl4&vBclk z+^98PZ+hWE!f@7}rN&M(W18