marginalized.risk {marginalizedRisk} | R Documentation |
Compute Maringalized Risk
Description
Computes risk of disease as a function of marker s by marginalizedizing over a covariate vector Z.
Usage
marginalized.risk(fit.risk, marker.name, data, categorical.s, weights =
rep(1, nrow(data)), t = NULL, ss = NULL, verbose =
FALSE, t.end = NULL)
marginalized.risk.cont(fit.risk, marker.name, data,
weights = rep(1, nrow(data)), t=NULL, ss = NULL, verbose = FALSE)
marginalized.risk.cont.2(fit.risk, marker.name, data,
weights=rep(1, nrow(data)), t, ss, marker.name.2, s.2, verbose=FALSE)
marginalized.risk.cat(fit.risk, marker.name, data, weights = rep(1,
nrow(data)), t = NULL, verbose = FALSE, t.end = NULL)
Arguments
fit.risk |
A regression object where the outcome is risk of disease, e.g. y~Z+marker. Need to support predict(fit.risk) |
marker.name |
string |
marker.name.2 |
string |
data |
A data frame containing the phase 2 data |
ss |
A vector of marker values |
s.2 |
s.2 |
weights |
Inverse prob sampling weight, optional |
t |
If fit.risk is Cox regression, t is the time at which distribution function will be assessed |
t.end |
t.end |
categorical.s |
TRUE if the marker is categorical, FALSE otherwise |
verbose |
Boolean |
Details
See the vignette file for more details.
Value
If ss is not NULL, a vector of probabilities are returned. If ss is NULL, a matrix of two columns are returned, where the first column is the marker value and the second column is the probabilties.
Examples
#### suppose wt.loss is the marker of interest
if(requireNamespace("survival")) {
library(survival)
dat=subset(lung, !is.na(wt.loss) & !is.na(ph.ecog))
f1=Surv(time, status) ~ wt.loss + ph.ecog + age + sex
fit.risk = coxph(f1, data=dat)
ss=quantile(dat$wt.loss, seq(.05,.95,by=0.01))
t0=1000
prob = marginalized.risk(fit.risk, "wt.loss", dat, categorical.s=FALSE, t = t0, ss=ss)
plot(ss, prob, type="l", xlab="Weight loss", ylab=paste0("Probability of survival at day ", t0))
}
## Not run:
#### Efron bootstrap to get confidence band
# store the current rng state
save.seed <- try(get(".Random.seed", .GlobalEnv), silent=TRUE)
if (class(save.seed)=="try-error") {set.seed(1); save.seed <- get(".Random.seed", .GlobalEnv) }
B=10 # bootstrap replicates, 1000 is good
numCores=1 # multiple cores can speed things up
library(doParallel)
out=mclapply(1:B, mc.cores = numCores, FUN=function(seed) {
set.seed(seed)
# a simple resampling scheme here. needs to be adapted to the sampling scheme
dat.tmp=dat[sample(row(dat), replace=TRUE),]
fit.risk = coxph(f1, data=dat)
marginalized.risk(fit.risk, "wt.loss", dat.tmp, categorical.s=FALSE, t = t0, ss=ss)
})
res=do.call(cbind, out)
# restore rng state
assign(".Random.seed", save.seed, .GlobalEnv)
# quantile bootstrap CI
ci.band=t(apply(res, 1, function(x) quantile(x, c(.025,.975))))
plot(ss, prob, type="l", xlab="Weight loss", ylab=paste0("Probability of survival at day ", t0),
ylim=range(ci.band))
lines(ss, ci.band[,1], lty=2)
lines(ss, ci.band[,2], lty=2)
## End(Not run)
[Package marginalizedRisk version 2024.5-17 Index]