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 grupal):
π 0 j = γ 00 + γ 01 z j + u 0 j … ( 2 ) π 1 j = γ 10 + γ 11 z j + u 1 j … ( 3 )
donde, se supone que los residuos a nivel de grupo y u 1 j tienen una distribución normal multivariante con expectativa cero. La varianza de los errores residuales u 0 j se especifica como σ 2 0 , y la varianza de los errores residuales u 1 j se especifica como σ 2 1 .
Quiero estimar el parámetro del modelo y me gusta usar el   Rcomando glmmPQL.
Sustituyendo la ecuación (2) y (3) en la ecuación (1) se obtiene,
Hay 30 grupos y 5 individual en cada grupo.
Código R:
   #Simulating data from multilevel logistic distribution 
   library(mvtnorm)
   set.seed(1234)
   J <- 30             ## number of groups
   n_j <- rep(5,J)     ## number of individuals in jth group
   N <- sum(n_j)
   g_00 <- -1
   g_01 <- 0.3
   g_10 <- 0.3
   g_11 <- 0.3
   s2_0 <- 0.13  ##variance corresponding to specific ICC
   s2_1 <- 1     ##variance standardized to 1
   s01  <- 0     ##covariance assumed zero
   z <- rnorm(J)
   x <- rnorm(N)
   #Generate (u_0j,u_1j) from a bivariate normal .
   mu <- c(0,0)
  sig <- matrix(c(s2_0,s01,s01,s2_1),ncol=2)
  u <- rmvnorm(J,mean=mu,sigma=sig,method="chol")
  pi_0 <- g_00 +g_01*z + as.vector(u[,1])
  pi_1 <- g_10 + g_11*z + as.vector(u[,2])
  eta <- rep(pi_0,n_j)+rep(pi_1,n_j)*x
  p <- exp(eta)/(1+exp(eta))
  y <- rbinom(N,1,p)Ahora la estimación del parámetro.
  #### estimating parameters 
  library(MASS)
  library(nlme)
  sim_data_mat <- matrix(c(y,x,rep(z,n_j),rep(1:30,n_j)),ncol=4)
  sim_data <- data.frame(sim_data_mat)
  colnames(sim_data) <- c("Y","X","Z","cluster")
  summary(glmmPQL(Y~X*Z,random=~1|cluster,family=binomial,data=sim_data,,niter=200))SALIDA
      iteration 1
      Linear mixed-effects model fit by maximum likelihood
      Data: sim_data 
      Random effects:
      Formula: ~1 | cluster
              (Intercept)  Residual
      StdDev: 0.0001541031 0.9982503
      Variance function:
      Structure: fixed weights
      Formula: ~invwt 
      Fixed effects: Y ~ X * Z 
                      Value Std.Error  DF   t-value p-value
      (Intercept) -0.8968692 0.2018882 118 -4.442404  0.0000
      X            0.5803201 0.2216070 118  2.618691  0.0100
      Z            0.2535626 0.2258860  28  1.122525  0.2712
      X:Z          0.3375088 0.2691334 118  1.254057  0.2123
      Correlation: 
           (Intr) X      Z     
      X   -0.072              
      Z    0.315  0.157       
      X:Z  0.095  0.489  0.269
      Number of Observations: 150
      Number of Groups: 30 - glmmPQL- niter=200
- Además, ¿cómo se - DFcalculan los grados de libertad ?
- No coincide con el sesgo relativo de las diversas estimaciones de la tabla . Traté de calcular el sesgo relativo como: - #Estimated Fixed Effect parameters : hat_g_00 <- -0.8968692 #overall intercept hat_g_10 <- 0.5803201 # X hat_g_01 <-0.2535626 # Z hat_g_11 <-0.3375088 #X*Z fixed <-c(g_00,g_10,g_01,g_11) hat_fixed <-c(hat_g_00,hat_g_10,hat_g_01,hat_g_11) #Estimated Random Effect parameters : hat_s_0 <-0.0001541031 ##Estimated Standard deviation of random intercept hat_s_1 <- 0.9982503 std <- c(sqrt(0.13),1) hat_std <- c(0.0001541031,0.9982503) ##Relative bias of Fixed Effect : rel_bias_fixed <- ((hat_fixed-fixed)/fixed)*100 [1] -10.31308 93.44003 -15.47913 12.50293 ##Relative bias of Random Effect : rel_bias_Random <- ((hat_std-std)/std)*100 [1] -99.95726 -0.17497
- ¿Por qué el sesgo relativo no coincide con la tabla?

I need to run a large number of simulations and compute averagesglmer()summary(glmer(Y~X*Z+(1|cluster),family=binomial,data=sim_data,nAGQ=10))