다단계 로지스틱 회귀 모형 추정


9

레벨 1 (개별 레벨)에 하나의 설명 변수와 레벨 2 (그룹 레벨)에 하나의 설명 변수가있는 다음 다중 레벨 물류 모델 :

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

여기서 그룹 레벨 잔차 및 는 기대 값이 0 인 다변량 정규 분포를 갖는 것으로 가정합니다. 잔여 오차의 분산 로 지정 , 상기 예측 오차의 분산 로 지정 .u0ju1ju0jσ02u1jσ12

모델의 매개 변수를 추정하고 Rcommand 을 사용하고 싶습니다 glmmPQL.

방정식 (1)에서 방정식 (2)와 (3)을 대체하면

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에서 사용 하는 것을 고려할 수 있습니다 . Laplace Approxation 또는 Gauss-Hermite quadrature를 사용하는데, PQL보다 일반적으로 더 정확합니다 (이 경우에는 답변이 매우 유사하지만).lme4glmer(Y~X*Z+(1|cluster),family=binomial,data=sim_data)
  • niter인수는 최대 반복 횟수를 지정합니다 . 실제로 한 번의 반복 만 필요했습니다
  • 상호 작용 용어에 대한 귀하의 질문이 무엇인지 잘 모르겠습니다. 중요하지 않은 상호 작용 용어를 삭제해야하는지 여부는 약간의 웜일 수 있으며 통계 철학과 분석 목표에 따라 다릅니다 (예 : 이 질문 참조 ).
  • 자유의 분모도는 휴리스틱은 간단한 볼 수 있습니다 핀 헤이와 베이츠 (2000)의 91 페이지에 설명 '내부 - 외부'규칙 단순한 '내부 - 외부'에 따라 계산되고 Google 도서에이 ... 그것은 일반적으로 합리적인 근사치이지만 자유도 계산은 특히 GLMM의 경우 복잡합니다.
  • Moineddin 등의 "다단계 로지스틱 회귀 모형의 표본 크기에 대한 시뮬레이션 연구"를 복제하려고하는 경우 . (DOI : 10.1186 / 1471-2288-7-34), 단일 실행을 비교할뿐만 아니라 수많은 시뮬레이션을 실행하고 평균을 계산해야합니다. 또한, 그들의 방법에 더 가까이 접근하려고 노력해야 할 것입니다 (내 첫 번째 요점으로, 그들은 적응 형 가우스-Hemite 직교와 함께 SAS PROC NLMIXED를 사용한다고 진술하므로 예를 들어 더 나아질 것입니다 glmer(...,nAGQ=10). 정확히 일치하지만 아마보다 가깝습니다 glmmPQL.

ncbi.nlm.nih.gov/pmc/articles/PMC1955447/table/T1 , 을 복제하는 것이 조금 더 설명해 주 시겠습니까I need to run a large number of simulations and compute averages ? 다단계 로지스틱 분포에서 데이터를 회 시뮬레이션 할 때마다 매번 매개 변수를 추정하고 평균값을 구해야한다는 의미 입니까? 그러나 내가 말하면 에 따라 추정 매개 변수의 값이 매개 변수의 실제 값과 같지 않습니까? 300E[θ^]=θ
ABC

glmer()랜덤 절편의 분산 인 추정합니다 . 그러나 다른 분산 성분 (잔류 분산 성분) 추정치가 없습니다.σ02σ12 결과에서에 의해 생산summary(glmer(Y~X*Z+(1|cluster),family=binomial,data=sim_data,nAGQ=10))
ABC

2
GLMM 추정에 사용하는 근사치가 편향되어 있지 않다고 가정합니다. 아마 사실이 아닙니다. 더 나은 근사치 (PQL 아님)의 대부분은 무증상으로 편향되어 있지만 유한 크기 샘플에 대해서는 여전히 편향되어 있습니다.
벤 볼커

1
@ABC : 예. 두 링크 모두 코드 덩어리를 여러 번 복제하는 방법에 대한 예제를 포함합니다. 예를 들어 코드를 함수로 감싸고 replicate 명령을 실행하는 것이 쉬워야합니다.
Ryan Simmons

1
@ ABC : 귀하의 질문의 다른 부분에 관해서는, 당신을 괴롭히는 것이 약간 혼란 스럽습니다. 난수를 생성하고 있습니다. 반올림 또는 무한히 많은 수의 복제가 없으면 치우침 (또는 실제로 정확한 모든 ANY 모수 추정값)을 사용하여 정확히 0을 얻지 못할 것입니다. 그러나 충분히 많은 수의 복제 (예 : 1000)를 사용하면 매우 작은 (0에 가까운) 치우침이 생길 수 있습니다. 복제하려고한다고 인용 한 논문이이를 증명합니다.
Ryan Simmons
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.