[RsR] How does "rlm" in R decide its "w" weights for each IRLSiteration?
Maheswaran Rohan
mroh@n @end|ng |rom doc@govt@nz
Mon Jul 23 22:51:53 CEST 2012
Your code is running for M-estimator, but not for MM (I don't know the
reason).
See the results here.
> set.seed(123)
> xr=rpois(100,lambda=3)
> xn=rnorm(100)
> xf =as.factor(xr)
> yn=rnorm(100)+xn+xr
> form=yn~xn+xf
> library(MASS)
> rlm(form,method="MM")
Error: lqs failed: all the samples were singular
> rlm(form,method="M")
Call:
rlm(formula = form, method = "M")
Converged in 7 iterations
Coefficients:
(Intercept) xn xf1 xf2 xf3 xf4
0.2017169 0.8708498 0.4001550 2.0120847 2.7285940 3.2854743
xf5 xf6 xf7 xf8
4.9677143 6.0077015 6.4267159 9.8351416
Degrees of freedom: 100 total; 90 residual
Scale estimate: 0.713
Regards
Rohan
-----Original Message-----
From: Dr. Peter Ruckdeschel
[mailto:peter.ruckdeschel using itwm.fraunhofer.de]
Sent: Tuesday, 24 July 2012 2:07 a.m.
To: r-sig-robust using r-project.org
Cc: Valentin Todorov; Maheswaran Rohan; S.Ellison using lgcgroup.com
Subject: Re: [RsR] How does "rlm" in R decide its "w" weights for each
IRLSiteration?
To what it's worth:
Valentin very well knows about the MM implementation of rlm;
it is simply that lmrob is a more recent implementation which has
taken up _very_ recent current research results on this field and
also includes the combined case (i.e. factors and numerics as
regressors) (see ?lmrob) or try
set.seed(123)
xr=rpois(100,lambda=3)
xn=rnorm(100)
xf =as.factor(xr)
yn=rnorm(100)+xn+xr
form=yn~xn+xf
rlm(form,method="MM")
Error: lqs failed: all the samples were singular
> lmrob(form,method="MM")
Call:
lmrob(formula = form, method = "MM")
Coefficients:
(Intercept) xn xf1 xf2 xf3
xf4
0.2260 0.8957 0.3633 1.9949 2.6660
3.2966
xf5 xf6 xf7 xf8
4.9415 5.9208 6.4388 9.8285
Hth, best, Peter
Am 23.07.2012 15:19, schrieb S Ellison:
> rlm includes an MM estimator.
>
> S Ellison
>
>> -----Original Message-----
>> From: Maheswaran Rohan [mailto:mrohan using doc.govt.nz]
>> Sent: 22 July 2012 23:08
>> To: Valentin Todorov; S Ellison
>> Cc: r-sig-robust using r-project.org; r-help
>> Subject: RE: [RsR] How does "rlm" in R decide its "w" weights
>> for each IRLSiteration?
>>
>> Hi Valentin,
>>
>> If the contamination is mainly in the response direction,
>> M-estimator provides good estimates for parameters and rlm
>> can be used.
>>
>> Rohan
>>
>> -----Original Message-----
>> From: r-sig-robust-bounces using r-project.org
>> [mailto:r-sig-robust-bounces using r-project.org] On Behalf Of
>> Valentin Todorov
>> Sent: Saturday, 21 July 2012 6:57 a.m.
>> To: S Ellison
>> Cc: r-sig-robust using r-project.org; r-help
>> Subject: Re: [RsR] How does "rlm" in R decide its "w" weights
>> for each IRLSiteration?
>>
>> Hi Michael, S Ellison,
>>
>> I do not actually understand what you want to achieve with
>> the M estimates of rlm in MASS, but why you do not give a try
>> of lmrob in 'robustbase'. Please have a llok in the
>> references (?lmrob) about the advantages of MM estimators
>> over the M estimators.
>>
>> Best regards,
>> Valentin
>>
>>
>>
>>
>> On Fri, Jul 20, 2012 at 5:11 PM, S Ellison <S.Ellison using lgcgroup.com>
>> wrote:
>>>
>>>> -----Original Message-----
>>>> Subject: [RsR] How does "rlm" in R decide its "w" weights for each
>>>> IRLS iteration?
>>>> I am also confused about the manual:
>>>>
>>>> a. The input arguments:
>>>>
>>>> wt.method are the weights case weights (giving the relative
>>>> importance of case, so a weight of 2 means there are two of
>>>> these) or the inverse of the variances, so a weight of two
>> means this
>>>> error is half as variable?
>>> When you give rlm weights (called 'weights', not 'w' on
>> input, though
>> you can abbreviate to 'w'), you need to tell it which of
>> these two possibilities you used.
>>> If you gave it case numbers, say wt.method="case"; if you gave it
>> inverse variance weights, say wt.method="inv.var".
>>> The default is "inv.var".
>>>
>>>
>>>> The input argument "w" is used for the initial values of
>> the rlm IRLS
>>>> weighting and the output value "w" is the converged "w".
>>> There is no input argument 'w' for rlm (see above).
>>> The output w are a calculated using the psi function, so between 0
>> and 1.
>>> The effective weights for the final estimate would then be something
>> like w*weights, using the full name of the input argument
>> (and if I haven't forgotten a square root somewhere). At
>> least, that would work for a simple location estimate (eg rlm(x~1)).
>>>> If my understanding above is correct, how does "rlm"
>> decide its "w"
>>>> for each IRLS iteration then?
>>> It uses the given psi functions to calculate the iterative weights
>> based on the scaled residuals.
>>>> Any pointers/tutorials/notes to the calculation of these "w"'s in
>>>> each IRLS iteration?
>>> Read the cited references for a detailed guide. Or, of
>> course, MASS -
>> the package is, after all, intended to support the book, not
>> replace it.
>>>
>>>
>>> S Ellison
>>>
>>> *******************************************************************
>>> This email and any attachments are confidential. Any
>> u...{{dropped:6}}
>>
>> _______________________________________________
>> R-SIG-Robust using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-sig-robust
>> ##############################################
>> This e-mail (and attachments) is confidential and may be
>> legally privileged.
>> ##############################################
>>
> *******************************************************************
> This email and any attachments are confidential. Any\ ...{{dropped:22}}
More information about the R-SIG-Robust
mailing list