[R] constructing arbitrary (positive definite) covariance matrix

From: Mizanur Khondoker <Mizanur.Khondoker_at_ed.ac.uk>
Date: Thu, 26 Jun 2008 17:11:14 +0100


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
-- 
Mizanur Khondoker
Division of Pathway Medicine (DPM)
The University of Edinburgh Medical School
The Chancellor's Building
49 Little France Crescent
Edinburgh EH16 4SB
United Kingdom

Tel: +44 (0) 131 242 6287
Fax: +44 (0) 131 242 6244
http://www.pathwaymedicine.ed.ac.uk/

______________________________________________
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 - 16:15:46 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 Thu 26 Jun 2008 - 23:31:11 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.

list of date sections of archive