6 votos

¿Por qué no puedo simular variables con correlación negativa? ¿Cómo puedo solucionarlo?

Me gustaría simular los datos con diferentes matrices de correlación, con este método:

M = matrix(c(1.0,  0.6,  0.6, 0.6, 
             0.6,  1.0, -0.2, 0.0,
             0.6, -0.2,  1.0, 0.0, 
             0.6,  0.0,  0.0, 1.0 ),
           nrow=4, ncol=4)

Cholesky-descomposición

L = chol(M)
nvars = dim(L)[1]

Variables aleatorias:

r = t(L) %*% matrix(rnorm(nvars * megf), nrow=nvars, ncol=megf)
r = t(r)

Se trabajó con correlaciones positivas, pero también necesito negativo. Por qué no funciona? ¿Cómo puedo hacer eso?

Fuente del código

14voto

Brandon Grossutti Puntos 140

Su matriz de correlación no es positiva definida. Esto significa que no es posible que un verdadero conjunto de datos que han generado.

> det(M)
[1] -0.2496

Esto funciona y tiene una correlación negativa:

> M=matrix(c(1.0,  0.6,  0.6, 0.6, 
             0.6,  1.0, -0.2, 0.3,
             0.6, -0.2,  1.0, 0.3, 
             0.6,  0.3,  0.3, 1.0)
            ,nrow=4, ncol=4)
> 
> det(M)
[1] 0.0528

El código no se ejecuta, porque megf no obtener definidos.

Usted puede ahorrar un poco de esfuerzo mediante el uso de la mvrnorm() de la función, en la MISA del paquete.

> library(MASS)
> set.seed(1234)  #Set seed for replicability
> r <- mvrnorm(n=1000, Sigma=M, mu=rep(0, 4) )
> cor(r)
          [,1]       [,2]       [,3]      [,4]
[1,] 1.0000000  0.5748690  0.6330390 0.5950443
[2,] 0.5748690  1.0000000 -0.1879727 0.2915380
[3,] 0.6330390 -0.1879727  1.0000000 0.3048610
[4,] 0.5950443  0.2915380  0.3048610 1.0000000

0voto

Aksakal Puntos 11351

Cholesky método funciona con correlaciones negativas. Requiere de una matriz positiva definida, por supuesto, pero la matriz puede tener elementos negativos, véase este ejemplo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X