DNbuilder {DynNom} | R Documentation |
Publishing a dynamic nomogram
Description
DNbuilder
is a generic function which builds required scripts to publish a dynamic nomogram on a web server such as the https://www.shinyapps.io/. This application can then access through a URL and be used independent of R. DNbuilder
supports a large number of model objects from a variety of packages.
Usage
DNbuilder(model, data = NULL, clevel = 0.95, m.summary = c("raw", "formatted"),
covariate = c("slider", "numeric"), ptype = c("st", "1-st"),
DNtitle = NULL, DNxlab = NULL, DNylab = NULL, DNlimits = NULL,
KMtitle = NULL, KMxlab = NULL, KMylab = NULL)
DNbuilder.core(model, data, clevel, m.summary, covariate,
DNtitle, DNxlab, DNylab, DNlimits)
DNbuilder.surv(model, data, clevel, m.summary, covariate,
ptype, DNtitle, DNxlab, DNylab, KMtitle, KMxlab, KMylab)
Arguments
model |
an |
data |
a dataframe of the accompanying dataset for the model (if required). |
clevel |
a confidence level for constructing the confidence interval. If not specified, a 95% level will be used. |
m.summary |
an option to choose the type of the model output represented in the 'Summary Model' tab. "raw" (the default) returns an unformatted summary of the model; "formatted" returns a formatted table of the model summary using stargazer package. |
covariate |
an option to choose the type of input control widgets used for numeric values. "slider" (the default) picks out |
ptype |
an option for |
DNtitle |
a character vector used as the app's title. If not specified, "Dynamic Nomogram" will be used. |
DNxlab |
a character vector used as the title for the x-axis in "Graphical Summary" tab. If not specified, "Probability" will be used for logistic model and Cox proportional model objects; or "Response variable" for other model objects. |
DNylab |
a character vector used as the title for the y-axis in "Graphical Summary" tab (default is NULL). |
DNlimits |
a vector of 2 numeric values used to set x-axis limits in "Graphical Summary" tab. Note: This also removes the 'Set x-axis ranges' widget in the sidebar panel. |
KMtitle |
a character vector used as KM plot's title in "Survival plot" tab. If not specified, "Estimated Survival Probability" for |
KMxlab |
a character vector used as the title for the x-axis in "Survival plot" tab. If not specified, "Follow Up Time" will be used. |
KMylab |
a character vector used as the title for the y-axis in "Survival plot" tab. If not specified, "S(t)" for |
Value
A new folder called 'DynNomapp' will be created in the current working directory which contains all the required scripts to deploy this dynamic nomogram on a host server such as the https://www.shinyapps.io/. This folder includes ui.R
, server.R
, global.R
and data.RData
which needs to publish the app. A user guide text file (README.txt
) will be also added to explain how to deploy the app using these files.
Please cite as:
Jalali A, Alvarez-Iglesias A, Roshan D, Newell J (2019) Visualising statistical models using dynamic nomograms. PLOS ONE 14(11): e0225253. https://doi.org/10.1371/journal.pone.0225253
Author(s)
Amirhossein Jalali, Davood Roshan, Alberto Alvarez-Iglesias, John Newell
Maintainer: Amirhossein Jalali <a.jalali2@nuigalway.ie>
References
Banks, J. 2006. Nomograms. Encyclopedia of Statistical Sciences. 8.
Easy web applications in R. https://www.rstudio.com/products/shiny/
Frank E Harrell Jr (2017). rms: Regression Modeling Strategies. R package version 4.5-0.
https://CRAN.R-project.org/package=rms/
See Also
Examples
## Not run:
# Simple linear regression models
fit1 <- lm(uptake ~ Plant + conc + Plant * conc, data = CO2)
DNbuilder(fit1)
t.data <- datadist(swiss)
options(datadist = 't.data')
ols(Fertility ~ Agriculture + Education + rcs(Catholic, 4), data = swiss) %>%
DNbuilder(clevel = 0.9, m.summary="formatted")
# Generalized regression models
fit2 <- glm(Survived ~ Age + Class + Sex,
data = as.data.frame(Titanic), weights = Freq, binomial("probit"))
DNbuilder(fit2, DNtitle="Titanic", DNxlab = "Probability of survival")
counts <- c(18, 17, 15, 20, 10, 20, 25, 13, 12)
outcome <- gl(3, 1, 9)
treatment <- gl(3, 3)
d <- datadist(treatment, outcome)
options(datadist = "d")
Glm((2 * counts) ~ outcome + treatment, family = poisson(),
data = data.frame(counts, outcome, treatment)) %>%
DNbuilder()
# Proportional hazard models
coxph(Surv(time, status) ~ age + strata(sex) + ph.ecog, data = lung) %>%
DNbuilder()
data.kidney <- kidney
data.kidney$sex <- as.factor(data.kidney$sex)
levels(data.kidney$sex) <- c("male", "female")
coxph(Surv(time, status) ~ age + strata(sex) + disease, data.kidney) %>%
DNbuilder(ptype = "1-st")
d <- datadist(veteran)
options(datadist = "d")
fit3 <- cph((Surv(time/30, status)) ~ rcs(age, 4) * strat(trt) + diagtime +
strat(prior) + lsp(karno, 60), veteran)
DNbuilder(fit3, DNxlab = "Survival probability",
KMtitle="Kaplan-Meier plot", KMxlab = "Time (Days)", KMylab = "Survival probability")
# Generalized additive models
mgcv::gam(Fertility ~ s(Agriculture) + Education + s(Catholic), data=swiss) %>%
DNbuilder(DNlimits = c(0, 110), m.summary="formatted")
## End(Not run)
if (interactive()) {
data(rock)
lm(area~I(log(peri)), data = rock) %>%
DNbuilder()
}