The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Gallery

Default for survival data

data(diabetes.complications)
diabetes.complications$d <- as.integer(diabetes.complications$epsilon>0)
diabetes.complications$fruitq1 <- ifelse(
  diabetes.complications$fruitq == "Q1","Q1","Q2 to Q4"
)

cifplot(Event(t,d) ~ fruitq1,
        data                    = diabetes.complications,
        outcome.type            = "survival")
Default of cifplot() for survival data

Default of cifplot() for survival data

Default for competing risks data

cifplot(Event(t,epsilon) ~ fruitq1,
        data                    = diabetes.complications,
        outcome.type            = "competing-risk")
Default of cifplot() for competing risks data

Default of cifplot() for competing risks data

Visual elements

cifplot(Event(t,epsilon) ~ fruitq1,
        data                    = diabetes.complications,
        outcome.type            = "competing-risk",
        add.conf                = FALSE, 
        add.risktable           = FALSE, 
        add.censor.mark         = FALSE)
Hide confidence interval, risk table, and censor marks

Hide confidence interval, risk table, and censor marks

cifplot(Event(t,epsilon) ~ fruitq1,
        data                    = diabetes.complications,
        outcome.type            = "competing-risk",
        add.risktable           = FALSE, 
        add.estimate.table      = TRUE, 
        add.censor.mark         = FALSE, 
        add.competing.risk.mark = TRUE)
Add a table of CIF estimates and event-2 time marks

Add a table of CIF estimates and event-2 time marks

# Extract event-2 time from data frame
time_to_event <- extract_time_to_event(Event(t, epsilon) ~ fruitq1,
                                       data = diabetes.complications, 
                                       which.event = "event2")

# Ensure named list by strata
stopifnot(is.list(time_to_event), length(time_to_event) > 0)

# Add event-2 time marks using external event-2 time 
cifplot(Event(t, epsilon) ~ fruitq1,
        data                    = diabetes.complications,
        outcome.type            = "competing-risk",
        add.risktable           = FALSE,
        add.estimate.table      = TRUE,
        add.censor.mark         = FALSE,
        add.competing.risk.mark = TRUE,
        competing.risk.time     = time_to_event)
Add event-2 time marks using external event-2 time

Add event-2 time marks using external event-2 time

cifplot(Event(t, epsilon) ~ fruitq1,
        data                      = diabetes.complications,
        outcome.type              = "competing-risk",
        add.risktable             = FALSE,
        add.estimate.table        = TRUE,
        symbol.risk.table         = "circle", 
        add.censor.mark           = FALSE,
        add.competing.risk.mark   = TRUE,
        shape.competing.risk.mark = 1,
        size.competing.risk.mark  = 4,
        competing.risk.time       = time_to_event)
Use (open) circle for strata in estimate table and event-2 time marks

Use (open) circle for strata in estimate table and event-2 time marks

Risk ratio label

# Fit direct polytomous regression
output1 <- polyreg(nuisance.model=Event(t,epsilon)~1, exposure="fruitq1", 
          data=diabetes.complications, effect.measure1="RR", effect.measure2="RR", 
          time.point=8, outcome.type="competing-risk")

# Create a label of the risk ratio of event1
output2 <- effect_label.polyreg(output1, 
                              event="event1",
                              add.exposure.levels=FALSE, 
                              add.outcome=FALSE, 
                              add.conf=FALSE)
output3 <- cifplot(Event(t,epsilon) ~ fruitq1,
        data                    = diabetes.complications,
        outcome.type            = "competing-risk")

# Add the label
output4 <- output3$plot + ggplot2::annotate("text", x=6, y=0.8, 
                                            label=output2, hjust=1, vjust=1)
print(output4)
Add risk ratio label using polyreg() and effect_label.polyreg()

Add risk ratio label using polyreg() and effect_label.polyreg()

Panel mode

cifplot(Event(t,epsilon) ~ fruitq + fruitq1,
        data                      = diabetes.complications,
        outcome.type              = "competing-risk",
        panel.per.variable        = TRUE)
Cumulative incidence curves per each stratification variable

Cumulative incidence curves per each stratification variable

cifplot(Event(t,epsilon) ~ fruitq1,
        data                      = diabetes.complications,
        outcome.type              = "competing-risk",
        panel.per.event           = TRUE)
Cumulative incidence curves for event 1 vs event 2

Cumulative incidence curves for event 1 vs event 2

cifplot(Event(t,d) ~ fruitq1,
        data                      = diabetes.complications,
        outcome.type              = "survival",
        panel.censoring           = TRUE)
Survival curves for event vs censoring

Survival curves for event vs censoring

Zoomed-in-view

output5 <- cifpanel(
 title.plot = c("Fruit intake and macrovascular complications", "Zoomed-in view"),
 inset.panel           = TRUE,
 formula               = Event(t, epsilon) ~ fruitq,
 data                  = diabetes.complications,
 outcome.type          = "competing-risk",
 code.events           = list(c(2,1,0), c(2,1,0)),
 label.y               = c("CIF of macrovascular complications", ""),
 label.x               = c("Years from registration", ""),
 limits.y              = list(c(0,1), c(0,0.15)),
 inset.left            = 0.40, 
 inset.bottom          = 0.45,
 inset.right           = 1.00, 
 inset.top             = 0.95,
 inset.legend.position = "none",
 legend.position       = "bottom", 
 add.conf              = FALSE
)
print(output5)
Zoomed-in-view panel using cifpanel()

Zoomed-in-view panel using cifpanel()

Font, style and palette

cifplot(Event(t,epsilon) ~ fruitq,
        data                      = diabetes.complications,
        outcome.type              = "competing-risk",
        add.conf                  = FALSE, 
        font.size                 = 16, 
        font.size.risk.table      = 3)
Adjust font size

Adjust font size

cifplot(Event(t,epsilon) ~ fruitq,
        data                      = diabetes.complications,
        outcome.type              = "competing-risk",
        add.conf                  = FALSE, 
        style                     = "bold", 
        font.family               = "serif", 
        palette                   = c("blue1", "cyan3", "navy", "deepskyblue3"))
Select font family, style, linewidth and palette

Select font family, style, linewidth and palette

cifplot(Event(t,epsilon) ~ fruitq,
        data                      = diabetes.complications,
        outcome.type              = "competing-risk",
        add.conf = FALSE, 
        style                     = "framed", 
        font.family               = "serif", 
        linewidth                 = 1.3, 
        linetype                  = TRUE, 
        palette                   = c("azure4", "gray", "black", "darkgray"))
Select font family, style, linewidth and palette

Select font family, style, linewidth and palette

cifplot(Event(t,epsilon) ~ fruitq,
        data                      = diabetes.complications,
        outcome.type              = "competing-risk",
        add.conf                  = FALSE, 
        style                     = "gray", 
        font.family               = "mono", 
        palette                   = c("cyan3", "deepskyblue4", "darkseagreen2", "deepskyblue3"))
Select font family, style, linewidth and palette

Select font family, style, linewidth and palette

cifplot(Event(t,epsilon) ~ fruitq,
        data                      = diabetes.complications,
        outcome.type              = "competing-risk",
        add.conf                  = FALSE, 
        style                     = "ggsurvfit", 
        font.family               = "mono", 
        palette                   = c("brown", "orange", "purple", "darkgoldenrod"))
Select font family, style, linewidth and palette

Select font family, style, linewidth and palette

Axis and label

cifplot(Event(t,d) ~ fruitq1,
        data                      = diabetes.complications,
        outcome.type              = "survival",
        label.y                   = "Survival (no complications)",
        label.x                   = "Years from registration",
        label.strata              = c("High intake","Low intake"), 
        level.strata              = c("Q2 to Q4","Q1"), 
        order.strata              = c("Q1", "Q2 to Q4"))
Customize labels with explicit level mapping (safe against factor order)

Customize labels with explicit level mapping (safe against factor order)

cifplot(Event(t,d) ~ fruitq1,
        data                      = diabetes.complications,
        outcome.type              = "survival",
        label.y                   = "Risk of diabetes complications",
        label.x                   = "Years from registration",
        label.strata              = c("High intake","Low intake"), 
        level.strata              = c("Q2 to Q4","Q1"), 
        order.strata              = c("Q1", "Q2 to Q4"),
        type.y                    = "risk",
        limits.y                  = c(0, 0.5),
        breaks.y                  = seq(0, 0.5, by=0.1),
        limits.x                  = c(0, 8),
        breaks.x                  = 0:8,
        use.coord.cartesian       = TRUE) 
Plot 1 - survival and set axis limits

Plot 1 - survival and set axis limits

Proportional hazards check by a log-log plot

cifplot(Event(t,d) ~ fruitq1,
        data                      = diabetes.complications,
        outcome.type              = "survival",
        type.y                    = "cloglog")
Check the proportional hazards assumption by a log-log plot

Check the proportional hazards assumption by a log-log plot

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.