View source: R/combine.gg_partial.R
combine.gg_partial | R Documentation |
The combine.gg_partial
function assumes the two
gg_partial
objects were generated from the same
rfsrc
object. So, the function joins along the
gg_partial
list item names (one per partial plot variable).
Further, we combine the two gg_partial
objects along the group
variable.
Hence, to join three gg_partial
objects together (i.e. for
three different time points from a survival random forest) would require
two combine.gg_partial
calls: One to join the first two
gg_partial
object, and one to append the third
gg_partial
object to the output from the first call.
The second call will append a single lbls
label to the
gg_partial
object.
combine.gg_partial(x, y, lbls, ...)
x |
|
y |
|
lbls |
vector of 2 strings to label the combined data. |
... |
not used |
gg_partial
or gg_partial_list
based on
class of x and y.
## Not run: # We need to create this dataset data(pbc, package = "randomForestSRC",) # For whatever reason, the age variable is in days... makes no sense to me for (ind in seq_len(dim(pbc)[2])) { if (!is.factor(pbc[, ind])) { if (length(unique(pbc[which(!is.na(pbc[, ind])), ind])) <= 2) { if (sum(range(pbc[, ind], na.rm = TRUE) == c(0, 1)) == 2) { pbc[, ind] <- as.logical(pbc[, ind]) } } } else { if (length(unique(pbc[which(!is.na(pbc[, ind])), ind])) <= 2) { if (sum(sort(unique(pbc[, ind])) == c(0, 1)) == 2) { pbc[, ind] <- as.logical(pbc[, ind]) } if (sum(sort(unique(pbc[, ind])) == c(FALSE, TRUE)) == 2) { pbc[, ind] <- as.logical(pbc[, ind]) } } } if (!is.logical(pbc[, ind]) & length(unique(pbc[which(!is.na(pbc[, ind])), ind])) <= 5) { pbc[, ind] <- factor(pbc[, ind]) } } #Convert age to years pbc$age <- pbc$age / 364.24 pbc$years <- pbc$days / 364.24 pbc <- pbc[, -which(colnames(pbc) == "days")] pbc$treatment <- as.numeric(pbc$treatment) pbc$treatment[which(pbc$treatment == 1)] <- "DPCA" pbc$treatment[which(pbc$treatment == 2)] <- "placebo" pbc$treatment <- factor(pbc$treatment) dta_train <- pbc[-which(is.na(pbc$treatment)), ] # Create a test set from the remaining patients pbc_test <- pbc[which(is.na(pbc$treatment)), ] #======== # build the forest: rfsrc_pbc <- randomForestSRC::rfsrc( Surv(years, status) ~ ., dta_train, nsplit = 10, na.action = "na.impute", forest = TRUE, importance = TRUE, save.memory = TRUE ) xvar <- c("bili", "albumin", "copper", "prothrombin", "age") xvar_cat <- c("edema") xvar <- c(xvar, xvar_cat) time_index <- c(which(rfsrc_pbc$time.interest > 1)[1] - 1, which(rfsrc_pbc$time.interest > 3)[1] - 1, which(rfsrc_pbc$time.interest > 5)[1] - 1) partial_pbc <- mclapply(rfsrc_pbc$time.interest[time_index], function(tm) { plot.variable(rfsrc_pbc, surv.type = "surv", time = tm, xvar.names = xvar, partial = TRUE, show.plots = FALSE) }) # A list of 2 plot.variable objects length(partial_pbc) class(partial_pbc) class(partial_pbc[[1]]) class(partial_pbc[[2]]) # Create gg_partial objects ggPrtl.1 <- gg_partial(partial_pbc[[1]]) ggPrtl.2 <- gg_partial(partial_pbc[[2]]) # Combine the objects to get multiple time curves # along variables on a single figure. ggpart <- combine.gg_partial(ggPrtl.1, ggPrtl.2, lbls = c("1 year", "3 years")) # Plot each figure separately plot(ggpart) # Get the continuous data for a panel of continuous plots. ggcont <- ggpart ggcont$edema <- ggcont$ascites <- ggcont$stage <- NULL plot(ggcont, panel=TRUE) # And the categorical for a panel of categorical plots. nms <- colnames(sapply(ggcont, function(st) {st})) for(ind in nms) { ggpart[[ind]] <- NULL } plot(ggpart, panel=TRUE) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.