5 votos

¿Hay una mejor manera de crear variables con una cierta correlación y una de ellas es heteroscedástica?

Mi objetivo es generar dos variables que están correlacionadas y uno de ellos es heteroscedastic con respecto a una variable de agrupación.

Para crear dos variables con un deseada de correlación de la forma más común de hacerlo es utilizar la descomposición de cholesky. Yo, además, utilizar los residuos de la proyección ortogonal y estandarizada de las variables en la parte frontal para asegurarse de que la correlación se mantiene en el valor deseado.

Para introducir la heterocedasticidad para una de las variables que he intentado lo siguiente:

  1. Hice la descomposición de cholesky para u=(u1,u2), p[i]=c(1,1.01,1.02,1.03,...)u=(u1,u2), p[i]=c(1,1.01,1.02,1.03,...)

    Var(u)=(1ρq[i]ρq[i]q[i]2)

    La razón por la cual escogí esta matriz de covarianza es que mientras que el la varianza de u2 aumenta con la q[i] la correlación se mantiene en el valor deseado ρ.

    Pero esto, obviamente, no introducir heterocedasticidad a u2....

  2. Un segundo intento fue descompuesto ambas variables u1,u2 con un tamaño de muestra de n en dos partes, cada una de longitud 12n:  u1=(u1.1,u1.2),u2=(u2.1,u2.2). Ahora hice la descomposición de cholesky para

    Var(u)=(10ρρq[i]01ρρq[i]ρρ10ρq[i]ρq[i]0q[i])

    Después de que me generan las cuatro variables I fusionado u1.1,u1.2 a una n×1 vector. De forma análoga para u2. Las pruebas de los resultados de los rendimientos que la heterocedasticidad es ahora donde debe ser como la varianza de la u2.2 aumenta con la q[i]. Pero la correlación desaparece como q[i] aumenta debido a que la varianza de u2 aumenta más rápidamente, entonces la covarianza entre el u1 u2

  3. Un tercer intento de que termine haciendo fue multiplicar u2 con un muñeco de la variable de

    z2={1q[i]

    Este enfoque no funciona para los valores pequeños de a q[i] (como mi gráfico muestra), pero tan pronto como q[i] es lo suficientemente grande como la que domina el numerador y el denominador de la el coeficiente de correlación tal que la varianza condicional (dependiendo del valor de z2) ya no es aumentar el q[i].

Aquí está mi código para el caso (3):

q     <- seq(1.01,10,0.1)
n         <- 100
rho   <- 0.5
sd_u1     <- numeric(0)
sd_u2.1   <- numeric(0)
sd_u2.2   <- numeric(0)
cor_u1_u2 <- numeric(0)


for(i in 1:length(q)){
u1      <- rnorm(n,0,1)
u1      <- ( u1 - mean(u1) )/sd(u1)
u2      <- rnorm(n,0,1)
z2      <- c(rep(1,0.5*n),rep(q[i],0.5*n))
u2      <- u2*z2
u2      <- as.vector( ( diag(n) - u1%*%solve(t(u1)%*%u1)%*%t(u1) ) %*% u2 )
u2      <- ( u2 - mean(u2) )/sd(u2)
z       <- cbind(u1, rho*u1+sqrt(1-rho^2)*u2) 
sd_u1[i]      <- sd(z[,1])
sd_u2.1[i]    <- sd(z[,2][1:(0.5*n)])
sd_u2.2[i]    <- sd(z[,2][(0.5*n+1):n])
cor_u1_u2[i]  <- cor(z[,1],z[,2])
}
par(mfrow=c(3,1))
plot(q,sd_u1, type="l")
plot(q,sd_u2.1, type="l", ylim=c(0,2))
lines(q,sd_u2.2,col="red")
plot(q,cor_u1_u2, type="l")

enter image description here

20voto

ER17 Puntos 1

Ruscio y Kaczetow (2008) propone un método para inducir una correlación exacta en dos variables aleatorias con distribuciones arbitrarias. Ambas variables pueden disfrutarse desde empírica existente distribuciones, y las distribuciones marginales se reflejan estas distribuciones.

Tienen un acompañamiento R código que funciona (yo lo he utilizado un par de veces). Como algunos pequeños errores de escritura en el código original tuvo que ser corregido: aquí's una limpieza de la versión.

Ruscio, J., & Kaczetow, W. (2008). La simulación no normal Multivariante de Datos Mediante un Algoritmo Iterativo. Multivariante En La Investigación Del Comportamiento, 43(3), 355-381. doi:10.1080/00273170802285693

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