# Information about versions 0.0-0 (?) 0.0-1, ..., 0.0-3, # is lost in the mists of time. # # Information about the changes 0.0-4 |--> 0.0-5 |--> 0.0-6 # will be added ``when I get around to it''. :-) Version 0.0-6 |--> 0.0-7: # 24/August/2009 (1) Added namespace; changed name of .First.lib() in First.R to .onLoad(). (As one must when adding a namespace, apparently.) Thanks to Tobias Verbeke for instigating this change and for showing me how to do it. (2) Removed announcement of old changes from .First.lib(); put in announcement of addition of namespace. Version 0.0-7 |--> 0.0-8: # 23/October/2009 (1) Added bivariate isotonic capabilities, using Applied Statistics Algorithm AS 206, at the request of Paramjit Gill. (2) Corrected the spelling of ``NAMESPACE'' (!!!) in a message produced by the .onLoad() function. Version 0.0-8: |--> 0.0-9: # 5/September/2011 (1) Changed some titles in the help files to avoid cock-ups in the INDEX file (since R CMD INSTALL now seems to truncate titles that are over 72 characters long. Version 0.0.9 |--> 0.0-10 # 04/November/2011 (1) Got rid of the INDEX file completely! Seems not to be needed, and just causes trouble. (2) Got rid of the "now has a NAMESPACE" message in First.R, since *everything* now has a namespace! Version 0.0-10 |--> 0.0-11 # 11/January/2013 (1) Fixed a bug in the Fortran code for the "smooth" algorithm underlying the biviso() function. In this code some dimensions were hard-wired at 20. This caused the function to throw an error if the matrix of values being isotonized was bigger than 20 x 20. I revised the code so that the dimensions are now dynamic. Thanks go to Jing Qin by whom this bug was drawn to my attention. (2) While doing some checking I noticed that the function was returning results that weren't *quite* isotonic. Made adjustments to value of "eps" and made "EPS" an argument of the "PAV" subroutine. This appeared to reduce the problem substantially but did not quite eliminate it completely. (3) It also made the algorithm sometimes fail to converge, so I incremented the default value of "ncycle" from 1000 to 10000, which seems to fix the problem. Version 0.0-11 |--> 0.0-12 # 12/January/2013 (1) Changed the file First.R to contain two functions: .onLoad() to load the Fortran code, and .onAttach() to produce the startup message. Version 0.0-12 |--> 0.0-13 # 16/January/2013 (1) Changed biviso() to use two "epsilon" arguments, namely "eps" and "eps2" and changed the code of "smooth.f" to make use of these. The "eps" argument is used for determining convergence. The "eps2" argument gets passed to the PAV() subroutine and is used for determined whether there are adjacent violators. Version 0.0-13 |--> 0.0-14 # 31/March/2013 (1) Fixed a typo in biviso.R and one in biviso.Rd. # 1/April/2013 (2) Added arguments "fatal" and "warn" to biviso(); the first (if set to FALSE) permits the return of "intermediate" values where convergence has not yet been achieved. (This addition prompted by a request from Revathi Ananthakrishnan.) (3) Added a check in biviso() that ncycle is at least 2. (4) Modified the first example for biviso() to introduce some random non-isotonicity. (5) Added an example illustrating the use of fatal=FALSE in biviso(). Version 0.0-14 |--> 0.0-15 # 18/April/2013 (1) Fixed up the Fortran dimension statements, getting rid of dummy 1's as the last dimensions (which now throws a warning from the compiler). Version 0.0-15 |--> 0.0-16 # 31/May/2015 (1) Corrected the comment at the beginning of ufit.r. (2) Changed unimode to deal with the linear ordering cases immediately without further fooling about. (3) Consequently removed checks on k1 == 0 and k2 == 0 (if either of these happens something is toadally screwed up; goof is set to .true. and the function returns). Uploaded to CRAN 31/05/2015 Version 0.0-16 |--> 0.0-17 # 31/May/2015 (1) Added unimode.sa() (standalone function for fitting a unimodal isotonic regression) to the package. It is an "internal" undocumented function. (2) Fixed the munged-up date field in DESCRIPTION. # 01/June/2015 (1) Fixed glitches in unimode.sa(). (2) Fixed glitch in ufit.r. Uploaded to CRAN 01/06/2015 Version 0.0-17 |--> 0.0-18 (1) Wrote vignette explaining the algorithm used. (2) Added exemplary data set "vigour", the data on vigour of growth in stands of spruce trees in New Brunswick, Canada. Uploaded to CRAN 05/06/2019 (???). # 26/May/2020 Fixed glitch in src/init.c --- the declaration for ufit incorrectly indicate that "mse" was integer, whereas in fact mse was declared *double precision* in ufit.r. This error was fixed on CRAN by the CRAN maintainers, and was kindly explained to me by Brian Ripley. The version now on CRAN appears to retain the "old" version number, i.e. 0.0-18. Version 0.0-18 |--> 0.0-19 # 23/July/2023 Fixed a serious infelicity that was kindly pointed out to me by Zhiwei Zhang. The code suffered from an unfortunate conflation of the mode location and the index, amongst the x-values, of that location. It was still possible to get correct answers but one had to be very careful. The function ufit() now has two arguments, for specifying the location of the mode: "lmode", the actual location, and "imode" the index among the x-values of the location. It is an error to specify both of these arguments. If *neither* is specified, then the function performs an exhaustive search among all possible mode locations for the optimal (in terms of minising the error sum of squares) location. An error is thrown if lmode is specified and it is not one of the x-values. Likewise an error is thrown if imode is specified and it is not among the indices from 1 to n (where n is the length of y). Note that if x is not specified it defaults to an equi-spaced sequence of length n on [0,1]. # 01/October/2023. Finally got around to submitting the package to CRAN. (CRAN was inactive back when the actual adjustments were made, so I didn't submit it at the time, and then it slipped off the radar Fixed some kludges in the Fortran subroutine smooth.f (code from Applied Statistics Algorithm AS 206) that now trigger warnings. (Problem with nested do loops terminating at the same label.) Had to change a "GO TO" from "GO TO 5" to "GO TO 6" (where 6 is the new label for the inner loop) on line 53. Took forever to track down what was going wrong!!! Package built and checked; submitted to CRAN. Version 0.0-19 |--> 0.0-20 At CRAN's behest, "compacted" the vignette file algorithm.pdf, using (from within the vignettes directory): tools::compactPDF("./algorithm.pdf",gs_quality="ebook") The response said that the size was reduced from 107Kb to 88Kb (although ls -l gave the size of algorithm.pdf to be about 109 Kb before, and about 89.9 Kb after. Whereas the CRAN message said that the reduction was/would be from 349 Kb to 99 Kb. Nothing makes any sense. Version 0.0-20 |--> 0.0-21 On Ivan Krylov's advice did the build using R CMD build --compact-vignettes=both Fingers crossed.