View source: R/non_linear_bins.R
nonlinear_bins | R Documentation |
This function generates nonlinear bins for probability of survival data based on specified thresholds and divisors as specified in Napoli et al. (2017), Schroeder et al. (2019), and Kassar et al. (2016). This function calculates bin statistics, including mean, standard deviation, total alive, total dead, count, and percentage for each bin.
nonlinear_bins(
data,
Ps_col,
outcome_col,
group_vars = NULL,
divisor1 = 5,
divisor2 = 5,
threshold_1 = 0.9,
threshold_2 = 0.99
)
data |
A |
Ps_col |
The name of the column containing the survival probabilities (Ps). Should be numeric on a scale from 0 to 1. |
outcome_col |
The name of the column containing the outcome data. It
should be binary, with values indicating patient survival. A value of |
group_vars |
Optional grouping variables for bin statistics calculations. These should be specified as quoted column names. |
divisor1 |
A parameter to control the width of the probability of
survival range bins. Affects the creation of step sizes for the beginning
of each bin range. Defaults to |
divisor2 |
A parameter to control the width of the probability of
survival range bins. Affects the creation of step sizes for the beginning
of each bin range. Defaults to |
threshold_1 |
A parameter to decide where data indices will begin to
create step sizes. Defaults to |
threshold_2 |
A parameter to decide where data indices will end to
create step sizes. Defaults to |
Like other statistical computing functions, nonlinear_bins()
is happiest
without missing data. It is best to pass complete probability of survival
and outcome data to the function for optimal performance. With smaller
datasets, this is especially helpful. However, nonlinear_bins()
will
handle NA
values and throw a warning about missing probability of survival
values, if any exist in Ps_col
.
A list with two elements:
intervals
: A vector defining bin boundaries for probability of
survival.
bin_stats
: A tibble
containing:
bin_number
: Bin index.
bin_start
, bin_end
: Bin range.
mean
, sd
: Mean and standard deviation of Ps_col
within the bin.
Pred_Survivors_b
, Pred_Deaths_b
: Predicted counts of survivors and
decedents, respectively.
AntiS_b
, AntiM_b
: Anticipated proportion survived, and deceased,
respectively.
alive
, dead
: Count of observed survivors and non-survivors.
count
: Total records in the bin.
percent
: Percentage of records within each bin.
Nicolas Foss, Ed.D, MS, original implementation in MATLAB by Nicholas J. Napoli, Ph.D., MS
Kassar, O.M., Eklund, E.A., Barnhardt, W.F., Napoli, N.J., Barnes, L.E., Young, J.S. (2016). Trauma survival margin analysis: A dissection of trauma center performance through initial lactate. The American Surgeon, 82(7), 649-653. doi:10.1177/000313481608200733
Napoli, N. J., Barnhardt, W., Kotoriy, M. E., Young, J. S., & Barnes, L. E. (2017). Relative mortality analysis: A new tool to evaluate clinical performance in trauma centers. IISE Transactions on Healthcare Systems Engineering, 7(3), 181–191. doi:10.1080/24725579.2017.1325948
Schroeder, P. H., Napoli, N. J., Barnhardt, W. F., Barnes, L. E., & Young, J. S. (2018). Relative mortality analysis of the “golden hour”: A comprehensive acuity stratification approach to address disagreement in current literature. Prehospital Emergency Care, 23(2), 254–262. doi:10.1080/10903127.2018.1489021
rmm()
, and rm_bin_summary()
# Generate example data with high negative skewness
set.seed(123)
# Parameters
n_patients <- 10000 # Total number of patients
# Skewed towards higher values
Ps <- plogis(rnorm(n_patients, mean = 2, sd = 1.5))
# Simulate survival outcomes based on Ps
survival_outcomes <- rbinom(n_patients,
size = 1,
prob = Ps
)
# Create data frame
data <- data.frame(Ps = Ps, survival = survival_outcomes) |>
dplyr::mutate(death = dplyr::if_else(survival == 1, 0, 1))
# Apply the nonlinear_bins function
results <- nonlinear_bins(data = data,
Ps_col = Ps,
outcome_col = survival,
divisor1 = 5,
divisor2 = 5,
threshold_1 = 0.9,
threshold_2 = 0.99)
# View results
results$intervals
results$bin_stats
# Example with grouping by a categorical variable
# Add random group variable
data$group <- sample(c("A", "B"), size = n_patients, replace = TRUE)
# Run the function using a single grouping variable
results_grouped <- nonlinear_bins(data,
Ps_col = Ps,
outcome_col = survival,
group_vars = "group"
)
# View grouped results
results_grouped$bin_stats
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.