gs_update_ahr() no longer reports sample size (n) in updated analysis tables or their default summaries, consistent with gsDesign (#677).gs_update_ahr() gains test_upper, test_lower, and test_harm arguments so that the boundaries tested at each analysis can be changed when updating a design. It now also carries the harm bound through the update, drops bounds that are not tested at an analysis, and supports changing the number of analyses (taken from event_tbl) so the updated monitoring schedule can differ from the original design.gs_update_ahr() no longer errors with "missing value where TRUE/FALSE needed" when an analysis is added beyond the original design and a boundary is a fixed numeric par vector (e.g. the -Inf futility bound of an efficacy-only design). Such par vectors are now extended (or truncated, when analyses are deleted) to the updated number of analyses. The new lower and lpar arguments let users specify the lower bound of the updated design explicitly. gs_update_ahr() also now errors when ustime, lstime, test_upper, test_lower, or test_harm do not match the updated number of analyses.ppwe() gains stratum and stratum_prev arguments, so it can compute the marginal (population-level) survival or CDF of a stratified piecewise exponential distribution, as the prevalence-weighted mixture of the per-stratum curves. A mixture of exponentials is not exponential, so the marginal curve has to be averaged on the survival scale instead of by pooling the per-stratum failure rates (#680, thanks to @yihui).gs_design_npe() and gs_power_npe() are now assigned a unique class.to_integer() now retains the harm boundary (harm, hpar, test_harm) when converting an AHR group sequential design to integer events, instead of silently dropping it.lt() methods are now the recommended way to render design summaries as tables. S3 methods for lt() are provided for fixed_design_summary and gs_design_summary objects, and the lt() generic is re-exported so it can be used after loading only gsDesign2. There are no significant visual changes in the HTML tables. as_gt() is deprecated but kept for one release: it still returns a gt_tbl object (so existing code that customizes the output with gt functions keeps working) and now requires the suggested gt package to be installed.gs_design_ahr(), gs_power_ahr(), gs_design_npe(), and gs_power_npe() through the new harm, hpar, and test_harm arguments. Harm boundaries are available for group sequential designs with futility testing and are not supported for fixed designs (#640, thanks to @LittleBeannie, @yihui, and @keaven).summary(), gs_bound_summary(), lt() (and the deprecated as_gt()), and as_rtf() output, with controls for custom labels and bound display (#640, thanks to @LittleBeannie, @jdblischak, @yihui, and @keaven).gs_design_ahr() reproduces gsDesign::gsSurv(method = "Schoenfeld") boundaries across test types, including designs with harm boundaries (#640, thanks to @LittleBeannie, @yihui, and @keaven).gs_design_rd() and gs_power_rd() for risk difference design (#611, #614, thanks to @LittleBeannie).sequential_pval() function has been added to calculate the sequential p-value for an AHR group sequential design (#605, thanks to @LittleBeannie).gs_cp() and gs_cp_simple() functions are now available for conditional power computation for AHR designs with non-constant effect size (#550, thanks to @LittleBeannie and @shiyuskaya).gs_info_rd() have been corrected (#615, thanks to @LittleBeannie).Time column (#622, thanks to @LittleBeannie).gs_design_ahr() has been optimized to be about 2x faster (#623, thanks to @yihui).gs_power_npe() has been optimized (#624, thanks to @jdblischak).test_upper value (#621, thanks to @LittleBeannie).gs_design_ahr() function has been updated to allow outputting spending time (#602, thanks to @LittleBeannie).gs_update_ahr() function documentation (#608, thanks to @LittleBeannie).gs_design_ahr() have been added (#604, thanks to @LittleBeannie).@inheritparams (#598, thanks to @LittleBeannie)text_summary() supports design objects with spending functions specified as character strings (#587, thanks to @yihui).uninteger_is_from is fixed in to_integer() (#591, thanks to @jdblischak)text_summary() is updated to support fixed designs from gs_design_ahr() (#592, thanks to @jdblischak)gs_power_wlr() function now includes an h1_spending argument, allowing users to specify a spending under the alternative hypothesis (#565, thanks to @LittleBeannie).info_scale argument: fixed_design_ahr(), fixed_design_fh(), fixed_design_mb(), and fixed_design_rd() (#571, thanks to @LittleBeannie).gs_design_npe() and gs_power_npe() has been consolidated into a single topic for improved clarity and easier navigation. (#567, thanks to @LittleBeannie).|>) exclusively, removing the magrittr dependency and aligning with modern R practices. (#577, thanks to @jdblischak).gs_cp_npe(), is now available for calculating simple conditional power under NPH.
A vignette has been published on the pkgdown website (#510, #539, #545, thanks to @LittleBeannie).gs_bound_summary() is available with similar output structure as gsDesign::gsBoundSummary() and
supporting for multiple alpha (#468, #522, #537, thanks to @jdblischak).text_summary() (#526, thanks to @LittleBeannie).to_integer() (#483, thanks to @LittleBeannie).round_up_final = TRUE
(#488, thanks to @LittleBeannie)..gs_design_ahr(..., upper = "gs_spending_bound", upar = list(sf = "sfLDOF", ...)) (#509, thanks to @yihui).footnote argument of as_gt() can take the value FALSE to disable footnotes (#514, thanks to @yihui).expected_accural(), expected_time(), gs_design_ahr(), gs_design_combo(),
gs_design_npe(), gs_design_wlr(), pw_info(), ppwe(), s2pe(), and gs_bound() (#528, thanks to @yihui).to_integer() (#478, thanks to @LittleBeannie).info_frac in gs_design_wlr() when info_scale = "h0_info" (#485, #486, thanks to @LittleBeannie).h1_spending argument to gs_power_ahr() (#518, thanks to @LittleBeannie)gs_cp_npe() (#519, thanks to @shiyuskaya)gs_design_rd() when info_scale = "h0_h1_info" (#402, thanks to @LittleBeannie).gs_spending_combo() to enable HSD spending function (#444, thanks to @LittleBeannie).fixed_design_maxcombo() regarding the upper bounds (#445, thanks to @elong0527).gs_design_wlr() when the design is driven by information fraction only (#446, thanks to @LittleBeannie).pw_info() when there are many piecewise HRs (#460, thanks to @LittleBeannie).The gs_update_ahr() function (test version) is updated to
info_scale as the original design (#470, @LittleBeannie).Rounding of integer design is updated (#488, #484, #486, thanks to @LittleBeannie).
Integer design (i.e., integer sample size and events) is updated to ensure exact integer sample size and events (#452, #460, thanks to @LittleBeannie and @yihui).
Change the information fraction displayed at the summary-gt table from under H1 to H0 for logrank tests (#439, thanks to @LittleBeannie).
Add the sample size as the output of ahr() and pw_info() (#427, #433, thanks to @LittleBeannie).
col_decimals and analysis_decimals to summary.gs_design() (#403, #431, @jdblischak).lower is equivalent to gs_b (#413, thanks to @jdblischak )summary(), as_gt() as_rtf(), and to_integer() functions are refactored (#448, #449, #450, #465, #461, thanks to @yihui).full_alpha argument from as_rtf.gs_design() (#458, thanks to @yihui).gs_b() (#415, @jdblischak)gs_power_ahr() are added (#420, @LittleBeannie).summary() are added (#422, #426, thanks to @yuliasidi, @jdblischak and @LittleBeannie).ahr_blinded() are added (#435, thanks to @DMuriuki).to_integer() are added (#476, thanks to @LittleBeannie).gs_update_ahr() function is now available for efficacy and futility
boundary update based on blinded estimation of treatment effect (#370).gs_design_wlr() depending on npsurvSS (#344, #356).gs_design_ahr() to incorporate information fraction driven design when number of analyses >= 4 (#358).as_gt() is added (#337).as_rtf() method is now available for fixed_design and gs_design
objects for generating RTF table outputs (#278).gs_power_wlr() and to_integer() now check and convert integer
sample size more rigorously (#322).gs_design_*() now handle exceptions explicitly when all hazard ratio
is set to 1 throughout the study (#301).fixed_design_rd() will not generate warnings due to the previous
default value change of h1_spending (#296).gs_power_ahr() now runs twice as fast by using data.table and other
performance optimizations (#295), enhanced by similar
improvements in gs_info_ahr() and pw_info() (#300).to_integer() and summary() are updated (#292).define_enroll_rate() and define_fail_rate() documentation by
adding detailed descriptions and improving code examples (#302).Imports (#307, #325).library() calls (#332).fixed_design() into a group of fixed_design_*() functions for enhanced modularity (#263).gs_design_rd() and gs_power_rd() now have updated options of weighting for stratified design (#276).ppwe() now accepts two arguments duration and rate instead of a data frame fail_rate (#254).gridpts(), h1(), and hupdate() (#253).define_enroll_rate() and define_fail_rate() as new input constructor functions to replace the tibble inputs (#238).pw_info() which calculates the statistical information under the piecewise model (#262).expected_event() to improve computational performance (@jdblischak, #250).inst/ to tests/testthat/ as developer tests (#269).gs_design_rd() (#220)..cpp and header files (#224).summary() (#231).fixed_design() function in the application of stratified design when using the Lachin and Foulkes method (#211).fixed_design() function in the application of rmst (#212).info_scale argument options from c(0, 1, 2) to c("h0_h1_info", "h0_info", "h1_info") to be more informative and make the default value ("h0_h1_info") clear (#203).README.md (#198).README.md to show the monthly downloads (#216).gs_power_ahr() (#202).Suggests to Imports.Suggests..gitattributes for GitHub Linguist to keep the repository's
language statistics accurate.gridpts(), h1(), hupdate(), and gs_create_arm()
to avoid the use of ::: in code examples.data-raw/ which is not included in the package.First submission to CRAN in March 2023.
check_fail_rate() when only 1 number in fail_rate is > 0 (#132).gs_power_ahr() when study duration is > 48 months (#141).fixed_design() for event-based design (#143).gs_design_combo() when test only applies to part of the analysis (#148).gs_info_rd() for variance calculation (#153).summary() for capitalized first letter in the summary header (#164).GitHub release in December 2022.
vignette("style").
See the detailed mapping between the old API and new API in #84.fixed_design() to implement different methods for power/sample size calculation.info_scale arguments to gs_design_*() and gs_power_*().expected_accrual() for stratified population.gs_spending_bound() when IA is close to FA (#40).gs_power_bound() when applied in the MaxCombo test (#62).gs_design_npe() for type I error (#59).GitHub release in August 2022.
Merck/gsdmvn.GitHub release in May 2022.
GitHub release in May 2021.
s2pwe().AHR() when using stratified population.GitHub release in December 2019.
eEvents_df() explaining the methods thoroughly.eEvents_df() to simplify output under option simple = FALSE.GitHub release in December 2019.
docs/ directory to correct the reference materials on the website.eAccrual().GitHub release in November 2019.
simfix(), simfix2simPWSurv(), pMaxCombo()).GitHub release in November 2019.
AHR() and simfix() more compatible with each other.GitHub release in October 2019.
AHR() to output trial duration, expected events and average hazard ratio in a tibble.pMaxCombo() to compute p-value for MaxCombo test; pMaxComboVignette demonstrates this capability.GitHub release in September 2019.
eEvents_df().AHR().