Çok Seviyeli Lojistik Regresyon Modellerinin Tahmini


9

Seviye 1'de (bireysel seviye) bir açıklama değişkeni ve seviye 2'de (grup seviyesi) bir açıklama değişkeni olan aşağıdaki çok seviyeli lojistik modeli:

lojit(pbenj)=π0j+π1jxbenj...(1)
π0j=γ00+γ01zj+u0j...(2)
π1j=γ10+γ11zj+u1j...(3)

burada, ve grup düzeyinde kalıntıların sıfır beklentisiyle çok değişkenli bir normal dağılıma sahip oldukları varsayılır. Kalıntı hataları varyansı u_ {0j} olarak belirtilen \ sigma ^ 2_0 ve kalıntı hataları varyansı u_ {1j} olarak belirtilir \ sigma ^ 2_1 .u0ju1ju0jσ02u1jσ12

Modelin parametresini tahmin etmek istiyorum ve Rkomutu kullanmak istiyorum glmmPQL.

Denklem (1) 'deki denklem (2) ve (3)' ü verimle değiştirir,

lojit(pbenj)=γ00+γ10xbenj+γ01zj+γ11xbenjzj+u0j+u1jxbenj...(4)

Her grupta 30 grup (j=1,...,30) ve 5 birey vardır.

R kodu:

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

Şimdi parametre tahmini.

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

ÇIKTI :

      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 
  • Argüman tarafından fonksiyonun içinde iterasyondan bahsetirken neden sadece tekrarlama gerekiyor ?1200glmmPQLniter=200

  • Ayrıca, grup seviyesi değişkeni ve çapraz seviye etkileşiminin p-değeri anlamlı olmadıklarını göstermektedir. Yine de neden bu makalede , daha fazla analiz için grup düzeyinde değişken ve çapraz düzey etkileşimini tutuyorlar ?(Z)(X:Z)(Z)(X:Z)

  • Ayrıca, serbestlik dereceleri nasıl DFhesaplanıyor?

  • Tablonun çeşitli tahminlerinin göreli yanlılığıyla eşleşmiyor . Göreli yanlılığı şu şekilde hesaplamaya çalıştım:

     #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
  • Göreli yanlılık tablo ile neden uyuşmuyor?

Yanıtlar:


7

Burada belki de çok fazla soru var. Bazı yorumlar:

  • Eğer kullanmayı düşünebilirsiniz glmerdan lme4(pakete glmer(Y~X*Z+(1|cluster),family=binomial,data=sim_data)); genellikle PQL'den daha doğru olan Laplace yaklaşımı veya Gauss-Hermite kareleme kullanır (bu durumda cevaplar çok benzer olsa da).
  • Bağımsız niterdeğişken maksimum yineleme sayısını belirtir ; sadece tek bir yineleme gerekliydi
  • Etkileşim terimi hakkında sorunuzun ne olduğundan emin değilim. Önemli olmayan etkileşim terimlerini bırakıp bırakmayacağınız, bir kutu solucan kutusudur ve hem istatistiksel felsefenize hem de analizinizin hedeflerine bağlıdır (örn. Bu soruya bakın )
  • payda serbestlik dereceleri , Google Kitaplar'da bulunan Pinheiro ve Bates'in (2000) 91. sayfasında açıklanan basit bir 'iç-dış' sezgisel basit bir 'iç-dış' kuralına göre hesaplanmaktadır ... genellikle makul bir yaklaşım, ancak serbestlik derecelerinin hesaplanması özellikle GLMM'ler için karmaşıktır
  • Moineddin ve ark. (DOI: 10.1186 / 1471-2288-7-34), sadece tek bir koşuyu karşılaştırmakla kalmaz, çok sayıda simülasyon çalıştırmanız ve ortalamaları hesaplamanız gerekir. Dahası, muhtemelen yöntemlerine yaklaşmaya çalışmalısınız (ilk noktama geri dönersek, uyarlanabilir Gauss-Hermite kareleme ile SAS PROC NLMIXED kullandıklarını belirtiyorlar, bu yüzden örneğin daha iyi olursunuz glmer(...,nAGQ=10); tam olarak eşleşir, ancak muhtemelen daha yakın olacaktır glmmPQL.

Bunu çoğaltmak için bir daha biraz açıklayabilir misiniz ncbi.nlm.nih.gov/pmc/articles/PMC1955447/table/T1 , I need to run a large number of simulations and compute averages. Diyelim ki, verileri çok düzeyli lojistik dağıtımdan kez simüle etmek ve her seferinde parametrelerini tahmin etmek ve tahminlerin ortalamasını almak zorunda mıyım? Ama şunu söylesem, tahmini parametrenin değeri göre parametrenin gerçek değerine eşit olmaz mı? 300E[θ^]=θ
ABC

glmer()rasgele kesişme varyansını tahmin eder, . Ama diğer varyans bileşeni (artık varyans bileşeni), ilgili herhangi bir tahminσ02σ12summary(glmer(Y~X*Z+(1|cluster),family=binomial,data=sim_data,nAGQ=10))
ABC

2
GLMM tahmini için kullandığımız yaklaşık değerlerin tarafsız olduğunu varsayıyorsunuz. Muhtemelen bu doğru değildir; Daha iyi yaklaşımlar (değil PQL) çoğu asimptotik tarafsız, ama yine de sonlu boyutlu numuneler için önyargılı ediyoruz.
Ben Bolker

1
@ABC: Evet, bu bağlantıların her ikisi de bir kod parçasının birden çok kez nasıl kopyalanacağına ilişkin örnekler içerir. Kodunuzu bir işleve sarmak ve replicate komutunu çalıştırmak kolay olmalıdır.
Ryan Simmons

1
@ABC: Sorunuzun diğer kısmına gelince, sizi rahatsız eden şey konusunda biraz kafam karıştı. Rastgele sayılar üretiyorsunuz; yuvarlama veya sonsuz sayıda replikasyon olmadan, hiçbir zaman önyargı ile tam olarak 0 elde edemezsiniz (ya da, gerçekten, HERHANGİ parametrenin tam olarak kesin bir tahmini). Bununla birlikte, yeterince sayıda replikasyonla (örneğin, 1000), çok küçük (0'a yakın) bir önyargı alma olasılığınız yüksektir. Çoğaltmaya çalıştığınız alıntı, bunu gösterir.
Ryan Simmons
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.