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


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.