Hangi önyüklemeli regresyon modelini seçmeliyim?


10

Bir DV (hastalık: evet / hayır) ve 5 öngörücüye (demografi [yaş, cinsiyet, tütün kullanımı (evet / hayır)], tıbbi bir indeks (sıralı) ve bir rastgele tedaviye sahip bir ikili lojistik regresyon modelim var (evet / hayır) ]). Ayrıca tüm iki taraflı etkileşim terimlerini de modelledim. Ana değişkenler ortalanmıştır ve çoklu doğrusallık belirtisi yoktur (tüm VIF'ler <2.5).

Birkaç sorum var:

  1. Önyükleme tekli modelime göre avantajlı mı? Öyleyse,

  2. hangi önyüklemeli modeli seçmeliyim? Sadece önyükleme algoritmalarının yeni örnekler oluşturmak için rastgele yöntemleri izleyip izlemediğini veya katı algoritmalara sahip olup olmadığını görmek istedim. Bu nedenle, her denemede 1000 kez yeniden örnekledim (bu yüzden her biri 1000 deneme içeren birkaç önyükleme modelim var). Bununla birlikte, bootstrapped modelinin katsayıları her seferinde farklıdır (deneme sayısı sürekli 1000 olmasına rağmen). Raporum için hangisini seçmeliyim acaba? Bazı değişiklikler küçüktür ve katsayılarımın önemini etkilemez, ancak bazıları katsayılarımın bazılarını anlamsız hale getirir (yalnızca orijinal modelde 0,06'ya yakın olan ve örneğin 0,06'ya değişen P değerleri olanlar).

  3. 10.000 gibi daha yüksek bir sayı seçmeli miyim? Bu sınırı nasıl belirleyebilirim?

  4. Yine ilk etapta bootstrap mi yapmalıyım? Sonuçları her seferinde değişirse, sonuçlarına güvenebilir miyim?

  5. Aklımda bana yardımcı olabilecek başka fikirleriniz var mı?

Çok çok teşekkürler.

Yanıtlar:


21

Bootstrapping , regresyon katsayılarınızın örnekleme dağılımını tahmin etmek ve bu nedenle regresyon katsayılarınızın standart hatalarını / güven aralıklarını hesaplamak için bir yeniden örnekleme yöntemidir. Bu gönderinin güzel bir açıklaması var. Kaç kopyaya ihtiyacınız olduğuna dair tartışma için bu gönderiye bakın .

  1. Parametrik olmayan bootstrap örnekleri tekrar tekrar ve rasgele olarak gözlemlerinizi yerine koyma ile çizer (yani bazı gözlemler sadece bir kez, diğerleri birden fazla kez ve bazıları asla hiç olmaz), daha sonra lojistik regresyonu hesaplar ve katsayıları depolar. Bu tekrarlanırnzamanlar. Böylece 10.000 farklı regresyon katsayısı elde edersiniz. Bu 10'000 katsayısı daha sonra güven değerlerini hesaplamak için kullanılabilir. Yalancı rasgele bir sayı üreteci kullanıldığından, her seferinde tam olarak aynı sonuçlara sahip olduğunuzdan emin olmak için tohumu rastgele bir sayıya ayarlayabilirsiniz (aşağıdaki örneğe bakın). Gerçekten istikrarlı tahminler yapmak için 1000'den fazla tekrarlama, belki 10'000 önerebilirim. Bootstrap'i birkaç kez çalıştırabilir ve 1000 veya 10.000 yineleme yapsanız da tahminlerin çok değişip değişmediğini görebilirsiniz. Düz İngilizce: yakınsama ulaşana kadar çoğaltmaları almalısınız. Önyükleme tahminleriniz tahminleriniz ile gözlenen tek model arasında değişiklik gösteriyorsa, bu gözlemlenen modelin örneğinizin yapısını uygun şekilde yansıtmadığını gösterebilir.bootRörneğin, tekli modelinizin regresyon katsayıları ile bootstrap örneklerinin ortalaması arasındaki fark olan "sapma" yı ortaya koyar.
  2. Bootstrap gerçekleştirirken, tek bir bootstrap örneğiyle değil, 10.000 bootstrap örneğine göre istatistiklerin (örneğin regresyon katsayıları) dağılımıyla ilgileniyorsunuz.
  3. 10.000'in 1000'den daha iyi olduğunu söyleyebilirim. Modern Bilgisayarlarda bu bir sorun teşkil etmemelidir. Aşağıdaki örnekte, 10.000 örnek çizmek bilgisayarımı yaklaşık 45 saniye sürdü. Bu elbette örneklem büyüklüğünüze göre değişir. Numune boyutunuz ne kadar büyük olursa, her gözlemin dikkate alınmasını sağlamak için yineleme sayısı o kadar fazla olmalıdır.
  4. Ne demek "sonuçlar her seferinde değişir"? Her önyükleme adımında, gözlemlerin değiştirilerek yeni çizildiğini hatırlayın. Bu nedenle, gözlemleriniz farklı olduğu için biraz farklı regresyon katsayıları elde edersiniz. Ama dediğim gibi: tek bir bootstrap örneğinin sonucuyla gerçekten ilgilenmiyorsunuz. Çoğaltma sayınız yeterince yüksek olduğunda, bootstrap her seferinde çok benzer güven aralıkları ve nokta tahminleri vermelidir.

İşte bir örnek R:

library(boot)

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")

head(mydata)

mydata$rank <- factor(mydata$rank)

my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")

summary(my.mod)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.989979   1.139951  -3.500 0.000465 ***
gre          0.002264   0.001094   2.070 0.038465 *  
gpa          0.804038   0.331819   2.423 0.015388 *  
rank2       -0.675443   0.316490  -2.134 0.032829 *  
rank3       -1.340204   0.345306  -3.881 0.000104 ***
rank4       -1.551464   0.417832  -3.713 0.000205 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

# Set up the non-parametric bootstrap

logit.bootstrap <- function(data, indices) {

  d <- data[indices, ]
  fit <- glm(admit ~ gre + gpa + rank, data = d, family = "binomial")

  return(coef(fit))
}

set.seed(12345) # seed for the RNG to ensure that you get exactly the same results as here

logit.boot <- boot(data=mydata, statistic=logit.bootstrap, R=10000) # 10'000 samples

logit.boot

Bootstrap Statistics :
        original        bias    std. error
t1* -3.989979073 -7.217244e-02 1.165573039
t2*  0.002264426  4.054579e-05 0.001146039
t3*  0.804037549  1.440693e-02 0.354361032
t4* -0.675442928 -8.845389e-03 0.329099277
t5* -1.340203916 -1.977054e-02 0.359502576
t6* -1.551463677 -4.720579e-02 0.444998099

# Calculate confidence intervals (Bias corrected ="bca") for each coefficient

boot.ci(logit.boot, type="bca", index=1) # intercept
95%   (-6.292, -1.738 )  
boot.ci(logit.boot, type="bca", index=2) # gre
95%   ( 0.0000,  0.0045 ) 
boot.ci(logit.boot, type="bca", index=3) # gpa
95%   ( 0.1017,  1.4932 )
boot.ci(logit.boot, type="bca", index=4) # rank2
95%   (-1.3170, -0.0369 )
boot.ci(logit.boot, type="bca", index=5) # rank3
95%   (-2.040, -0.629 )
boot.ci(logit.boot, type="bca", index=6) # rank4
95%   (-2.425, -0.698 )

Bootstrap-ouput, orijinal regresyon katsayılarını ("orijinal") ve sapmalarını görüntüler; bu, orijinal katsayılarla önyükleme yapılmış olanlar arasındaki farktır. Ayrıca standart hatalar verir. Orijinal standart hatalardan biraz daha büyük olduklarını unutmayın.

Güven aralıklarından, önyargı düzeltmeli ("bca") genellikle tercih edilir. Orijinal ölçekte güven aralıkları verir. Oran oranları için güven aralıkları için, güven sınırlarını katlayın.


Mükemmel cevap için teşekkür ederiz! :) Bu şekilde cevap vereyim: 1. Ben onun fikrine biraz aşinaydım (1000 farklı (yeniden örneklenmiş) modelde 1000 farklı katsayının ortalamasını hesaplamaya çalışır). "Önyargı" olan şeyi ve bu tür değişikliklerin gerçekleştiğini açıkladığınız için teşekkür ederiz. Deneme sayısını artırmalıyız. :) 2. "Bootstrapped model" ile tek bir yeniden örneklenmiş model demek istemedim. Ancak, bu 1000 yinelemenin ortalaması demek istedim. Aslında her biri 1000 yineleme için modelimi 10 kez açtım. Elimde 10 önyükleme modeli var.
Vic

Her biri "farklı" bir sonuç gösterir. Ancak yineleme sayısının 10.000'de olup olmadığını görmek için 10.000 yeniden örnekleme ile üç veya dört önyükleme modelini denerdim, farklı önyükleme modelleri (her biri 10000 olan) benzer mi yoksa 100000'i daha mı artırmalıyım?
Vic

@Vic Yorumunuz için teşekkürler. Her biri 1000 yineleme ile 10 önyükleme yapmazdım, sadece 10.000 veya daha fazla yineleme (50'000?). Bu size istikrarlı tahminler ve güven aralıkları vermelidir.
COOLSerdash

3. Bunun bir sorun olmadığından emin olun. Sadece bu sayıyı hangi temelde seçmesi gerektiğini bilmek istedim. Bence her biri 1000 denemeden oluşan iki bootstrappings çalıştırıp farklı olduklarını görürsem bunun yerine daha fazla yeniden örnekleme denemesine (örneğin 5000 veya 10000) ihtiyacım olabilir.
Vic

4. "Ne demek" sonuçlar her seferinde değişir "ne demek? Çoğaltma sayınız yeterince yüksek olduğunda, bootstrap her seferinde çok benzer güven aralıkları ve nokta tahminleri vermelidir."
Vic
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.