# -*- mode: org -*-

* Version 3.2.0.
** User visible changes
- NEW FEATURE: pool.strata = "standardization" to obtain a marginal Net Treatment Benefit after stratification.

* Version 3.1.2
** User visible changes
- NEW FEATURE: scoring.rule = "Efron": same formula as Peron scoring rule but the Kaplan Meier estimator is constrained to 0 at end of follow-up.
- NEW FEATURE: model.tte now accepts models without the treatment variable as covariate.
- fix bug when using paired GPC with multiple endpoints.
- BREAK: when providing a survival model with argument model.tte,
  uncertainty about the estimated survival will be considered when the
  dataset used to fit the model is the same as the dataset provided to BuyseTest.

* Version 3.0.6
** User visible changes
- fix bug in user interface with method.inference = "varExact permutation".

* Version 3.0.5
** User visible changes
- fix bug in win odds calculation (Issue #14)

* Version 3.0.3
** User visible changes
- fix too lengthy table in summary output

** Internal change
- fix how Gehan scoring rule handles censoring (Github issue #13).
- statistical inference for bootstrap assuming normally distributed
  statistic handles infinite estimates that may occur due to
  transformation (e.g. atanh(1)).
- improve parallelisation for BuyseTest and powerBuyseTest (was
  previously slow with fast jobs so now jobs are grouped).
- update package documentation for new roxygen requirements.

* Version 3.0.0
** User visible changes
- NEW FEATURE: method model.tables providing the table favorable/unfavorable/neutral/uninformative in the summary
- NEW FEATURE: plot method for S4BuyseTest object
- bounds for the confidence intervals have been renamed: CIinf.Delta
  -> lower.ci and CIsup.Delta -> upper.ci
- stratified argument has been renamed strata.
- studentized bootstrap is now centered around the estimate instead of
  the empirical mean of the bootstrap sample.
- the effect of the seed argument in BuyseTest and powerBuyseTest has
  been changed. Instead of setting the seed at the start of the
  function, now the seed is used to generate sample or simulation
  specific seeds. Results are now identical whether one or more CPUs
  are used, and reproducible when multiple CPUs are used.
- add some support for paired data via strata argument in BuyseTest
- fix bug when using restriction with multiple endpoints (#11)

** Internal change
- more uniform effect of the strata argument

* Version 2.4.1
** User visible changes
- NEW FEATURE: add function CasinoTest to perform GPC on multiple groups.

** Internal change
- automatically run test file test-BuyseTTEM.R on CRAN

* Version 2.4

** User visible changes
- NEW FEATURE: argument pool.strata in the BuyseTest function to
  choose the weights used to combine estimates across strata
- NEW FEATURE: estimates, confidence intervals, and H-decomposition
  for the strata-specific effects
- NEW FEATURE: powerBuyseTest can perform an approximate search of
  the sample size leading to a specific type 1 and type 2 error
  (argument power).

** Internal change
- modify post-processing of GPC results (FCT_calcStatistic.h)

* Version 2.3

** User visible changes
- NEW FEATURE: BuyseMultComp to adjust for multiple comparisons (e.g. over endpoints).
- NEW FEATURE: performance function has been added.
- confint for BuyseTest object now returns a data.frame instead of a matrix
- fix bug when computing the variance in stratified GPC with method.inference="u-statistics" (>2.3.5)
- small modification of how p-values are computed when using permutation: (1+#more extreme)/(1+#perm) instead of (#more extreme)/(1/#perm)
- rename endpoints: endpoint_t#_r# where the first # is the thresholld
  and the second the restriction. When the threshold is below 1e-12,
  then _t# is omitted. When no restriction then _r# is omitted.
- additional arguments in simBuyseTest to specify the type of distribution: weibull, uniform, or piecewise exponential.
  
** Internal change
- add restriction
- the auc function has been partially re-written.
- add warning when using a correction and the survival curve is partially unknown.

* Version 2.2

** User visible changes
- NEW FEATURE: getPseudovalue can be used to extract
  pseudo-observations corresponding to the net Benefit.
- NEW FEATURE: model.tte can now accept survreg objects.
- NEW FEATURE: enable to use ~ ... + strata(gender) (or ~ ... +
  gender) in the formula interface of BuyseTest
- NEW FEATURE: function sensitivity to call BuyseTest over a grid of
  threshold values.

** Internal change
- fix bug in when using numeric variable for strata (prevent prodlim to switch to Stone-Beran estimator)
- fix bug in simBuyseTest when using negative correlation.
- fix bug in printGeneral when displaying the operator argument.
- fix operator option moving it to the C++ code.
- c++ for the competing risk has been updated to compute the influence
  function
- calculation of the survival/cumulative incidence function/influence
  function of the survival model for the Peron's scoring rule has been
  re-written.

* Version 2.1

** User visible changes
- NEW FEATURE (version 2.1.3): simBuyseTest now can simulate time to event endpoints
  and categorical endpoints that are correlated (argument argsTTE,
  element rho.T). The user interface of argument argsTTE has also been modified.
- NEW FEATURE (version 2.1.5): simBuyseTest simulates time to event
  endpoints using a Weibull distribution. The argument rates are now
  called scales (i.e. correspond to the inverse of the previous
  arguments).
 
** Internal change

- add options precompute in BuyseTest.options (version 2.1.4): when
  set to TRUE, the integrals over the survival and their derivatives are
  pre-computed instead of being computed on the fly when scoring the pairs.
- fix c++ memory issue (version 2.1.1-2.1.3)
- fix calculation of probability of being uninformative (version 2.1.0)

* Version 2.0

** User visible changes
- NEW FEATURE: powerBuyseTest now support multiple sample size when
  using the Peron's scoring rule.  
- Fix issue related to powerBuyseTest (issue #6 on Github)

** Internal change
- powerBuyseTest has been partially re-written. Should be easier to
  read/debug now.
- add argument engine to BuyseTest.options to switch between the new
  C++ implementation (looping first over pairs and then over
  endpoints) and the old C++ implementation (looping first over
  endpoints and then over pairs). The new is more memory efficient but
  is not available when correction.uninf>0.
- old implementation is more memory efficient when using
  method.inference="u-statistic" and scoring.rule="Peron" with several
  endpoints thanks to the use of sparse matrices to store partial
  derivative regarding nuisance parameter.

* Version 1.9
** User visible changes
- NEW FEATURE (1.9.1): summary and confint can now display the results
  for proportion in favor of treatment (also called Mann-Whitney
  statistic) or control
- NEW FEATURE (1.9.0): studentized permutation tests are now available
  (method.inference = "studentized permutation").
- method.inference="u-statistic" is now the default options

** Internal change
- reorganize R function files.

* Version 1.8
** User visble changes
- NEW FEATURE (1.9.0): function simCompetingRisks to simulate data with competing risks under proportional sub-hazard
- NEW FEATURE (1.9.0): add argument cluster in confint and iid
- NEW FEATURE (1.8.3): function auc
- NEW FEATURE: method.inference="u-statistic" gives valid results when
  using scoring.rule="Peron".
- NEW FEATURE (1.8.1): scoring.rule="Peron" also works in presence of
  competing risk (method.inference="u-statistic" does not work in this
  case though).

- CHANGE: The group variable in simBuyseTest is treatment instead of Treatment.

- CHANGE: The stratification of the resampling procedure is now defined via
  the argument strata.resampling. In particular this enables to
  performed a bootstrap stratified on the treatment variable.
- CHANGE (1.8.2): argument censoring has been renames status in
  the formula interface. Now the user can specify censoring = "left"
  or "right" to deal with right or left censoring (left censoring is
  only implemented for the Gehan's scoring rule)

- Fix issue related to rates in simBuyseTest (issue #4 on Github)
- fix bug in BuyseTest (argument strata.resampling)
- Add reference in the description as suggested by CRAN.
- Update vignette.

** Internal change
- Fix clang-UBSAN issue in the C++ code.
- Second order H-projection for scoring.rule="Peron" has been fixed.
- To a large extend, the C++ code performing the GPC has been
  re-written to be able to compute the iid decomposition for the
  scores when using the Peron's scoring rule.

* Version 1.7
** User visble changes
- method.inference="asymptotic" becomes method.inference="u-statistic"
- argument method.tte becomes scoring.rule.
- NEW FEATURE: coef function 
- NEW FEATURE: iid function 
- NEW FEATURE: option hierarchical in BuyseTest
- NEW FEATURE: studentized bootstrap
- NEW FEATURE: gaussian permutation

** Internal change
- fix bug in the computation of the asymptotic variance + add tests
- faster computation of the iid (done in the C++ code)

* Version 1.6
** Internal change
  - simplify C++ code.

* Version 1.5
** User visble changes
  - Argument statistic now takes values netBenefit or winRatio
    (instead of netChance or winRatio).
  - NEW FEATURE: standard errors/p.values/confidence intervals can now
    be computed without resampling setting the option method.tte to asymptotic
  - NEW FEATURE: a function powerBuyseTest has been added to perform
    simulation studies with BuyseTest (e.g. compute power, coverage or bias).

** Internal change
  - improve the management of the weights of the pairs from one endpoint to another.

* Version 1.4
** User visble changes - BuyseTest function
  - NEW FEATURE: Instead of estimating the survival curves on the data
    used for the GPC, BuyseTest can use pre-defined survival models
    for method "Peron" (argument model.tte).
  - NEW FEATURE: methods getSurvival to access the survival
    probability used by BuyseTest.
  - NEW FEATURE: getPairScore to access the score of each pair.
  - NEW FEATURE: argument method.uninf in BuyseTest enables to
    re-attribute the uninformative scores to favorable/unfavorable/neutral.

** Internal change
- improve initSurvival and the computation of the Peron (C++ code)
- change the handling of NA in the survival when using method.tte="Peron" (C++ code)
- change the way neutralAsUninf is implemented (C++ code)

* Version 1.3
** User visble changes - BuyseTest function
  - NEW FEATURE: boostrap resampling (method.inference = "boostrap")
  - NEW FEATURE: confint method to extract confidence intervals
  - NEW FEATURE: BuyseTest can handle competing risks (experimental) 
  - argument n.permutation becomes n.resampling
  - argument method becomes method.tte
  - add argument method.inference to choose how to compute pvalues and
    CI.
  - option method.tte="Peto" and method.tte="Efron" have been removed.

** Internal change
  - reorganize BuyseTest into BuyseTest and .BuyseTest. Make
    initalization and testing of the arguments independent
  - remove dependency on tcltk.
  - confidence intervals and p.values are computed outside BuyseTest, when calling summary.

* Version 1.2
** User visble changes - BuyseTest function
  - add argument keepComparison, operator.
  - argument n.bootstrap becomes n.permuation
  - argument neutralAsUninf becomes neutral.as.uninf
  - nicer display with summary
  - lighter display when printing the object

** Internal change
  - reorganize the tests

* Version 1.1
  - add a formula argument to the BuyseTest function. This can be used instead of the treatment, endpoint, threshold, type, censoring, and strata argument
   to specify the prioritized endpoints.
  - unify the C++ code, add a threshold for considering a pair non-informative (w>1e-12). May induce differences with previous versions in the index of uniformative pairs.
  - uses prodlim instead of survival to compute the KM estimates.
  - Add a neutralAsUnif argument to the BuyseTest function to decide whether the analysis should continue on lower priority when a pair is classified as neutral
