- Remove dependency pkgmaker
- Remove maximize_spline_metric and minimize_spline_metric
- Add boot_digits parameter to cutpointr:::print.summary_cutpointr
- The (very long) vignette has been split up into multiple vignettes, each with its own topic. @kapsner has written an additional vignette on bootstrapping.
- Update ?multi_cutpointr to say that it uses cutpointr(), not cutpointr_()
- When using an extra parameter for the metric, such as in sens_constrain, and if bootstrapping was run, that parameter was not forwarded to the bootstrapping
- Clarified the help for the boot_stratify parameter
- Better examples for the constrained metrics
- Added reference and citation for the article about cutpointr in JSS
boot_cinow works with multiple cutpoints (multiple cutpoints are possible ifbreak_ties = c).add_metricnow adds the selected metrics to the bootstrap results, too.- Include metrics that were added with
add_metricinsummary(). - Change default value of
subgroupinmulti_cutpointrtoNULL(instead of missing) to make it consistent withcutpointr. - No rounding anymore within the internal function
summary_sdso that the various summary functions now return all values without rounding. - Descriptive statistics in summary functions are now stored with the additional first column "Data" instead of giving the class values as row names.
- Nicer printing of summary objects in Rmd documents.
boot_stratifyis now passed to the method functions so that the bootstrap withinmaximize_boot_metricandminimize_boot_metriccan be stratified, too.- Subtitles (such as "by class") have been removed from the plots because the subtitles should have read "by subgroup" and because this is already clear from the legend.
- Fix a bug in
multi_cutpointrthat forced theclassvariable to be named "suicide".
- Reduce size of tarball for CRAN by removing some superfluous files
- Accelerate tests and vignette building to lower runtime on CRAN
- Some changes for vctrs 0.3.0 and dplyr 1.0.0: Unname and correctly assign classes to a few objects instead of using vctrs::df_cast and vctrs::df_ptype2 to keep compatibility with vctrs 0.2.4
- Added ORCID and article reference to Description
- Minor internal changes for compatibility with the latest updates of
some packages from the tidyverse (e.g.
tibble3.0.0)
- Prepare for matrix inheriting from class "array" in R 4.0.0 by making a minor
change in non-exported utility function
sanitize_metric
cutpointrandrocnow both use tidyeval.!!can be used when an argument should be unquoted, as indplyr, e.g.myvar <- "dsi"; cutpointr(suicide, !!myvar, suicide).cutpointr_is now deprecated. Transforming variables directly in the call is thus no longer supported, e.g.cutpointr(suicide, dsi * 2, suicide)now throws an error.- The object returned by
multi_cutpointrdoes not have thecutpointrclass anymore.
- A new
boot_cifunction is available that calculates confidence intervals (the empirical quantiles) based on the bootstrap results. - The
aucfunction is now exported and can be used to calculate the AUC from acutpointrorroc_cutpointrobject, e.g.auc(roc(suicide, dsi, suicide, "yes", "no")) boot_testis a new function for carrying out a bootstrap test for equivalence of a metric, e.g. the AUC, the Youden-Index or also the optimal cutpoint. The standard deviation is calculated assdof the differences in metric values per bootstrap repetition, then a z-test is calculated.
- New
typeargument toplot_rocfor choosing line or step - The resulting object from
roc_cutpointrcan now simply be plotted withplot()
- The bootstrapping no longer tries to redraw bootstrap samples if only one
class is drawn. In that case the repetition is removed from the results via
.errorhandling = "remove"inforeach. - Subsequently report the number of missing values in the bootstrap results.
summary.cutpointrandsummary.multi_cutpointrnow print an additionalNAscolumn in the bootstrap summary andcutpointrissues a message if any bootstrap repeats failed (e.g. because only one class was drawn). - Stratified bootstrapping is now supported via the
boot_stratifyargument.
- Make the printed output of
summary.cutpointrandsummary.multi_cutpointrmore compact - No rounding of numbers in
summary.cutpointrandsummary.multi_cutpointrany more. The rounding is now done inprint.summary_cutpointrandprint.summary_multi_cutpointr, respectively, and can be controlled via thedigitsargument plot_metrichas a newadd_unsmoothedargument for adding the unsmoothed metric values to the plot as a dashed line (defaultTRUE). Helpful to inspect the smoothing of functions likemaximize_gam_metric.- Add some mathematical details to
?oc_youden_kernel. - The Readme and vignette have been updated and condensed a bit.
- A warning is issued if in
metric_constrainor one of the other constrained metricsmin_constraincan not be achieved.
- Fix the default for
break_tiesincutpointr.defaultby setting it tomedianas it was already incutpointr.numericandcutpointr_.
- Let
roc()return a tibble instead of a data.frame - Printing results of
roc()is now possible withplot_roc() - Extra metric columns can now be added to a
roc_cutpointrobject withadd_metric() - Add prostate_nodal data set of nodal involvement and acid phosphatase levels in 53 prostate cancer patients
- Fix fetching of method name if method was called using
::or::: - Make test of summary printing more tolerant after problems with
tidyr0.8.3 - Issue an error if plot is used on a
multi_cutpointrobject - Add a summary method for
multi_cutpointr, a correspondingsummary_multi_cutpointrclass and a printing method for that class - The column
variableis not returned anymore bymulti_cutpointr, because it is identical topredictor - Run
multi_cutpointronly on all numeric columns, ifx = NULL
- Add constrainable metrics, e.g. sens_constrain to calculate sensitivity given a minimum value for specificity
- Fix a bug where dot-arguments were not passed to the metric function in cutpointr_internal
- Add a check to ensure that the metric function does not return only missing values
- Replace (fix) ">" by ">=" in the documentation of
cutpointr().
- Add
sigfigargument toprint.cutpointrto allow for specifying the number of significant digits to be printed - Add
add_metric()function to add further metrics to the output ofcutpointr() - Add
roc01metric function to calculate the distance of points on the ROC curve to the point (0,1) on ROC space - Fix
plot_sensitivity_specificity()ifboot_runs = 0
- Fix display of bootstrap results in summary
- Update benchmarks in Readme
- More tests and modified two tests that led to errors when CRAN checked
the package (
spar = NULLinmaximize_spline_metric) - Add links to the documentation of all method, plotting, main and metric functions to all other functions of the same family
- Add some checks to predict.cutpointr to prevent improper
cutpoint_nr - The
bootcolumn is now always returned andNA, if no bootstrapping was run, so that the number of returned columns is constant
- Fix a bug in check_method_cols that occurred when a user-supplied method function returned a metric column but no roc_curve
- Add chapters to the Readme about GAM, kernel and normal methods
- Fix bug in bootstrapping that allowed resamples with only one class to be sampled
use_midpointsis now also passed tomethodbycutpointrto allow for the calculation of midpoints withinmaximize_boot_metricandminimize_boot_metric, which before happened incutpointr, leading to slightly biased cutpoints in certain scenarios
- Change defaults in spline smoothing:
nknotsis now calculated bystats::.nknots_smsplandspar = 1 - Add
cutpoint_tolargument to define a tolerance around the optimized metric, so that multiple cutpoints in the vicinity of the target metric can be returned and to avoid not returning other "optimal" cutpoints due to floating-point problems - Change default value to
break_ties = c - If multiple optimal cutpoints are found and they are summarized using
break_ties, the returned main metric is now not the optimal one but the one corresponding to the summarized cutpoint (thus may be worse than the optimal one) - Add
maximize_gam_metricandminimize_gam_metricfor smoothing via generalized additive models - All plots with
geom_ribbonnow usesize = 0to plot no lines around the (transparent) areas
- Return multiple optimal cutpoints
- Add spline smoothing method
- Reformat docs
- Remove superfluous check in
plot_cutpointr - Add metrics
plr(positive likelihood ratio),nlr(negative likelihood ratio),false_discovery_rate, andfalse_omission_rate
- In preparation for a new version of tibble that will restore the old printing behaviour and in order to pass the CRAN check the print method for cutpointr has been altered depending on the loaded version of tibble.
silentargument for roc().- Reformat docs to include better formatted equations
- Remove superfluous check in plot_cutpointr
cutpointr_now accepts functions instead of character strings asmethodormetric- Fix naming the metric in the bootstrap if the supplied function returns an unnamed vector
- Fix help for the
use_midpointsparameter. If TRUE (default FALSE) the returned optimal cutpoint will be the mean of the optimal cutpoint and the next lowest observation (fordirection = ">=") or the next highest observation (fordirection = "<=") - Rename
sum_ppvnpv,prod_ppvnpv, andabs_d_ppvnpvtosum_ppv_npv,prod_ppv_npv, andabs_d_ppvnpvto match the naming scheme to the names of the metrics that optimize sensitivity and specificity - Also all metric names that are returned by the metric functions are now lower case
- The
summary_sdfunction now also returns 5% and 95% percentiles that are included in the output ofsummary - The default number of bootstrap repeats in
minimize_boot_metricandmaximize_boot_metricwas changed from 200 to 50 - The message "Running bootstrap..." is now displayed before executing the bootstrap so that possible messages or warnings can be attributed to the main cutpoint estimation or cutpoint estimation during the bootstrapping
- The
summaryfunction now returns a data.frame instead of a list, also the printing method forsummary_cutpointrhas been slightly modified - Add
plot_sensitivity_specificityfor plotting cutpoints vs. sensitivity and specificity on the y-axis - Remove
oc_optimalCutpointsfunction - Remove dependencies
ROCRandOptimalCutpointsby rewriting tests and storing benchmark results
- cutpointr() now also works on vectors of raw data, that is without the
dataargument. Thus, it can be used as before by specifyingdata,x, andclassor alternatively without specifyingdataand directly supplying the vectors of predictions and outcomes asxandclass. silentargument for optionally suppressing messages (e.g. which class is assumed to be the positive one)- Parts of the code were rewritten using Rcpp which leads to roughly a threefold speedup with larger n (n > 1e5)
- The automatic determination of the positive / negative classes and direction now uses the median of the predictor values per class instead of the mean so that the AUC is always >= 0.5
- The bootstrapping now also returns the in-bag main metric, the out-of-bag ROC curve, and the out-of-bag AUC
- Add multi_cutpointr for running cutpointr_ on multiple predictor variables
- Add metric risk_ratio
- Use geom_bar instead of geom_histogram if all cutpoints are integer in plot_x and plot_cut_boot or if there is just one unique value
- If bootstrapping is run, a bootstrapped confidence interval can be displayed in plot_metric
- Add methods for median and mean as cutpoint
- Fix display of cutpoint in ROC curve (use get_opt_ind in plot.cutpoint and plot_roc)
- Fix picking correct metric in plot_metric_boot