估计多级Logistic回归模型


9

以下多级逻辑模型,其中一个解释变量在级别1(个人级别),一个解释变量在级别2(组级别):

π 0 Ĵ = γ 00 + γ 01 ż Ĵ + ü 0 Ĵ ... 2

logit(pij)=π0j+π1jxij(1)
π0j=γ00+γ01zj+u0j(2)
π1j=γ10+γ11zj+u1j(3)

其中,假定组级别残差u0ju1j具有期望值为零的多元正态分布。残留误差 u_ {0j}的方差u0j指定为σ02,残留误差u_ {1j}的方差 u1j指定为σ12

我想估算模型的参数,并且喜欢使用 Rcommand glmmPQL

将方程式(2)和(3)代入方程式(1)可得出,

logit(pij)=γ00+γ10xij+γ01zj+γ11xijzj+u0j+u1jxij(4)

有30个组(j=1,...,30),每组5个。

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)

现在进行参数估计。

  #### 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))

输出:

      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 
  • 它为什么只拿当我提到采取迭代在函数内部迭代由参数?1200glmmPQLniter=200

  • 组级别变量和跨级别交互作用 p值也表明它们并不重要。仍然为什么在本文中,他们保留组级别变量和跨级别交互进行进一步分析?X Z Z X Z (Z)(X:Z)(Z)(X:Z)

  • 还有如何DF计算自由度?

  • 它与的各种估计的相对偏差不匹配。我试图将相对偏差计算为:

     #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
    
  • 为什么相对偏差与表格不匹配?

Answers:


7

这里可能有太多问题。一些评论:

  • 您可以考虑glmerlme4包(glmer(Y~X*Z+(1|cluster),family=binomial,data=sim_data))中使用;它使用拉普拉斯(Laplace)逼近或高斯-赫尔姆(Gauss-Hermite)正交,它们通常比PQL更精确(尽管在这种情况下,答案非常相似)。
  • niter参数指定最大迭代次数;实际上只需要一次迭代
  • 我不确定您对互动术语有何疑问。是否应该丢弃无关紧要的交互条件,这只是一小撮蠕虫,取决于您的统计原理和分析目标(例如,参见此问题
  • 分母的自由度是根据简单的“内外”启发式方法计算得出的,该启发法是Pinheiro和Bates(2000)第91页上描述的简单“内外”规则,该规则可在Google图书中找到 ...通常一个合理的近似值,但是自由度的计算很复杂,尤其是对于GLMM
  • 如果您要复制Moineddin 等人的 “多层Logistic回归模型的样本量模拟研究” (DOI:10.1186 / 1471-2288-7-34),您需要运行大量的仿真并计算平均值,而不仅仅是比较一次运行。此外,您可能应该尝试更接近他们的方法(回到我的第一点,他们说他们将SAS PROC NLMIXED与自适应Gauss-Hermite正交一起使用,因此您最好使用例如glmer(...,nAGQ=10);它仍然不会完全匹配,但可能比接近glmmPQL

你能解释一下它多一点,要复制ncbi.nlm.nih.gov/pmc/articles/PMC1955447/table/T1I need to run a large number of simulations and compute averages。这是否意味着,我必须模拟多级Logistic分布中的数据次并每次估计其参数并取估计的平均值?但是如果我说,根据,估计参数的值是否等于参数的真实值?ë [ θ ] = θ300E[θ^]=θ
美国广播公司

glmer()估计随机截距的方差。但是我没有收到其他方差成分(剩余方差分量)的任何估计,从结果产生由 σ 2 1σ02σ12summary(glmer(Y~X*Z+(1|cluster),family=binomial,data=sim_data,nAGQ=10))
ABC

2
您假设我们用于GLMM估计的近似值是无偏的。那可能不是真的。大多数更好的近似值(不是PQL)在渐近性上是无偏的,但对于有限大小的样本,它们仍然有偏倚。
本·博克

1
@ABC:是的,这两个链接都包含有关如何多次复制代码块的示例。例如,将代码包装到函数中并运行复制命令应该很容易。
瑞安·西蒙斯

1
@ABC:关于您问题的另一部分,我对困扰您的事情有些困惑。您正在生成随机数;如果没有四舍五入或无数次重复的操作,那么您永远都不会因偏倚而得到精确的0(或者,实际上,对ANY参数的精确估计)。但是,如果复制数量足够多(例如1000个),则很可能会产生很小的偏差(接近0)。您引用要复制的论文对此进行了说明。
瑞安·西蒙斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.