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 [[alternative HTML version deleted]]
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 Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest Cel biometrie, methodologie en kwaliteitszorg / Section biometrics, methodology and quality assurance Gaverstraat 4 9500 Geraardsbergen Belgium tel. + 32 54/436 185 Thierry.Onkelinx at inbo.be www.inbo.be To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of. ~ Sir Ronald Aylmer Fisher The plural of anecdote is not data. ~ 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 [[alternative HTML version deleted]] ______________________________________________ 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. Dit bericht en eventuele bijlagen geven enkel de visie van de schrijver weer en binden het INBO onder geen enkel beding, zolang dit bericht niet bevestigd is door een geldig ondertekend document. The views expressed in this message and any annex are purely those of the writer and may not be regarded as stating an official position of INBO, as long as the message is not confirmed by a duly signed document.
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 ------------------------------
Here are some examples that may get you started (note that there is no guarantee that a variable follows a given distribution after it has been adjusted to have 0 correlation with another variable): library(MASS) tmp <- mvrnorm(25, c(0,0), diag(2), empirical=TRUE) zapsmall(cor(tmp)) tmp2 <- exp(tmp) zapsmall(cor(tmp2)) x <- rexp(100, 3) y <- rexp(100, 2) par(mfrow=c(2,1)) plot(x,y) tmp3 <- cbind(x,y) zapsmall(cor(tmp3)) tmp4 <- tmp3 %*% solve(chol(var(tmp3))) zapsmall(cor(tmp4)) plot(tmp4) hist(tmp4[,1]) hist(tmp4[,2]) plot(tmp4[,1], x) plot(tmp4[,2], y) Hope this helps, -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare greg.snow at imail.org 801.408.8111> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- > project.org] On Behalf Of Stein, Luba (AIM SE) > Sent: Tuesday, July 07, 2009 8:26 AM > To: ONKELINX, Thierry; r-help at r-project.org > Subject: Re: [R] Uncorrelated random vectors > > 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 > Instituut voor natuur- en bosonderzoek / Research Institute for Nature > and Forest > Cel biometrie, methodologie en kwaliteitszorg / Section biometrics, > methodology and quality assurance > Gaverstraat 4 > 9500 Geraardsbergen > Belgium > tel. + 32 54/436 185 > Thierry.Onkelinx at inbo.be > www.inbo.be > > To call in the statistician after the experiment is done may be no more > than asking him to perform a post-mortem examination: he may be able to > say what the experiment died of. > ~ Sir Ronald Aylmer Fisher > > The plural of anecdote is not data. > ~ 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 > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > > Dit bericht en eventuele bijlagen geven enkel de visie van de schrijver > weer > en binden het INBO onder geen enkel beding, zolang dit bericht niet > bevestigd is > door een geldig ondertekend document. The views expressed in this > message > and any annex are purely those of the writer and may not be regarded as > stating > an official position of INBO, as long as the message is not confirmed > by a duly > signed document. > > ______________________________________________ > 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.
Here is one way:> x <- rnorm(100) > y <- rnorm(100) > z <- residuals(lm(y ~ x)) > cor(x, z)[1] 3.610290e-17 Best, Giovanni> Date: Tue, 07 Jul 2009 16:26:02 +0200 > From: "Stein, Luba (AIM SE)" <LUBA.STEIN at allianz.com> > Sender: r-help-bounces at r-project.org > Accept-Language: en-US, de-DE > Precedence: list > Thread-topic: [R] Uncorrelated random vectors > Thread-index: Acn/CUJmE2gw3SggRTqBPK7cXE4i5QAAMBVwAAE0SfA> acceptlanguage: en-US, de-DE > > 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 > Instituut voor natuur- en bosonderzoek / Research Institute for Nature > and Forest > Cel biometrie, methodologie en kwaliteitszorg / Section biometrics, > methodology and quality assurance > Gaverstraat 4 > 9500 Geraardsbergen > Belgium > tel. + 32 54/436 185 > Thierry.Onkelinx at inbo.be > www.inbo.be > > To call in the statistician after the experiment is done may be no more > than asking him to perform a post-mortem examination: he may be able to > say what the experiment died of. > ~ Sir Ronald Aylmer Fisher > > The plural of anecdote is not data. > ~ 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 > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > > Dit bericht en eventuele bijlagen geven enkel de visie van de schrijver weer > en binden het INBO onder geen enkel beding, zolang dit bericht niet bevestigd is > door een geldig ondertekend document. The views expressed in this message > and any annex are purely those of the writer and may not be regarded as stating > an official position of INBO, as long as the message is not confirmed by a duly > signed document. > > ______________________________________________ > 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. > >
As mentioned by somebody before, there is no problem for the normal case - use mvrnorm function from MASS package with any mu and make Sigma be any diagonal matrix (with strictly positive diagonal). Note that even though all the correlations are 0, the SAMPLE correlations won't be 0. If you want to create a set of vectors whose SAMPLE correlations are 0 you will have to use a variant of Gramm-Schmidt. I do not know whether a variant of mvrnorm exists for logistic distribution (my guess is that it does not). --- On Tue, 7/7/09, Stein, Luba (AIM SE) <LUBA.STEIN at allianz.com> wrote:> From: Stein, Luba (AIM SE) <LUBA.STEIN at allianz.com> > Subject: [R] Uncorrelated random vectors > To: "r-help at r-project.org" <r-help at r-project.org> > Received: Tuesday, 7 July, 2009, 11:45 PM > 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 > > > > > ??? [[alternative HTML version deleted]] > > ______________________________________________ > 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. >