[R] Uncorrelated random vectors

(Ted Harding) Ted.Harding at manchester.ac.uk
Tue Jul 7 17:48:09 CEST 2009


Be careful to be clear what you are referring to when you say
"correlation is zero".

The commands
  x <- rnorm(100)
  y <- rnorm(100)
will produce two vectors of given length (100) which (to within the
effectively ignorable limitations of the ransom number generator)
will have been produced independently. Hence the *theoretical*
correlation is zero. If that is what you meant, then it is already
answered. When you compute cor(x,y), however, the answer will in
general be non-zero (though only rarely significantly so). This is
because the numbers produced by the second independent run of rnrom()
have an almost zero probability of producing two vectors for which
the value of cor(x,y) = 0.

However, possibly you mean that you want two vectors for which the
result of cor(x,y) = 0. One way to achieve this is along the following
lines:

  set.seed(54321)
  x  <- rnorm(100)
  y0 <- rnorm(100)
  My <- mean(y0)
  Sy <- sd(y0)
  y1 <- lm(y0 ~ x)$res ; y1 <- y1/sd(y1)
  y  <- My + y1*Sy

  mean(y0)
  # [1] 0.04497584
  mean(y)
  # [1] 0.04497584
  sd(y0)
  # [1] 0.848231
  sd(y)
  # [1] 0.848231

  cor(x,y0)
  # [1] 0.05556468
  cor(x,y)
  # [1] 6.451072e-18 [effectively 0, to within rounding error]

In this case, however, note that
[A]: The 100 elements of y, given the values of x, are NOT independent
of each other, since they satisfy the linear constraint

  x[1]*y[1] + x[2]*y[2] + ... + x[100]*y[100]
      - (sum(x))*[y[1] + y[2] + ... + y[100])/100 = 0

and therefore can vary only in 99 dimensions, not 100. Nor are they
independent of the values of x (even though the numerical correlation
is 0).
On the other hand, the values of y0 are independent of the values
of x, and of each other.

You need to be very clear why you want to have two vectors x,y
such that cor(x,y) = 0, since otherwise you are at risk of carrying
out an invalid analysis.

Hoping this helps,
Ted.



On 07-Jul-09 14:26:02, Stein, Luba (AIM SE) wrote:
> Thank you for your help!
> But is it possible to produe two vectors x and y with a given length
> such that there correlation is zero.
> 
> For me ist not enough just to simulate two vectors with there
> correlation.
> 
> Thank you,
> Luba 
> 
> 
> 
> 
> -----Urspr?ngliche Nachricht-----
> Von: ONKELINX, Thierry [mailto:Thierry.ONKELINX at inbo.be] 
> Gesendet: Dienstag, 7. Juli 2009 15:51
> An: Stein, Luba (AIM SE); r-help at r-project.org
> Betreff: RE: [R] Uncorrelated random vectors
> 
> cor.test(rnorm(10000), rnorm(10000)) 
> 
> 
> ------------------------------------------------------------------------
> ----
> ir. Thierry Onkelinx
> ~ Roger Brinner
> 
> The combination of some data and an aching desire for an answer does
> not
> ensure that a reasonable answer can be extracted from a given body of
> data.
> ~ John Tukey
> 
> -----Oorspronkelijk bericht-----
> Van: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
> Namens Stein, Luba (AIM SE)
> Verzonden: dinsdag 7 juli 2009 15:46
> Aan: r-help at r-project.org
> Onderwerp: [R] Uncorrelated random vectors
> 
> Hello,
> 
> is it possible to create two uncorrelated random vectors for a given
> distribution.
> 
> In fact, I would like to have something like the function "rnorm" or
> "rlogis" with the extra property that they are uncorrelated.
> 
> Thanks for your help,
> Luba

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 07-Jul-09                                       Time: 16:48:06
------------------------------ XFMail ------------------------------




More information about the R-help mailing list