[Rd] matrix not positive definite (while it should be)
Petr Savicky
savicky at cs.cas.cz
Fri May 6 09:20:17 CEST 2011
On Thu, May 05, 2011 at 02:31:59PM -0400, Arthur Charpentier wrote:
> I do have some trouble with matrices. I want to build up a covariance matrix
> with a hierarchical structure). For instance, in dimension n=10, I have two
> subgroups (called REGION).
>
> NR=2; n=10
> CORRELATION=matrix(c(0.4,-0.25,
> -0.25,0.3),NR,NR)
> REGION=sample(1:NR,size=n,replace=TRUE)
> R1=REGION%*%t(rep(1,n))
> R2=rep(1,n)%*%t(REGION)
> SIGMA=matrix(NA,n,n)
>
> for(i in 1:NR){
> for(j in 1:NR){
> SIGMA[(R1==i)&(R2==j)]=CORRELATION[i,j]
> }}
>
> If I run quickly some simulations, I build up the following matrix
>
> > CORRELATION
> [,1] [,2]
> [1,] 0.40 -0.25
> [2,] -0.25 0.30
> > REGION
> [1] 2 2 1 1 2 1 2 1 1 2
> > SIGMA
> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
> [1,] 0.30 0.30 -0.25 -0.25 0.30 -0.25 0.30 -0.25 -0.25 0.30
> [2,] 0.30 0.30 -0.25 -0.25 0.30 -0.25 0.30 -0.25 -0.25 0.30
> [3,] -0.25 -0.25 0.40 0.40 -0.25 0.40 -0.25 0.40 0.40 -0.25
> [4,] -0.25 -0.25 0.40 0.40 -0.25 0.40 -0.25 0.40 0.40 -0.25
> [5,] 0.30 0.30 -0.25 -0.25 0.30 -0.25 0.30 -0.25 -0.25 0.30
> [6,] -0.25 -0.25 0.40 0.40 -0.25 0.40 -0.25 0.40 0.40 -0.25
> [7,] 0.30 0.30 -0.25 -0.25 0.30 -0.25 0.30 -0.25 -0.25 0.30
> [8,] -0.25 -0.25 0.40 0.40 -0.25 0.40 -0.25 0.40 0.40 -0.25
> [9,] -0.25 -0.25 0.40 0.40 -0.25 0.40 -0.25 0.40 0.40 -0.25
> [10,] 0.30 0.30 -0.25 -0.25 0.30 -0.25 0.30 -0.25 -0.25 0.30
Hi.
If X is a random vector from the 2 dimensional normal distribution
with the covariance matrix
[,1] [,2]
[1,] 0.40 -0.25
[2,] -0.25 0.30
then the vector X[REGION], which consists of replicated components
of X, has the expanded covariance matrix n times n, which you ask
for. Since the mean and the covariance matrix determine the distribution
uniquely, this is also a description of the required distribution.
The distribution is concentrated in a 2 dimensional subspace, since
the covariance matrix has rank 2.
Hope this helps.
Petr Savicky.
More information about the R-devel
mailing list