Оцінка багаторівневих моделей логістичної регресії


9

Наступна багаторівнева логістична модель з однією пояснювальною змінною на рівні 1 (індивідуальний рівень) та однією пояснювальною змінною на рівні 2 (рівень групи):

logit(pij)=π0j+π1jхij…(1)
π0j=γ00+γ01zj+у0j…(2)
π1j=γ10+γ11zj+у1j…(3)

де, залишки на рівні групи і як передбачається, мають багатоваріантний нормальний розподіл з нулем очікування. Дисперсія залишкових помилок визначається як , а дисперсія залишкових помилок визначається як .у0jу1jу0jσ02у1jσ12

Я хочу оцінити параметр моделі і мені подобається використовувати Rкоманду glmmPQL.

Підставляючи рівняння (2) і (3) в рівняння (1), виходить,

logit(pij)=γ00+γ10хij+γ01zj+γ11хijzj+у0j+у1jхij…(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-значення змінної на рівні групи та взаємодії між рівнем показує, що вони несуттєві. Але чому в цій статті вони зберігають змінну на рівні групи та взаємодію між рівнем для подальшого аналізу?(Z)(Х:Z)(Z)(Х: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)); він використовує наближення Лапласа або квадратуру Гаусса-Ерміта, які, як правило, більш точні, ніж PQL (хоча відповіді в цьому випадку дуже схожі).
  • niterАргумент задає максимальне число ітерацій; була потрібна лише одна ітерація
  • Я не впевнений, яке ваше питання щодо терміна взаємодії. Чи варто вам відмовлятися від несуттєвих термінів взаємодії чи ні, це є чимось глибоким банком, і залежить як від вашої статистичної філософії, так і від цілей вашого аналізу (наприклад, дивіться це запитання )
  • ступінь свободи в знаменнику обчислюється за простим "внутрішнім - зовнішнім" евристикою, простим "внутрішнім - зовнішнім" правилом, описаним на стор. 91 Pinheiro and Bates (2000), яке доступне в Google Books ... це, як правило, розумне наближення, але обчислення ступенів свободи є складним, особливо для ГЛМ
  • якщо ви намагаєтесь повторити "Модельне дослідження розміру вибірки для багаторівневих логістичних регресійних моделей" Moineddin et al. (DOI: 10.1186 / 1471-2288-7-34), вам потрібно запустити велику кількість моделювання та обчислити середні показники, а не просто порівнювати один пробіг. Крім того, вам, мабуть, слід спробувати наблизитися до їх методів (повертаючись до моєї першої точки, вони заявляють, що вони використовують 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. Чи означає це, скажімо, я повинен імітувати дані300разів від багаторівневого логістичного розподілу і щоразу оцінювати їх параметри та брати середнє значення оцінок? Але якщо я скажу, чи не буде значення оціненого параметра рівним справжньому значенню параметра відповідно доЕ[θ^]=θ?
— ABC

glmer() оцінює дисперсію випадкового перехоплення, σ02. Але я не отримую жодної оцінки іншого компонента дисперсії (залишкової дисперсійної складової),σ12з результату виробляєsummary(glmer(Y~X*Z+(1|cluster),family=binomial,data=sim_data,nAGQ=10))
— ABC

2
ви припускаєте, що наближення, які ми використовуємо для оцінки GLMM, є неупередженими. Це, мабуть, неправда; більшість кращих наближень (не PQL) є асимптотично неупередженими, але вони все ще упереджені для зразків кінцевого розміру.
— Бен Болкер

1
@ABC: Так, обидва ці посилання містять приклади, як повторити шматок коду кілька разів. Зробити ваш код у функції слід легко, наприклад, запустити команду реплікації.
— Райан Сіммонс

1
@ABC: Що стосується іншої частини вашого питання, я трохи розгублений щодо того, що вас турбує. Ви генеруєте випадкові числа; без округлення або нескінченно великої кількості реплікацій ви ніколи не отримаєте рівно 0 з ухилом (або, дійсно, точно точною оцінкою БУДЬ-якого параметра). Однак, маючи достатньо велику кількість реплікацій (скажімо, 1000), ви, ймовірно, отримаєте дуже невеликий (близький до 0) ухил. Папір, яку ви цитуєте, що ви намагаєтесь повторити, демонструє це.
— Райан Сіммонс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.