[.................] MM> Yes; the reason for robustbase::lmrob's failure is basically the MM> same as for MASS::rlm(., method="MM")'s one:
MM> The MM-method of both require a high-breakdown initial estimate, MM> *and* the high-breakdown initial estimates are based algorithms MM> that use resampling methods which are not at all adapted to this MM> (and based on a theory of affine-invariance which does *not* MM> apply in the case of factor-predictors...) MM> Within the small community of experts this is well-known. MM> For this reason, Maronna & Yohai (1999) proposed the so-called MM> "S/M - estimate" which is supposedly implemented in Insightful's MM> "Robust library" and consequently in the 'robust' R package. MM> The 'robust.pdf' manual (of Insightful's original) says this on MM> page 35: > The Robust Library deals with this problem by using a new > alternate S/M-estimate computing algorithm due to Maronna and > Yohai (1999) for robustly fitting linear models which contain factor > variables with possibly many levels. S-PLUS automatically uses the > new S/M-estimate algorithm whenever your linear model data > contains at least one factor variable. For further information see the > Theoretical Details section Alternating S and M Initial Estimate. MM> *AND* in last year's "robust stats in R" meeting in Banff, MM> we had decided that this algorithm should really become an MM> option in 'robustbase' ((but it seems we hadn't made good MM> enough work assignments there ... ;-)) MM> Anyway, I've tried MM> library(robust) MM> mLMR. <- lmRob(fo, data = long) MM> and unfortunately, that failed too, even though I'd have MM> expected it would work thanks to using the S/M algorithm MM> but *ALAS* it gets into problems as well.. Ok, I've debugged that. It's from a somewhat embarrassing bug in package 'robust': the internally used function splus.assign() has a bug which only triggers when there is no intercept --- as in your case. ---> Ajay, you *can* fit by putting an intercept, using the 'robust' package and lmRob() or by patching the bug and re-installing 'robust' : In function splus.assign, instead of the wrong if(min(asgn) == 0) term.labels <- c("(Intercept)", term.labels) asgn <- asgn + 1 you must use if(min(asgn) == 0) { term.labels <- c("(Intercept)", term.labels) asgn <- asgn + 1 } --- Martin Maechler, ETH Zurich MM> I'm interested in more feedback, particularly from other experts MM> about S/M and/or its implementation in 'robust'. MM> If you could guide me on what I'm doing wrong, that'll be great. How MM> would I do the above specification as a robust regression? I googled MM> around and I found a few others asking these same questions in the MM> past, but it didn't look like there was a clear answer. MM> In short: The "MM" method hasn't been well implemented for MM> this situation, MM> and you need to stick with the default MM> rlm( ) for now. MM> Martin Maechler, ETH Zurich MM> MM> -- MM> Ajay Shah http://www.mayin.org/ajayshah MM> [EMAIL PROTECTED] http://ajayshahblog.blogspot.com MM> _______________________________________________ MM> R-SIG-Robust@r-project.org mailing list MM> https://stat.ethz.ch/mailman/listinfo/r-sig-robust _______________________________________________ R-SIG-Robust@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-robust