Re: [R] a problem 'cor' function

From: Peter Ehlers <ehlers_at_math.ucalgary.ca>
Date: Thu 01 Jun 2006 - 08:49:18 EST

Looks like another case of the most F of all FAQs: FAQ 7.31.

See if the following makes sense to you:

  pl <- iris[101:150, 3]
  all.equal(cor(pl,pl), 1)
  [1] TRUE
  cor(pl,pl) == 1
  [1] FALSE
  sprintf("%1.22g", cor(pl, pl))
  [1] "0.99999999999999989"
  sprintf("%1.22g", pl)

  [1] "6"                  "5.0999999999999996" "5.9000000000000004"
etc

Peter Ehlers

Tao Shi wrote:

> Hi list,
>
> One of my co-workers found this problem with 'cor' in his code and I confirm it too (see below). He's using R 2.2.1 under Win 2K and I'm using R 2.3.0 under Win XP.
>
> ===========================================
>

>>R.Version()

>
> $platform
> [1] "i386-pc-mingw32"
>
> $arch
> [1] "i386"
>
> $os
> [1] "mingw32"
>
> $system
> [1] "i386, mingw32"
>
> $status
> [1] ""
>
> $major
> [1] "2"
>
> $minor
> [1] "3.0"
>
> $year
> [1] "2006"
>
> $month
> [1] "04"
>
> $day
> [1] "24"
>
> $`svn rev`
> [1] "37909"
>
> $language
> [1] "R"
>
> $version.string
> [1] "Version 2.3.0 (2006-04-24)"
>
>>data(iris)
>>cor(iris[1:4])

>
> Sepal.Length Sepal.Width Petal.Length Petal.Width
> Sepal.Length 1.0000 -0.1176 0.8718 0.8179
> Sepal.Width -0.1176 1.0000 -0.4284 -0.3661
> Petal.Length 0.8718 -0.4284 1.0000 0.9629
> Petal.Width 0.8179 -0.3661 0.9629 1.0000
>
>>cor(iris[1:4])==1

>
> Sepal.Length Sepal.Width Petal.Length Petal.Width
> Sepal.Length TRUE FALSE FALSE FALSE
> Sepal.Width FALSE TRUE FALSE FALSE
> Petal.Length FALSE FALSE TRUE FALSE
> Petal.Width FALSE FALSE FALSE TRUE
>
>>cor(iris[1:4], iris[1:4])

>
> Sepal.Length Sepal.Width Petal.Length Petal.Width
> Sepal.Length 1.0000 -0.1176 0.8718 0.8179
> Sepal.Width -0.1176 1.0000 -0.4284 -0.3661
> Petal.Length 0.8718 -0.4284 1.0000 0.9629
> Petal.Width 0.8179 -0.3661 0.9629 1.0000
>
>>cor(iris[1:4], iris[1:4])==1

>
> Sepal.Length Sepal.Width Petal.Length Petal.Width
> Sepal.Length TRUE FALSE FALSE FALSE
> Sepal.Width FALSE TRUE FALSE FALSE
> Petal.Length FALSE FALSE FALSE FALSE
> Petal.Width FALSE FALSE FALSE TRUE
> ===========================================
>
> The two ways of calculating correlation seem to generate the 'same' results, but the second one doesn't appear to be numerically stable (see the 3rd diagonal element of the last matrix).
>
> thanks,
>
> ...Tao
>
> _________________________________________________________________
> Join the next generation of Hotmail and you could win the adventure of a lifetime
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
-- 
Peter Ehlers
Chair, Division of Statistics and Actuarial Science
Department of Mathematics and Statistics
University of Calgary, 2500 University Dr. NW       ph: 403-220-3936
Calgary, Alberta  T2N 1N4, CANADA                  fax: 403-282-5150
email: ehlers@math.ucalgary.ca

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Received on Thu Jun 01 08:54:06 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Thu 01 Jun 2006 - 10:10:27 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.