NEWS | R Documentation |
huberM(x, k)
now also works in small sample cases with
+/-Inf
, e.g. for x = c(-Inf, 1)
.
New huberize()
utility, notably by default used in mc()
.
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)
.
New dataset data(x30o50)
as an example of potentially
problematic data, not just for mc()
.
rather "truncating" +/-Inf
to <large>, use
NA.OK = TRUE
in Qn()
and Sn()
's .C()
call.
Our C code no longer uses the DOUBLE_*
constants from S,
but rather standard <float.h>
.
Qn(x)
and Sn(x)
gain an na.rm = FALSE
option and now work when x
has NA
s and contains
+/- Inf
.
No longer include ‘Rdefines.h’ as it is somewhat deprecated.
In ‘src/lmrob.c’ add USE_FC_LEN_T
and use FCONE
rather than the older FCLEN approach.
scaleTau2()
gets new optional iter = 1
and
tol.iter
arguments; mostly experimentally to see if or when
iteration makes sense.
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.
adjOutlyingness()
gets new option IQRtype = 7
.
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).
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’
Use \CRANpkg{.}
in most places, providing web
links to the respective CRAN package page.
adjOutlyingness()
now gains optional parameters to be
passed to mc()
.
update the internal man page, so new checkRdContents()
is happy.
fix several \url{.}'s that now are diagnosed as ‘moved’.
adjOutlyingness()
finally works with p.samp > p
.
scaleTau2()
now works with Inf
and very large
values, and obeys new na.rm = FALSE
argument.
add check.environment=FALSE
to some of the
all.equal()
calls (for 'R-devel', i.e., future R 4.1.x).
wgt.himedian(numeric())
now returns NA
instead of
occasionally seg.faulting or inf.looping. Ditto for a case when
called from Qn()
.
splitFrame()
now treats character
columns also as
categorical (the same as factor
s).
Small updates, also in checks for newer compiler settings,
e.g., FCLEN
macro; also F77_*() etc, in order to fix 'LTO'
issues.
More careful or less calling intpr()
: correct "Rank" of array
(for gfortran/gcc 10, when -fallow-argument-mismatch
is not set).
For tests: try harder in moreSessionInfo()
to detect
openBLAS (should work for KH's debian openBLAS setup).
R_CHECK_LENGTH_1* fix in default value for ask
in
plot methods for mcd
and lts
‘src/rowMedians.c’ gets better PROTECT()ion thanks to Tomas Kalibera's "rchk"s.
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’.
losen the strict tests, notably in
‘tests/nlregrob-tst.R’ to work around nls()
convergence issues on all non-standard BLAS platforms.
Update lmrob(<empty multivariate>)
to the change in R
(incl 3.5.1 patched).
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.
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()
.
Internal lmrob.weights()
: more "resistant" in case
scale=0, using na.rm=TRUE (report only, no reprex).
lmrob(*, trace.lev >= 2)
now shows some information
about the number of find_scale()
iterations used (as these
are now stored C internally).
‘src/robustbase.h’: is_redescender
now
static inline
, needed for some compilers, e.g., on
ubuntu 18.04.
Fixing R-forge bug(s) 6588 (and 6590, 6593),
https://r-forge.r-project.org/tracker/index.php?func=detail&aid=6588&group_id=59&atid=302
The ‘Usage:’s in the data set help pages now say
data(<..>, package="robustbase")
.
The ‘lmrob_simulation’ vignette now should continue to work with upcoming package ggplot2.
Mpsi(x, c, psi="huber", deriv=-1)
now gives rho(x)
instead of mostly Inf
.
.psi.const(*, "lqq")
now also gives a
"constants"
attribute.
more examples and help on Mpsi() etc functions and tuning constants.
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.
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.
(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’.
nlrob()$call$algorithm
now always contains the
algorithm used as a character
string, compatibly
with nls()
.
new data set steamUse
.
Vignette ‘lmrob_simulation.Rnw’: fixed the wrong
“emprical power” plots; with faster ggplot2, remove
all eval=FALSE
for plots and longer store the
‘*.pdf’s.
nlrob()
gets model
option to ask for the
model.frame
to be returned.
lmrob(..., method = "S")
no longer necessarily
produces a warning in .vcov.w()
.
nlrob()
returns a correct dataClasses
component.
For use in non-R-internal BLAS/Lapack libraries, several ‘tests/*.R’ examples have been tweaked.
fullRank()
utility for adjOutlyingness
:
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.
The "lmrob"
method for vcov()
gets optional
argument complete = TRUE
, where only complete =
FALSE is back compatible.
improved (error) messages in singular case in
.vcov.avar1()
.
.psi.const()
is exported as well, and help is
improved about using and setting non-default psi tuning constants.
loosened some regression test tolerances (for alternatives to BLAS) in ‘tests/(mc-strict|poisson-ex)’.
scaleTau2(x, *)
gains an optional sigma0
argument and now returns zero instead of NaN
when
sigma0 == 0
.
vignette(psi_functions)
adjOutlyingness(..., maxit.mult = max(100, p))
new option,
allowing more iterations for finding “good” projection directions.
summary(nlrob(*, method = "CM"))
now works.
lmrob..MM..fit()
now works again when x
and
y
are specified, but neither method
nor obj
is.
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(.)
.
.lmrob.hat()
(formerly lmrob.leverages()
) has
been corrected for the rank-deficient case.
classPC(m)
now also works for a 1-column matrix.
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”.
import (remaining parts) from "base" packages.
summary(<nlrob>)
now also prints a summary on the residuals.
summary(lmrob(.))
's variance-covariance matrix is now
called cov
instead of cov.unscaled
(because it
is scaled). Code which has been using vcov(<lmrob>)
or <lmrob> $ cov
, or even <summary.lmrob> $ cov
is not affected.
Started this ‘NEWS.Rd’ file, to eventually replace the ‘ChangeLog’
plot.lmrob()
also identifies largest residuals as
plot.lm()
. Also gets new argument panel
, and
add.smooth=TRUE
behavior.
adapt to the fact that R 3.3.0 will have its own
sigma()
S3 generic.
setup for having message translations (volunteers sought!).
more careful in ‘../src/mc.c’ (valgrind, thanks to Brian)
add missing documentation, better examples for predict.lmrob
warn.limit.*
checks in lmrob*()
The ‘Co-Median’ covComed()
from Maria Anna,
tweaked by Valentin and modified considerably by Martin.
Also document (and export) r6pack()
utility.
New smoothWgt()
function — “Biweight on a
Stick” — to be used as wgtFUN
option for covMcd()
or covComed()
.
New utility colMedians()
and rowMedians
, as we
use columnwise medians in so many places.
Tweaks to medcouple()
, after detecting flaws – which
may be inherent and have not been removed.
Improved its documentation and the adjOutlyingness()
one, notably its “central” case.
covMcd()
with new options (kmini
,
nmini
) now ok (sometimes wrong in 0.92-1).
The deterministic MCD, via covMcd(..., nsamp="deterministic")
.
adjOutlyingness()
: reverse the defaults of
clower
and cupper
and fix an “eternal”
erronous +/- swap; see new note in ‘man/adjOutlyingness.Rd’.
nlrob()
now works with indexed vector parameters.
new outlierStats()
(Manuel).
got rid of Fortran compiler warnings about ancient style.
nlrob(*, weigths)
, fixing R-forge bug #5988.
covMcd()
fix for “MAD = 0” case (new
exactfit
code 3).
.
.
.
.
.
.
.