[RsR] covRob with M-estimates in S-Plus

Valentin Todorov v@|ent|n@todorov @end|ng |rom che||o@@t
Mon Jun 12 00:18:09 CEST 2006


In their talk at ICORS'2005 in Finland, "Choosing a Multivariate Estimate for High Dimensional Data", Maronna, Yohai and Villar say (about the problem of the S estimates with high dimensional data):
"Rocke (1996) realized this fact and proposed that rho depend on p: He defined a "translated
bisquare" family of functions. It seems that his proposal had only limited diffusion, although it has
been implemented in S-Plus."

Recently, I was surprised to find out that unfortunately, although implemented in S-Plus, no body could use the translated biweight functions, proposed by Rocke, because of a simple error in the code.

The function Rho.param() which computes the parameters for the constrained M-estimator tries to choose between biweight, translated biweight and LWS:

         # alpha <= alf.b
         c1 <- uniroot(eq.rho.b, lower = 1, upper = 20, p = p, r = r)$root
=>     alf.b <- 1 - pchisq(c1, p)
         if(alpha <= alf.b)
             return(list(rho = "b", r = r, alf.b = alf.b, alf.LWS = NA, c = c1,
                 b0 = (r * c1 * c1)/6, M = 0))
    ...

The line 

    >>> alf.b <- 1 - pchisq(c1, p) <<< 

always chooses the biweight, although this should be the case only for p <= 3 (see Rocke 1996). 

The proper condition should be 

    >>> alf.b <- 1 - pchisq(c1*c1, p) <<< 

[same in Kiel's robust package]

Best regards,

Valentin






	[[alternative HTML version deleted]]




More information about the R-SIG-Robust mailing list