4 votos

Regresión logística multinivel : Estudio de simulación

He escrito R códigos para la simulación de datos del modelo de regresión logística multinivel .

Me centro en el siguiente modelo logístico multinivel con una variable explicativa en el nivel 1 (nivel individual) y una variable explicativa en el nivel 2 (nivel de grupo) :

$$\text{logit}(p_{ij})=\pi_{0j}+\pi_{1j}x_{ij}\ldots (1)$$ $$\pi_{0j}=\gamma_{00}+\gamma_{01}z_j+u_{0j}\ldots (2)$$ $$\pi_{1j}=\gamma_{10}+\gamma_{11}z_j+u_{1j}\ldots (3)$$

donde , $u_{0j}\sim N(0,\sigma_0^2)$ , $u_{1j}\sim N(0,\sigma_1^2)$ , $\text{cov}(u_{0j},u_{1j})=\sigma_{01}$

En este papel en la ecuación (2) , asumieron $\text{cov}(u_{0j},u_{1j})=\sigma_{01}$ que no es independiente. Pero también mencionan en la sección de metodología que :

Los componentes aleatorios del grupo $u_{0j}$ y $u_{1j}$ son variables normales "independientes" con media cero y desviaciones estándar $_0$ y $_1$ .

Así que asumí $\text{cov}(u_{0j},u_{1j})=0$ .

Código R :

## Simulating data from multilevel logistic regression 

set.seed(1234)
x <- rnorm(1000) ### individual level variable
z <- rnorm(1000) ### group level variable

##fixed effect parameter
g_00 <- -1
g_01 <- 0.3
g_10 <- 0.3
g_11 <- 0.3

g <- matrix(c(g_00,g_01,g_10,g_11),ncol=1)

require(mvtnorm)

##need variance values as input 
s2_0 <- 0.36
s2_1 <- 1
s01 <- 0

##generate bi-variate normal rv for u0, u1

avg <- c(0,0) ##mean
sigma <- matrix(c(s2_0,s01,s01,s2_1),ncol=2)

u <- rmvnorm(1000,mean=avg,sigma=sigma,method="chol")

pi_0j <- g_00 +g_01*z + as.vector(u[,1])
pi_1j <- g_10 +g_11*z + as.vector(u[,2])
p <- exp(pi_0j+pi_1j*x)/(1+exp(pi_0j+pi_1j*x))

y <- rbinom(1000,1,p)

Pero no entiendo dónde hay que considerar el grupo. Si selecciono el número de grupos a ser $100$ $(j=1,2,\ldots, 100)$ Entonces, asignaré los grupos al azar contra cada uno $y_{i,j}$ ?

  • ¿He simulado correctamente los datos de Multilevel Logistic Distribution ?

5voto

Matt Puntos 918

¿He simulado correctamente los datos de la distribución logística multinivel?

Bueno, tal vez, pero no lo creo. Piénsalo así: Quieres simular el caso en el que tienes una muestra de individuos, y cada individuo pertenece a un grupo. Los individuos tienen valores covariables y los grupos tienen valores de covarianza.

El artículo es un poco confuso al principio. Si se consulta a Maas y Joop (2004), verá que Moineddin et al (2007) siguen una línea de desarrollo muy similar. Eso podría aclarar algunas de sus decisiones.

Maas y Joop (2004) examinan la situación en el multinivel de regresión multinivel. El modelo es bastante similar, con la misma estructura para la $u_{0j}$ y $u_{1j}$ . Y allí, en la página 131 encontramos la siguiente declaración:

Para simplificar el modelo de simulación, sin pérdida de generalidad, el covarianza entre los dos términos u se supone igual a cero.

Así pues, Moineddin et al (2007) no hacen más que seguir la corriente. No hay razón por la que tienen para asumir que $\sigma_{01} = 0$ . Por supuesto, para reproducir los resultados en el papel, lo harías.

También están siguiendo la misma línea de desarrollo con respecto a evaluar el efecto del coeficiente de correlación intraclase (CCI) en la estimación. En el modelo logístico, el CCI se calcula de forma un poco diferente que en la situación de regresión lineal. Pero, el resultado final Pero el resultado final es el mismo: especificar un CCI equivale a especificar una varianza para $\sigma_0^2$ .

Aquí hay una revisión de su código:

## Simulating data from multilevel logistic regression

require(mvtnorm)

set.seed(1234)

# Set up various parameters.

J   <- 30          ### number of groups
n_j <- rep(5, J)   ### number of individuals in jth group

# What is the sample size in this case?

N <- sum(n_j)

# Set the fixed effect parameters.

g_00 <- -1
g_01 <- 0.3
g_10 <- 0.3
g_11 <- 0.3

# Set the variance values for the group level random effect.

s2_0 <- 0.13    ### variance corresponding to specific ICC
s2_1 <- 1       ### variance standardized to 1
s01  <- 0       ### covariance assumed 0

# Simulate the covariate values for this sample size.

z <- rnorm(J)   ### group-level covariate values
x <- rnorm(N)   ### individual-level covariate values

En este punto, está todo listo para simular. Observe que su valor de varianza original era en realidad la desviación estándar ( $0.36^2 \approx 0.13$ ). Este valor de varianza fue impulsado por el deseo de que el ICC $=0.04$ .

# Generate (u_0j, u_1j) from a bivariate normal.

mu    <- c(0, 0)
sigma <- matrix(c(s2_0, s01, s01, s2_1), ncol=2)

u <- rmvnorm(J, mean=mu, sigma=sigma, method="chol")

# Now form the linear predictor.  First, the group-level
# predictor.  There are J of these.

pi_0 <- g_00 + g_01 * z + as.vector(u[, 1])
pi_1 <- g_10 + g_11 * z + as.vector(u[, 2])

# Next, the individual level predictor.  There are
# N of these.

eta <- rep(pi_0, n_j) + rep(pi_1, n_j) * x

# Transform back to the probability scale.

p <- exp(eta)/( 1 + exp(eta) )

# Simulate a Bernoulli from each individual distribution.

y <- rbinom(N, 1, p)

Maas, Cora JM, y Joop J. Hox (2004) Robustness issues in análisis de regresión multinivel. Estadística Neerlandesa 58.2: 127-137.

Moineddin, Rahim, Flora I. Matheson, y Richard H. Glazier (2007) Un estudio de simulación del tamaño de la muestra para modelos de regresión logística multinivel. BMC Medical Research Methodology 7.1: 34.

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