[R] making spearman correlation cor() call fail with log(0) as input

Greg Snow Greg.Snow at imail.org
Fri Sep 12 17:11:55 CEST 2008


Just out of curiosity, why do you want the spearman rank correlation to error in this case?

One of the advantages of the spearman correlation is that it is invariant to monotone transformations, so most people that use it see the fact that corr(x,y, method='spearman') gives the same answer as cor(log(x), exp(y), method='spearman') to be the desired result.

--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
(801) 408-8111



> -----Original Message-----
> From: Timur Shtatland [mailto:tshtatland at gmail.com]
> Sent: Thursday, September 11, 2008 6:03 PM
> To: Greg Snow
> Cc: r-help at r-project.org
> Subject: Re: [R] making spearman correlation cor() call fail
> with log(0) as input
>
> You are right, Inf and -Inf are not considered errors in R,
> they are accepted as input to Spearman's cor(), and so I will
> have to check the input myself for such condition.
> Thank you for pointing this out!
>
> Timur
>
> On Wed, Sep 10, 2008 at 8:50 PM, Greg Snow
> <Greg.Snow at imail.org> wrote:
> > Your code shows no errors only correct responses.
> >
> > If you want an error when R is generating correct results,
> you will need to check for the conditions yourself.
> >
> > -----Original Message-----
> > From: "Timur Shtatland" <tshtatland at gmail.com>
> > To: "r-help at r-project.org" <r-help at r-project.org>
> > Sent: 9/10/08 3:51 PM
> > Subject: [R] making spearman correlation cor() call fail
> with log(0)
> > as input
> >
> >
> > Hi,
> >
> > How can I make the cor(x, y, method="spearman") call to produce an
> > error when the input to it (x, y) produces an error? Here
> is a simple
> > example:
> >
> >> a <- c(0, 1, 2)
> >> b <- c(100, 2, 4)
> >
> > ## error:
> >> log(a)
> > [1]      -Inf 0.0000000 0.6931472
> >
> > ## error, as expected:
> >> cor(log(a), log(b), method="pearson")
> > [1] NaN
> >
> > ## not an error any more (not expected):
> >> cor(log(a), log(b), method="spearman")
> > [1] -0.5
> >> cor(log(a), log(b), method="spearman", use="all.obs")
> > [1] -0.5
> >
> >> sessionInfo()
> > R version 2.6.1 (2007-11-26)
> > i686-pc-linux-gnu
> >
> > locale:
> >
> LC_CTYPE=en_US;LC_NUMERIC=C;LC_TIME=en_US;LC_COLLATE=en_US;LC_MONETARY
> >
> =en_US;LC_MESSAGES=en_US;LC_PAPER=en_US;LC_NAME=C;LC_ADDRESS=C;LC_TELE
> > PHONE=C;LC_MEASUREMENT=en_US;LC_IDENTIFICATION=C
> >
> > attached base packages:
> > [1] stats     graphics  grDevices utils     datasets  methods   base
> >>
> >
> > Thank you for your help.
> >
> > Best regards,
> >
> > Timur Shtatland
> >
> > ______________________________________________
> > R-help at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> > http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
> >
>



More information about the R-help mailing list