การประมาณแบบจำลองการถดถอยโลจิสติกหลายระดับ


9

โมเดลโลจิสติกหลายระดับต่อไปนี้ที่มีตัวแปรอธิบายหนึ่งตัวที่ระดับ 1 (ระดับบุคคล) และตัวแปรอธิบายหนึ่งตัวที่ระดับ 2 (ระดับกลุ่ม):

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

โดยที่ค่าคงที่ระดับกลุ่มและถูกสันนิษฐานว่ามีการแจกแจงปกติหลายตัวแปรที่มีค่าความคาดหวังเป็นศูนย์ ความแปรปรวนของข้อผิดพลาดที่เหลือ ถูกระบุเป็นและความแปรปรวนของข้อผิดพลาดที่เหลือ ถูกระบุเป็น\u0ju1ju0jσ02u1jσ12

ฉันต้องการที่จะประเมินค่าพารามิเตอร์ของรูปแบบและฉันชอบที่จะใช้ คำสั่งRglmmPQL

สมการแทน (2) และ (3) ในสมการ (1) ผลตอบแทน

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

มี 30 กลุ่มและ 5 คนในแต่ละกลุ่ม(j=1,...,30)

รหัส 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 ของตัวแปรระดับกลุ่มและการโต้ตอบข้ามระดับแสดงว่าไม่มีนัยสำคัญ ยังคงเป็นเหตุผลในบทความนี้พวกเขาเก็บตัวแปรระดับกลุ่มและปฏิสัมพันธ์ข้ามระดับสำหรับการวิเคราะห์เพิ่มเติม(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
    
  • ทำไมอคติที่เกี่ยวข้องจึงไม่ตรงกับตาราง

คำตอบ:


7

อาจมีคำถามมากเกินไปที่นี่ ความคิดเห็นบางส่วน:

  • คุณอาจพิจารณาใช้glmerจากlme4แพ็คเกจ ( glmer(Y~X*Z+(1|cluster),family=binomial,data=sim_data)); มันใช้การประมาณ Laplace หรือการสร้างพื้นที่สี่เหลี่ยมจัตุรัส Gauss-Hermite ซึ่งโดยทั่วไปมีความแม่นยำมากกว่า PQL (แม้ว่าคำตอบจะคล้ายกันมากในกรณีนี้)
  • niterอาร์กิวเมนต์ระบุสูงสุดจำนวนซ้ำ; จำเป็นต้องมีการวนซ้ำเพียงครั้งเดียวเท่านั้น
  • ฉันไม่แน่ใจว่าคำถามของคุณเกี่ยวกับคำศัพท์โต้ตอบ ไม่ว่าคุณจะวางเงื่อนไขการโต้ตอบที่ไม่สำคัญหรือไม่ควรเป็นเวิร์มเล็ก ๆ น้อย ๆ และขึ้นอยู่กับปรัชญาทางสถิติและเป้าหมายการวิเคราะห์ของคุณ (เช่นดูคำถามนี้ )
  • องศาความเป็นอิสระของตัวหารจะถูกคำนวณตามกฎฮิวริสติกชั้นในด้านนอกแบบเรียบง่ายที่อธิบายไว้ในหน้า 91 ของพินเฮโรและเบตส์ (2000) ซึ่งมีอยู่ใน Google หนังสือ ... โดยทั่วไป การประมาณที่สมเหตุสมผล แต่การคำนวณองศาอิสระนั้นซับซ้อนโดยเฉพาะอย่างยิ่งสำหรับ GLMM
  • หากคุณกำลังพยายามที่จะทำซ้ำ "การศึกษาการจำลองขนาดตัวอย่างสำหรับแบบจำลองการถดถอยโลจิสติกหลายระดับ" โดย Moineddin และคณะ (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 , มันหมายความว่าฉันต้องจำลองข้อมูลครั้งจากการกระจายโลจิสติกหลายระดับและประเมินพารามิเตอร์ของพวกเขาทุกครั้งและใช้ค่าเฉลี่ยของการประมาณหรือไม่ แต่ถ้าฉันบอกว่าค่าของพารามิเตอร์โดยประมาณจะไม่เท่ากับมูลค่าที่แท้จริงของพารามิเตอร์ตามหรือไม่ 300E[θ^]=θ
ABC

glmer()ประมาณการความแปรปรวนของการตัดสุ่ม 2 แต่ฉันไม่ได้รับการประมาณขององค์ประกอบความแปรปรวนอื่น ๆ (องค์ประกอบความแปรปรวนที่เหลือ),จากผลลัพธ์ที่ผลิตโดยσ02σ12summary(glmer(Y~X*Z+(1|cluster),family=binomial,data=sim_data,nAGQ=10))
ABC

2
คุณสมมติว่าการประมาณที่เราใช้สำหรับการประมาณ GLMM นั้นไม่เอนเอียง นั่นอาจไม่เป็นความจริง การประมาณที่ดีกว่าส่วนใหญ่ (ไม่ใช่ PQL) นั้นไม่เอนเอียงแบบ asymptoticallyแต่มันยังคงลำเอียงสำหรับตัวอย่างขนาด จำกัด
Ben Bolker

1
@ABC: ใช่ลิงก์ทั้งสองนั้นมีตัวอย่างสำหรับวิธีการทำซ้ำโค้ดหลาย ๆ ครั้ง มันควรจะง่ายต่อการห่อโค้ดของคุณในฟังก์ชั่นและเรียกใช้คำสั่งทำซ้ำตัวอย่างเช่น
Ryan Simmons

1
@ABC: สำหรับส่วนอื่น ๆ ของคำถามของคุณฉันสับสนเล็กน้อยเกี่ยวกับสิ่งที่รบกวนคุณ คุณกำลังสร้างตัวเลขสุ่ม โดยไม่ต้องปัดเศษหรือจำนวนซ้ำของการทำซ้ำคุณจะไม่มีทางได้ 0 ด้วยอคติ (หรือจริง ๆ แล้วเป็นการประมาณที่แม่นยำของพารามิเตอร์ ANY) อย่างไรก็ตามด้วยจำนวนการจำลองที่มากพอ (กล่าวคือ 1,000) คุณมีแนวโน้มที่จะได้รับอคติน้อยมาก (ใกล้กับ 0) กระดาษที่คุณอ้างว่าคุณพยายามทำซ้ำแสดงให้เห็นถึงสิ่งนี้
Ryan Simmons
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.