From: Patrick Burns <pburns_at_pburns.seanet.com>

Date: Thu, 26 Jun 2008 18:15:47 +0100

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. Received on Thu 26 Jun 2008 - 17:38:49 GMT

Date: Thu, 26 Jun 2008 18:15:47 +0100

To make David's approach a little more concrete: You can always have correlations all equal to 1 -- the variables are all the same, except for the names you've given them. You can have two variables with correlation -1, but you can't get a third variable that has -1 correlation to both of the first two.

Patrick Burns

patrick_at_burns-stat.com

+44 (0)20 8525 0696

http://www.burns-stat.com

(home of S Poetry and "A Guide for the Unwilling S User")

davidr_at_rhotrading.com wrote:

> Well, if you think about the geometry, all correlations equal usually

*> won't work. Think of the SDs as the sides of a simplex and the
**> correlations as the cosines of the angles between the sides (pick one
**> variable as the 'origin'.) Only certain values will give a valid
**> covariance or correlation matrix.
**> HTH,
**> David L. Reiner, PhD
**> Head Quant
**> Rho Trading Securities, LLC
**> -----Original Message-----
**> From: r-help-bounces_at_r-project.org [mailto:r-help-bounces_at_r-project.org]
**> On Behalf Of Mizanur Khondoker
**> Sent: Thursday, June 26, 2008 11:11 AM
**> To: r-help_at_r-project.org
**> Subject: [SPAM] - [R] constructing arbitrary (positive definite)
**> covariance matrix - Found word(s) list error in the Text body
**>
**> Dear list,
**>
**> I am trying to use the 'mvrnorm' function from the MASS package for
**> simulating multivariate Gaussian data with given covariance matrix.
**> The diagonal elements of my covariance matrix should be the same,
**> i.e., all variables have the same marginal variance. Also all
**> correlations between all pair of variables should be identical, but
**> could be any value in [-1,1]. The problem I am having is that the
**> matrix I create is not always positive definite (and hence mvrnorm
**> fails).
**>
**> Is there any simple way of constructing covariance matrix of the above
**> structure (equal variance, same pairwise correlation from [-1, 1])
**> that will always be positive definite?
**> I have noticed that covraince matrices created using the following COV
**> function are positive definite for -0.5 < r <1. However, for r <
**> -0.5, the matrix is not positive definite.
**> Does anyone have any idea why this is the case? For my simualtion, I
**> need to generate multivariate data for the whole range of r, [-1, 1]
**> for a give value of sd.
**>
**> Any help/ suggestion would be greatly appreciated.
**>
**> Examples
**> ########
**> COV<-function (p = 3, sd = 1, r= 0.5){
**> cov <- diag(sd^2, ncol=p, nrow=p)
**> for (i in 1:p) {
**> for (j in 1:p) {
**> if (i != j) {
**> cov[i, j] <- r * sd*sd
**> }
**> }
**> }
**> cov
**> }
**>
**>
**>> library(MASS)
**>> ### Simualte multivarite gaussin data (works OK)
**>> Sigma<-COV(p = 3, sd = 2, r= 0.5)
**>> mu<-1:3
**>> mvrnorm(5, mu=mu, Sigma=Sigma)
**>>
**> [,1] [,2] [,3]
**> [1,] 1.2979984 1.843248 4.460891
**> [2,] 2.1061054 1.457201 3.774833
**> [3,] 2.1578538 2.761939 4.589977
**> [4,] 0.8775056 4.240710 2.203712
**> [5,] 0.2698180 2.075759 2.869573
**>
**>> ### Simualte multivarite gaussin data ( gives Error)
**>> Sigma<-COV(p = 3, sd = 2, r= -0.6)
**>> mu<-1:3
**>> mvrnorm(5, mu=mu, Sigma=Sigma)
**>>
**> Error in mvrnorm(5, mu = mu, Sigma = Sigma) :
**> 'Sigma' is not positive definite
**>
**>
*

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. Received on Thu 26 Jun 2008 - 17:38:49 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Fri 27 Jun 2008 - 01:31:01 GMT.

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