# -*- mode: org -*-

* 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
