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 .
- 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.
boot
R
örneğin, tekli modelinizin regresyon katsayıları ile bootstrap örneklerinin ortalaması arasındaki fark olan "sapma" yı ortaya koyar.
- 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.
- 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.
- 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.