[RsR] lmrob: lmrob.S()-Warning is not in the result returned

Martin Maechler m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Sat Jun 9 14:32:39 CEST 2007


Thanks a lot Henric,

so I think it's definitely platform dependent.
(you see it on one version of R, not on the other -- i.e. the
 use of a different compiler / library suite will most probably
 be the reason)

In the mean time, I found that I can reproduce the problem on
my notebook using an uptodate version of Ubuntu.
That's good news insofar as I now can test things much more
easily.

Martin


>>>>> "HenricN" == Henric Nilsson (Public) <nilsson.henric using gmail.com>
>>>>>     on Fri, 8 Jun 2007 12:47:27 +0200 (CEST) writes:

    HenricN> Den Fr, 2007-06-08, 11:21 skrev Locher René (lor):
    >> Ciao Martin
    >> 
    >> I had started R freshly to run my example. Here the full
    >> output (without start-up message):
    >> 
    >>> options(STERM='iESS', editor='gnuclient.exe')
    >>> library(robustbase) test <- data.frame(lconc =
    >>> log(c(29.5, 40.1, 21.1, 25.3, 27.3, 25.2,
    >> + 26.9, 19.1, 16.4)), + dist = c(520, 1480, 1780, 740,
    >> 540, 1050, 1100, + 1640, 1860))
    >>> 
    >>> res <- lmrob(lconc~dist, dat=test)
    >> Warning messages: 1: rwls(): not converged in 1000 lambda
    >> iterations 2: rwls(): not converged in 1000 lambda
    >> iterations 3: rwls(): not converged in 1000 lambda
    >> iterations 4: rwls(): not converged in 1000 lambda
    >> iterations
    >>> 

I can confirm this as well using

    >> sessionInfo()
    HenricN> R version 2.5.0 Patched (2007-05-24 r41696)
    HenricN> i386-pc-mingw32

    HenricN> locale: LC_COLLATE=English_United
    HenricN> States.1252;LC_CTYPE=English_United
    HenricN> States.1252;LC_MONETARY=English_United
    HenricN> States.1252;LC_NUMERIC=C;LC_TIME=English_United
    HenricN> States.1252

    HenricN> attached base packages: [1] "stats" "graphics"
    HenricN> "grDevices" "utils" "datasets" "methods" [7] "base"

    HenricN> other attached packages: robustbase "0.2-7"


    HenricN> However, I don't see the problem under


    >> sessionInfo()
    HenricN> R version 2.4.1 Patched (2007-03-15 r40854)
    HenricN> i386-pc-mingw32

    HenricN> locale: LC_COLLATE=English_United
    HenricN> States.1252;LC_CTYPE=English_United
    HenricN> States.1252;LC_MONETARY=English_United
    HenricN> States.1252;LC_NUMERIC=C;LC_TIME=English_United
    HenricN> States.1252

    HenricN> attached base packages: [1] "stats" "graphics"
    HenricN> "grDevices" "utils" "datasets" "methods" "base"

    HenricN> other attached packages: robustbase "0.2-7"


    HenricN> And when comparing e.g. `res$fitted.values' between
    HenricN> these two R versions, they seem identical.


    >> 
    >> 
    >> And her my sessionInfo right afterwards:
    >>> sessionInfo()
    >> R version 2.5.0 (2007-04-23) i386-pc-mingw32
    >> 
    >> locale:
    >> LC_COLLATE=German_Switzerland.1252;LC_CTYPE=German_Switzerland.1252;LC_MONETARY=German_Switzerland.1252;LC_NUMERIC=C;LC_TIME=German_Switzerland.1252
    >> 
    >> attached base packages: [1] "stats" "graphics"
    >> "grDevices" "utils" "datasets" "methods" [7] "base"
    >> 
    >> other attached packages: robustbase "0.2-7"
    >> 
    >> And here is the output in debugging mode. I hope this
    >> helps.
    >> 
    >> debug(lmrob) debug(lmrob.fit.MM) debug(lmrob.MM)
    >> 
    >> ## first level lmrob(lconc~dist, dat=test) Browse[1]>c
    >> 
    >> ## second level z <- lmrob.fit.MM(x, y, control =
    >> control) Browse[1]>c
    >> 
    >> ## third level final.MM <- lmrob.MM(x = x, y = y,
    >> beta.initial = iCoef, scale = init.S$scale, control =
    >> control)
    >> 
    >> Browse[1]>n ## repeated until call to .C()
    >> 
    >> ## arguments just before the call to fourth level
    >> Browse[1]> x (Intercept) dist 1 1 520 2 1 1480 3 1 1780 4
    >> 1 740 5 1 540 6 1 1050 7 1 1100 8 1 1640 9 1 1860
    >> attr(,"assign") [1] 0 1 Browse[1]> y 1 2 3 4 5 6 7 8
    >> 3.384390 3.691376 3.049273 3.230804 3.306887 3.226844
    >> 3.292126 2.949688 9 2.797281 Browse[1]> print(n) [1] 9
    >> Browse[1]> p [1] 2 Browse[1]> control$max.it [1] 50
    >> Browse[1]> c.psi [1] 4.685061 Browse[1]> c
    >> 
    >> ## fourth level b <- .C("R_lmrob_MM", x = as.double(x), y
    >> = as.double(y), n = as.integer(n), p = as.integer(p),
    >> beta.initial = as.double(beta.initial), scale =
    >> as.double(scale), coef = double(p), iter =
    >> as.integer(control$max.it), c.psi = c.psi, converged =
    >> logical(1), PACKAGE = "robustbase")[c("coef", "scale",
    >> "converged", "iter")] Warning messages: 1: rwls(): not
    >> converged in 1000 lambda iterations 2: rwls(): not
    >> converged in 1000 lambda iterations 3: rwls(): not
    >> converged in 1000 lambda iterations 4: rwls(): not
    >> converged in 1000 lambda iterations
    >> 
    >> Everything works fine with my R, except that I cannot use
    >> successfully the package debug since I have updated R to
    >> version 2.5.0. Since then,

    HenricN> Yes, IIRC this was due to a bug in 2.5.0. Install a
    HenricN> patched version and everything should be fine.

    >> mtrace(fun) exits with the error message "Error in
    >> all.levs[[j]] : subscript out of bounds" with functions I
    >> have tested in former versions of R without any problems!
    >> But that's another story. By the way: Before I update R,
    >> I remove all the packages installed and install the
    >> latest versions after updating R

    HenricN> If you have your packages in the exact same
    HenricN> location as before, `update.packages(checkBuilt =
    HenricN> TRUE)' will make sure that you get packages
    HenricN> compiled for the updated R (given that these still
    HenricN> builds under the newer R version).


    HenricN> HTH, Henric



    >> 
    >> I hope this helps. I am afraid that my problem is
    >> platform dependent.
    >> 
    >> Kind regards
    >> 
    >> René
    >> 
    >> René Locher E-Mail: rene.locher using zhwin.ch Institut für
    >> Datenanalyse und Prozessdesign Tel: 052/ 267 7810 Zürcher
    >> Hochschule Winterthur Fax: 052/ 268 7810 Technopark /
    >> Jägerstrasse 2 Postfach CH-8400 Winterthur
    >> http://www.idp.zhwin.ch
    >> 
    >> 
    >> 
    >> 
    >> |-----Original Message----- |From: Martin Maechler
    >> [mailto:maechler using stat.math.ethz.ch] |Sent: Friday, June
    >> 08, 2007 9:01 AM |To: Matias Salibian-Barrera |Cc:
    >> r-sig-robust using r-project.org; Locher René (lor); Martin
    >> Maechler |Subject: Re: [RsR] lmrob: lmrob.S()-Warning is
    >> not in the |result returned
    >> |
    >> |
    >> | MS> However, *I can't* reproduce Rene's second warning:
    >> "rwls(): not | MS> converged in 1000 lambda iterations"
    >> warning. I will |look into it a bit | MS> further.
    >> |
    >> |indeed, and I can't either - carefully checking a 2nd
    >> time.
    >> |
    >> |Rene, maybe you can try to use debug(.) and |see the
    >> exact lmrob.S(.) call which leads to the lambda
    >> |iteration warnings.
    >> |
    >> | MS> Matias | MS> | MS> > version | MS> _ | MS> platform
    >> i686-pc-linux-gnu | MS> arch i686 | MS> os linux-gnu |
    >> MS> system i686, linux-gnu | MS> status | MS> major 2 |
    >> MS> minor 3.1 | MS> year 2006 | MS> month 06 | MS> day 01
    >> | MS> svn rev 38247 | MS> language R | MS> version.string
    >> Version 2.3.1 (2006-06-01) | MS> > library(robustbase) |
    >> MS> > test <-
    >> data.frame(lconc=c(3.081910,3.165475,2.501436,3.650658, |
    >> MS> + 3.044522,3.660994), | MS> +
    >> dist=c(100,180,280,30,220,6)) | MS> > res <-
    >> lmrob(lconc~dist, dat=test) | MS> Warning messages: | MS>
    >> 1: lmrob.S(): refinements did not converge (to
    >> |tol=1e-07) in 200 iterations | MS> 2: lmrob.S():
    >> refinements did not converge (to |tol=1e-07) in 200
    >> iterations | MS> > my.ctrl <-
    >> lmrob.control(refine.tol=1e-5) | MS> > res2 <-
    >> lmrob(lconc~dist, dat=test, control=my.ctrl) | MS> > res
    >> | MS> | MS> Call: | MS> lmrob(formula = lconc ~ dist,
    >> data = test) | MS> | MS> Coefficients: | MS> (Intercept)
    >> dist | MS> 3.690387 -0.003707 | MS> | MS> > res2 | MS> |
    >> MS> Call: | MS> lmrob(formula = lconc ~ dist, data =
    >> test, control = my.ctrl) | MS> | MS> Coefficients: | MS>
    >> (Intercept) dist | MS> 3.690387 -0.003707 | MS> | MS> >
    >> res$scale | MS> [1] 0.2506454 | MS> > res2$scale | MS>
    >> [1] 0.2506544
    >> |
    >> | Martin Maechler wrote: | >>>>>> "ReneL" == Locher René
    >> (lor) <lor using zhwin.ch> | >>>>>> on Tue, 5 Jun 2007 18:24:47
    >> +0200 writes:
    >> | >
    >> | > ReneL> Dear Matias When I run the following code I
    >> get 2 | > ReneL> warnings:
    >> | >
    >> | > ReneL> lmrob.S(): refinements did not converge
    >> |(tol=1e-07) in 200 iterations
    >> | >
    >> | > library(robustbase) | > test <-
    >> data.frame(lconc=c(3.081910,3.165475,2.501436,3.650658, |
    >> > 3.044522,3.660994), | > dist=c(100,180,280,30,220,6)) |
    >> > res <- lmrob(lconc~dist, dat=test)
    >> | >
    >> | > ReneL> res$converged gives TRUE as the IRWLS
    >> iterations |after the lmrob.S() have converged.
    >> | >
    >> | > ReneL> It would be nice to have also the convergence
    >> |status of lmrob.S() in the result object of lmrob().
    >> | >
    >> | > I agree.
    >> | >
    >> | > HOWEVER, I cannot see / reproduce the convergence
    >> warnings | > problems you mention, neither the above, nor
    >> the one you sent | > yesterday.
    >> | >
    >> | > Are you *REALLY* sure, you are not using an older
    >> version of | > "robustbase" or mixing versions of
    >> robustbase, | > or are using 'lmrob' (there was a package
    >> of that name) and | > 'robustbase' simultaneously?
    >> | >
    >> | > Note: For such reports, do use sessionInfo().
    >> | >
    >> | > Regards, | > Martin
    >> | >
    >> | > ReneL> Kind regards
    >> | >
    >> | > ReneL> René
    >> | >
    >> | >
    >> | > ReneL> René Locher |E-Mail: rene.locher using zhwin.ch | >
    >> ReneL> Institut für Datenanalyse und Prozessdesign |Tel:
    >> 052/ 267 7810 | > ReneL> Zürcher Hochschule Winterthur
    >> |Fax: 052/ 268 7810 | > ReneL> Technopark / Jägerstrasse
    >> 2 | > ReneL> Postfach | > ReneL> CH-8400 Winterthur
    >> |http://www.idp.zhwin.ch
    >> | >
    >> | > ReneL> P.S.
    >> | >
    >> | > ReneL> Here is the version of my system on which I
    >> have |tested the example:
    >> | >
    >> | > ReneL> version _ | > ReneL> ## platform
    >> i386-pc-mingw32 | > ReneL> ## arch i386 | > ReneL> ## os
    >> mingw32 | > ReneL> ## system i386, mingw32 | > ReneL> ##
    >> status | > ReneL> ## major 2 | > ReneL> ## minor 5.0 | >
    >> ReneL> ## year 2007 | > ReneL> ## month 04 | > ReneL> ##
    >> day 23 | > ReneL> ## svn rev 41293 | > ReneL> ## language
    >> R | > ReneL> ## version.string R version 2.5.0
    >> (2007-04-23)
    >> | >
    >> | > ReneL> library(help=robustbase) | > ReneL> ##
    >> Version: 0.2-7
    >> |
    >> |
    >> |
    >> | --
    >> | _____________________________________________________ |
    >> Matias Salibian-Barrera - Department of Statistics | The
    >> University of British Columbia | Phone: (604) 822-3410 -
    >> Fax: (604) 822-6960 | "The plural of anecdote is not
    >> data" (George Stigler?)
    >> |
    >> |
    >> |
    >> | >>>>> ">>" == Matias Salibian-Barrera
    >> <matias using stat.ubc.ca> | >>>>> on Thu, 07 Jun 2007 09:35:46
    >> -0700 writes:
    >> |
    >> | >>> Thanks Rene for pointing these problems out.
    >> |
    >> | >>> I can reproduce the first warning (produced by |
    >> >>> lmrob.S()) -- I'm copying my output below. Of course,
    >> | >>> the warning disappears if you weaken the
    >> convergence | >>> criteria a little:
    >> |
    >> | >>> my.ctrl <- lmrob.control(refine.tol=1e-5) res2 <- |
    >> >>> lmrob(lconc~dist, dat=test, control=my.ctrl)
    >> |
    >> | >>> However, *I can't* reproduce Rene's second warning:
    >> | >>> "rwls(): not converged in 1000 lambda iterations" |
    >> >>> warning. I will look into it a bit further.
    >> |
    >> | >>> Matias
    >> |
    >> |
    >> |
    >> | >> version | >>> _ platform i686-pc-linux-gnu arch i686
    >> os | >>> linux-gnu system i686, linux-gnu status major 2
    >> minor | >>> 3.1 year 2006 month 06 day 01 svn rev 38247
    >> language R | >>> version.string Version 2.3.1
    >> (2006-06-01) | >> library(robustbase) test <- | >>
    >> data.frame(lconc=c(3.081910,3.165475,2.501436,3.650658, |
    >> >>> + 3.044522,3.660994), + dist=c(100,180,280,30,220,6))
    >> | >> res <- lmrob(lconc~dist, dat=test) | >>> Warning
    >> messages: 1: lmrob.S(): refinements did not | >>>
    >> converge (to tol=1e-07) in 200 iterations 2: lmrob.S(): |
    >> >>> refinements did not converge (to tol=1e-07) in 200 |
    >> >>> iterations | >> my.ctrl <-
    >> lmrob.control(refine.tol=1e-5) res2 <- | >>
    >> lmrob(lconc~dist, dat=test, control=my.ctrl) res
    >> |
    >> | >>> Call: lmrob(formula = lconc ~ dist, data = test)
    >> |
    >> | >>> Coefficients: (Intercept) dist 3.690387 -0.003707
    >> |
    >> | >> res2
    >> |
    >> | >>> Call: lmrob(formula = lconc ~ dist, data = test,
    >> control | >>> = my.ctrl)
    >> |
    >> | >>> Coefficients: (Intercept) dist 3.690387 -0.003707
    >> |
    >> | >> res$scale | >>> [1] 0.2506454 | >> res2$scale | >>>
    >> [1] 0.2506544
    >> |
    >> |
    >> |
    >> | >>> Martin Maechler wrote: | >>>>>>> "ReneL" == Locher
    >> René (lor) <lor using zhwin.ch> on Tue, | >>>>>>> 5 Jun 2007
    >> 18:24:47 +0200 writes:
    >> |     >>
    >> | ReneL> Dear Matias When I run the following code I get
    >> 2 | ReneL> warnings:
    >> |     >>
    >> | ReneL> lmrob.S(): refinements did not converge
    >> (tol=1e-07) | ReneL> in 200 iterations
    >> |     >>
    >> | >> library(robustbase) test <- | >>
    >> data.frame(lconc=c(3.081910,3.165475,2.501436,3.650658, |
    >> >> 3.044522,3.660994), dist=c(100,180,280,30,220,6)) res
    >> <- | >> lmrob(lconc~dist, dat=test)
    >> |     >>
    >> | ReneL> res$converged gives TRUE as the IRWLS iterations
    >> | ReneL> after the lmrob.S() have converged.
    >> |     >>
    >> | ReneL> It would be nice to have also the convergence
    >> status | ReneL> of lmrob.S() in the result object of
    >> lmrob().
    >> |     >>
    >> | >> I agree.
    >> |     >>
    >> | >> HOWEVER, I cannot see / reproduce the convergence |
    >> >> warnings problems you mention, neither the above, nor
    >> the | >> one you sent yesterday.
    >> |     >>
    >> | >> Are you *REALLY* sure, you are not using an older
    >> version | >> of "robustbase" or mixing versions of
    >> robustbase, or are | >> using 'lmrob' (there was a
    >> package of that name) and | >> 'robustbase'
    >> simultaneously?
    >> |     >>
    >> | >> Note: For such reports, do use sessionInfo().
    >> |
    >> |
    >> 
    >> _______________________________________________
    >> R-SIG-Robust using r-project.org mailing list
    >> https://stat.ethz.ch/mailman/listinfo/r-sig-robust
    >> 
    >> 

_______________________________________________
    HenricN> R-SIG-Robust using r-project.org mailing list
    HenricN> https://stat.ethz.ch/mailman/listinfo/r-sig-robust




More information about the R-SIG-Robust mailing list