Changes in version 0.99-7 (2026-02-05) NEW FEATURES o Our weights() methods for lmrob and glmrob results now work for weights(mod, type = "working") which are proportional to the type = "robustness" weights. This allows using the “influence measures” from stats, e.g., influence(); now tested somewhat. Changes in version 0.99-6 (2025-09-04) Misc o small change in vignette lmrob_simulation.Rnw such that it also works with ggplot2 version 4.0.0 and newer. Changes in version 0.99-5 Misc o small changes in tests/*, "robustifying" against the possibility of osVersion being NULL; with thank to Michael Chirico for alerting me. Changes in version 0.99-4-1 (2024-09-27) Misc o small changes in tests/lmrob-psifns.R and *.Rout.save, notably avoiding small diffs on "M1mac" and "noLD" (--disable-long-double). Changes in version 0.99-4 (2024-08-19) NEW FEATURES o lmrob.fit() gets new option bare.only for some speed up, in case a relatively “bare” result is sufficient. Misc o fix another LaTeX no more wanting math in section titles (same problem as 0.99-3), now for lmrob_simulation.Rnw. Now also use \texorpdfstring inside \title{} of psi_functions.Rnw _and_ use newtheorem{..} _after_ \hypersetup{...} (thanks to Kurt). o avoid some ggplot2 warnings (about omitting obs.) o do not warn about skipping equilibration for p=1. o define STRICT_R_HEADERS now (src/*.[ch]). Changes in version 0.99-3 (2024-07-01) Misc o Again adapt ../vignettes/lmrob_simulation.Rnw to ggplot2 changes ( s/ fun.y / fun / ). o tests/subsample.R now shows "Matrix" info (as that gave confusing error during Matrix / R-devel changes). o Latest LaTeX does not like math in \section{.}; hence replacing \psi by \texorpdfstring{$\psi$}{psi}. Changes in version 0.99-2 (2024-01-27) BUG FIXES o fix thinko bug introduced exact fit checking in 0.99-0; thanks to the report by Thomas Mang. Changes in version 0.99-1 (2023-11-29) Misc o document the ... argument(s) of nlrob.control(). o DESCRIPTION: more URLSs. o *.Rd tweaks; avoiding other NOTEs. o src/lmrob.c,mc.c,monitor.c: format %lld etc Changes in version 0.99-0 (2023-06-16) NEW FEATURES o In case it finds an _exact fit_, i.e., k > n/2 residuals are (practically) zero, lmrob.S() now returns that, scale = 0, and robustness weights weights(., "robustness") which are either 0 or 1 quickly and more consistently. This is _not yet_ satisfactorily working for the “large n” case. **** *TODO*: Optionally (but off by default?? for back compatibility??), lmrob() initialized by such an exact-fit estimator may use a (user-specified or automatic) scale s^ > 0 to continue providing efficient SM / MM estimates. o lmrob.control() gets class "lmrobCtrl" which can be print()ed and update()d. o New tuning const zero.scale = 1e-10 instead of hardwired EPS_ZERO in lmrob.S()'s C code; additionally the exact fit / zero-residuals checking is finally y-scale equivariant, using 1/n ||y||_1 = mean(abs(y)). BUG FIXES o Fixed covMcd(): corrected the consistency correction factor for the reweighted estimate: was MCDCons(p, sum(w)/n), now is MCDCons(p, 0.975), see Croux and Haesbroeck (1999). Consequently, often covMcd() and estimates based on it, such as BYlogreg() or ltsReg() are slightly changed. o registered residuals.lmrob.S _and_ changed formals compatible with generic to (object, ...). o lmrob.S() in C level refine_fast_s() no longer modifies beta_cand[] which notably fixes a bug found in exact-fit examples previously resulting in coef() == 0 “results”, also for lmrob() which calls lmrob.S() for its default initial estimate. o print() finally works again as intended (_not_ printing a largish list); mostly by fixing internal lmrob.control.minimal(). o summary.lmrob(obj) now also gets a weights component from obj if that is non-trivial; this may also correct summary() output in weighted cases. o Minor fixes in plot.lts() related to par mfrow. o ltsReg() Help file changed - the note strongly advising NOT to use LTS regression removed. Misc o argument mf e.g., in lmrob.fit() has been deprecated since 2017-12-09 and is defunct now. o lmrob() tweaks, notably saying more for trace.lev >= 3. o replaceed (almost) all Calloc() by R_alloc() in C code; e.g., prevents leakage from user interrupt. Changes in version 0.95-1 (2023-03-29) BUG FIXES o Fixed covMcd(): raw.only=TRUE does not work in the case nsamp="deterministic" NEW FEATURES o New lmc() and rmc() for robust tail weight (“robust kurtosis”). Misc o Our tests/*.R no longer rely on the Matrix test-tools.R collection but rather use our much smaller own one in xtraR/test-tools.R. o fixed \ escape in man/aircraft.Rd. o initialize in src/lmrob.c to avoid false positive compiler warning. o document "internal" .regularize.Mpsi(). o replace () by (void) arguments for F77_SUB(println). Changes in version 0.95-0 (2022-04-02) BUG FIXES o huberM(x, k) now also works in small sample cases with +/-Inf, e.g. for x = c(-Inf, 1). NEW FEATURES o New huberize() utility, notably by default used in mc(). o mc() now by default uses doScale=FALSE in order to guarantee convergence also in extreme cases when used _together_ with new c.huberize = 1e11. Both are _not_ back compatible but clearly better in extreme cases, as assessed by Lukas Graz' BSc thesis. Note that the behavior of the new default doScale=FALSE has been amended in the C code to be more compatible in its eps checks with (the previous default) doScale=TRUE. Lastly, a message() is printed currently, at most once per R session, whenever mc() is called without an explicit specification of doScale=*, alerting users to the changed default. This message can be turned off by setting options(mc_doScale_quiet = TRUE). o New dataset data(x30o50) as an example of potentially problematic data, not just for mc(). Misc o rather "truncating" +/-Inf to , use NA.OK = TRUE in Qn() and Sn()'s .C() call. o Our C code no longer uses the DOUBLE_* constants from S, but rather standard . Changes in version 0.93-9 (2021-09-27) BUG FIXES o Qn(x) and Sn(x) gain an na.rm = FALSE option and now work when x has NAs and contains +/- Inf. Misc o No longer include Rdefines.h as it is somewhat deprecated. o In src/lmrob.c add USE_FC_LEN_T and use FCONE rather than the older FCLEN approach. Changes in version 0.93-8 (2021-06-02) NEW FEATURES o scaleTau2() gets new optional iter = 1 and tol.iter arguments; mostly experimentally to see if or when iteration makes sense. o Qn(x, *) gets new optional k = . to indicate the “quantile” i.e., order statistic to be computed (with default as previously hard-coded). Experimentally to try for cases where more than n/2 observations coincide (with the median), i.e., x[i] == x0 == median(x[]), and hence Qn(x) and mad(x) are zero. o adjOutlyingness() gets new option IQRtype = 7. Tweaks o For tests: *again* differences found in the non-sensical adjOutlyingness() example (with large p/n, hence many "random" values in the order of 1e15). Disable the test for now (and record the result in *.Rout). BUG FIXES o The test() utility in tests/lmrob-ex12.R no longer calls matrix(x, n,4) where the length of x does not match 4n. Similar change in tests/mc-strict.R Changes in version 0.93-7 (2021-01-04) NEW FEATURES o Use \CRANpkg{.} in most places, providing web links to the respective CRAN package page. o adjOutlyingness() now gains optional parameters to be passed to mc(). BUG FIXES o update the internal man page, so new checkRdContents() is happy. o fix several \url{.}'s that now are diagnosed as ‘moved’. o adjOutlyingness() finally works with p.samp > p. o scaleTau2() now works with Inf and very large values, and obeys new na.rm = FALSE argument. o add check.environment=FALSE to some of the all.equal() calls (for 'R-devel', i.e., future R 4.1.x). o wgt.himedian(numeric()) now returns NA instead of occasionally seg.faulting or inf.looping. Ditto for a case when called from Qn(). Changes in version 0.93-6 (2020-03-23) NEW FEATURES o splitFrame() now treats character columns also as categorical (the same as factors). Tweaks o Small updates, also in checks for newer compiler settings, e.g., FCLEN macro; also F77_*() etc, in order to fix 'LTO' issues. o More careful or _less_ calling intpr(): correct "Rank" of array (for gfortran/gcc 10, when -fallow-argument-mismatch is not set). Changes in version 0.93-5 (2019-05-12) Tweaks o For tests: try harder in moreSessionInfo() to detect openBLAS (should work for KH's debian openBLAS setup). Changes in version 0.93-4 (2019-03-19) BUG FIXES o R_CHECK_LENGTH_1* fix in default value for ask in plot methods for mcd and lts o src/rowMedians.c gets better PROTECT()ion thanks to Tomas Kalibera's "rchk"s. Tweaks o losen the strict tests more, convergence issues on all non-standard BLAS platforms. Now modularized the partly platform dependent testing into moreSessionInfo() in ./xtraR/platform-sessionInfo.R. Further, for now use RNGversion("3.5.0") e.g. in ../tests/mc-strict.R. Changes in version 0.93-3 (2018-09-21) Tweaks o losen the strict tests, notably in tests/nlregrob-tst.R to work around nls() convergence issues on all non-standard BLAS platforms. Changes in version 0.93-2 (2018-07-27) BUG FIXES o Update lmrob() to the change in R (incl 3.5.1 patched). o mc() gets new optional doScale argument, and _increased_ defaults for the tolerances eps1 = 1e-14, eps2 = 1e-15 such that it should converge by default in more cases. o A na.action is now kept in summary(lmrob(*)), and when print()ing it, a note about omitted observations, e.g., because of NA's, is made as for lm(). o Internal lmrob.weights(): more "resistant" in case scale=0, using na.rm=TRUE (report only, no reprex). o lmrob(*, trace.lev >= 2) now shows some information about the number of find_scale() iterations used (as these are now stored C internally). Changes in version 0.93-1-1 BUG FIXES o src/robustbase.h: is_redescender now is static inline, needed for some compilers, e.g., on ubuntu 18.04. Fixing R-forge bug(s) 6588 (and 6590, 6593), Changes in version 0.93-1 (2018-06-23) NEW FEATURES o The ‘Usage:’s in the data set help pages now say data(<..>, package="robustbase"). o The lmrob_simulation vignette now should continue to work with upcoming package ggplot2. BUG FIXES o Mpsi(x, c, psi="huber", deriv=-1) now gives rho(x) instead of mostly Inf. Changes in version 0.93-0 (2018-04-24) NEW FEATURES o .psi.const(*, "lqq") now also gives a "constants" attribute. o more examples and help on Mpsi() etc functions and tuning constants. o The S estimator lmrob.S() and M-S estimator now both make use of the new lmrob.control() argument scale.tol which defaults to 1e-10, its formerly hardwired value. o lmrob.S() further gets a new option only.scale = FALSE, which when true allows to only compute the S scale estimate. In that case, but also generally, trace.lev = 3 or larger also produces output showing the C level find_scale() iterations. o (By Manuel Koller) There's now a small C API to call our Mpsi() etc from C code in other packages, as C_psi(), etc; using new ../inst/include/robustbase.h. o nlrob()$call$algorithm now always contains the algorithm used as a character string, compatibly with nls(). o new data set steamUse. o Vignette lmrob_simulation.Rnw: fixed the wrong “emprical power” plots; with faster ggplot2, remove all eval=FALSE for plots and longer store the *.pdfs. nlrob() gets model option to ask for the model.frame to be returned. BUG FIXES o lmrob(..., method = "S") no longer necessarily produces a warning in .vcov.w(). o nlrob() returns a correct dataClasses component. Tests Tweaks o For use in non-R-internal BLAS/Lapack libraries, several tests/*.R examples have been tweaked. Changes in version 0.92-8 (2017-11-01) NEW FEATURES o fullRank() utility for adjOutlyingness: o adjOutlyingness(), gets new options p.samp and trace.lev, and when it fails to find enough good directions, now checks the rank and mentions fullRank() in case the matrix is (QR-)rank deficient. o The "lmrob" method for vcov() gets optional argument complete = TRUE, where only _complete = FALSE_ is back compatible. o improved (error) messages in singular case in .vcov.avar1(). o .psi.const() is exported as well, and help is improved about using and setting non-default psi tuning constants. BUG FIXES o loosened some regression test tolerances (for alternatives to BLAS) in tests/(mc-strict|poisson-ex). o scaleTau2(x, *) gains an optional sigma0 argument and now returns zero instead of NaN when sigma0 == 0. Changes in version 0.92-7 (2016-12-09) NEW FEATURES o vignette(psi_functions) o adjOutlyingness(..., maxit.mult = max(100, p)) new option, allowing more iterations for finding “good” projection directions. BUG FIXES o summary(nlrob(*, method = "CM")) now works. o lmrob..MM..fit() now works again when x and y are specified, but neither method nor obj is. Changes in version 0.92-6 (2016-05-31) NEW FEATURES o Now provide an "lmrob" method for the standard R generic function hatvalues(), and also export its lower level workhorse .lmrob.hat() (formerly hidden lmrob.leverages()), which now by default has names(.). BUG FIXES o .lmrob.hat() (formerly lmrob.leverages()) has been corrected for the rank-deficient case. o classPC(m) now also works for a 1-column matrix. Changes in version 0.92-5 (2015-07-22) NEW FEATURES o _Hidden_ print() methods print.summary.lmrob() and print.lmrob.S() get a showAlgo = TRUE argument which the user can set to FALSE in order to suppress printing of the “Algorithmic parameters”. o import (remaining parts) from "base" packages. o summary() now also prints a summary on the residuals. BUG FIXES o summary(lmrob(.))'s variance-covariance matrix is now called cov instead of cov.unscaled (because it _is_ scaled). Code which has been using vcov() or $ cov, or even $ cov is not affected. Changes in version 0.92-4 (2015-06-11) NEW FEATURES o Started this NEWS.Rd file, to eventually replace the ChangeLog o plot.lmrob() also identifies largest residuals as plot.lm(). Also gets new argument panel, and add.smooth=TRUE behavior. o adapt to the fact that R 3.3.0 will have its own sigma() S3 generic. o setup for having message translations (volunteers sought!). BUG FIXES o more careful in ../src/mc.c (valgrind, thanks to Brian) o add missing documentation, better examples for predict.lmrob o warn.limit.* checks in lmrob*() Changes in version 0.92-3 (2015-01-14) NEW FEATURES o The ‘Co-Median’ covComed() from Maria Anna, tweaked by Valentin and modified considerably by Martin. o Also document (and export) r6pack() utility. o New smoothWgt() function - “Biweight on a Stick” - to be used as wgtFUN option for covMcd() or covComed(). o New utility colMedians() and rowMedians, as we use columnwise medians in so many places. BUG FIXES o Tweaks to medcouple(), after detecting flaws - which may be inherent and have _not_ been removed. o Improved its documentation and the adjOutlyingness() one, notably its “central” case. Changes in version 0.92-2 (2014-11-22) BUG FIXES o covMcd() with new options (kmini, nmini) now ok (sometimes wrong in 0.92-1). Changes in version 0.92-1 (2014-11-18) NEW FEATURES o The deterministic MCD, via covMcd(..., nsamp="deterministic"). BUG FIXES o adjOutlyingness(): reverse the defaults of clower and cupper and fix an “eternal” erronous +/- swap; see new note in man/adjOutlyingness.Rd. Changes in version 0.92-0 NEW FEATURES o nlrob() now works with indexed vector parameters. o new outlierStats() (Manuel). BUG FIXES o got rid of Fortran compiler warnings about *ancient* style. o nlrob(*, weigths), fixing R-forge bug #5988. o covMcd() fix for “MAD = 0” case (new exactfit code 3). Changes in version 0.91-1 (2014-05-01) BUG FIXES o . Changes in version 0.91-0 (2014-04-24) NEW FEATURES o . BUG FIXES o . Changes in version 0.90-1 (2014-01-30) NEW FEATURES o . BUG FIXES o . Changes in version 0.9-8 (2013-06-15) NEW FEATURES o . BUG FIXES o .