Standart bootstrap dağıtımı hatası kullanımı


19

(ana sorum dilden bağımsız olduğundan, gerekirse R kodunu yoksayın)

Eğer basit bir istatistiğin değişkenliğine bakmak istersem (ör: ortalama), bunu teori ile yapabileceğimi biliyorum:

x = rnorm(50)

# Estimate standard error from theory
summary(lm(x~1))
# same as...
sd(x) / sqrt(length(x))

veya bootstrap ile:

library(boot)

# Estimate standard error from bootstrap
(x.bs = boot(x, function(x, inds) mean(x[inds]), 1000))
# which is simply the standard *deviation* of the bootstrap distribution...
sd(x.bs$t)

Ancak, merak ediyorum, bazı durumlarda bir bootstrap dağıtımının standart hatasına bakmak yararlı / geçerli (?) Olabilir mi? Karşılaştığım durum, nispeten gürültülü doğrusal olmayan bir işlevdir, örneğin:

# Simulate dataset
set.seed(12345)
n   = 100
x   = runif(n, 0, 20)
y   = SSasymp(x, 5, 1, -1) + rnorm(n, sd=2)
dat = data.frame(x, y)

Burada model orijinal veri kümesini kullanarak bile birleşmiyor,

> (fit = nls(y ~ SSasymp(x, Asym, R0, lrc), dat))
Error in numericDeriv(form[[3L]], names(ind), env) : 
  Missing value or an infinity produced when evaluating the model

bunun yerine ilgilendiğim istatistikler , bu nls parametrelerinin daha kararlı tahminleridir - belki de bir dizi bootstrap replikasyonu arasındaki araçları.

# Obtain mean bootstrap nls parameter estimates
fit.bs = boot(dat, function(dat, inds)
              tryCatch(coef(nls(y ~ SSasymp(x, Asym, R0, lrc), dat[inds, ])),
                       error=function(e) c(NA, NA, NA)), 100)
pars = colMeans(fit.bs$t, na.rm=T)

İşte bunlar, orijinal verileri simüle etmek için kullandığım top parkında:

> pars
[1]  5.606190  1.859591 -1.390816

Çizilmiş bir sürüm şöyle görünür:

# Plot
with(dat, plot(x, y))

newx = seq(min(x), max(x), len=100)
lines(newx, SSasymp(newx, pars[1], pars[2], pars[3]))

lines(newx, SSasymp(newx, 5, 1, -1), col='red')
legend('bottomright', c('Actual', 'Predicted'), bty='n', lty=1, col=2:1)

resim açıklamasını buraya girin

Şimdi, bu stabilize parametre tahminlerinin değişkenliğini istiyorsam, bu önyükleme dağılımının normalliğini varsayarak, sadece standart hatalarını hesaplayabileceğimi düşünüyorum:

> apply(fit.bs$t, 2, function(x) sd(x, na.rm=T) / sqrt(length(na.omit(x))))
[1] 0.08369921 0.17230957 0.08386824

Bu mantıklı bir yaklaşım mı? Bunun gibi kararsız doğrusal olmayan modellerin parametrelerinde çıkarımda daha iyi bir genel yaklaşım var mı? (Sanırım son örnek için teoriye güvenmek yerine burada ikinci bir yeniden örnekleme katmanı yapabilirim, ancak modele bağlı olarak çok zaman alabilir. Yine de, bu standart hataların olup olmayacağından emin değilim herhangi bir şey için yararlı olun, çünkü sadece bootstrap çoğaltma sayısını arttırırsam 0'a yaklaşırlar.)

Çok teşekkürler ve bu arada, ben bir mühendisim, bu yüzden lütfen buralarda göreceli bir acemi olmamı affet.

Yanıtlar:


13

Bu soruda birkaç sorun var. Birincisi, bazı ayrı önyükleme tahmin edicilerinin bazıları hesaplanamaz olsa bile (yakınsama eksikliği, çözümlerin yokluğu) bile önyüklemeli ortalamaların anlamlı tahmin ediciler olup olmayacağı sorusu vardır. İkincisi, önyüklemeli tahmin edicilerin mantıklı olduğu göz önüne alındığında, bu tahminler için güven aralıkları veya belki de sadece standart hataların nasıl elde edileceği sorusu vardır.

Önyükleme tahminlerinin ortalamasını alma fikri, aslında zayıf olmasa da, öngörücülerin zayıf performansını tahmin etmek için makine öğreniminde kullanılan önyükleme toplaması veya torbalama ile yakından ilgilidir. Bkz. ESL , Bölüm 8.7. Bazı durumlarda aynı zamanda parametreleri tahmin etmek için bootstrap tahminlerinin ortalaması, sadece orijinal veri setinde tahmin ediciyi kullanmaya kıyasla, ortaya çıkan tahmin edicinin varyansını azaltabilir.-

Bununla birlikte, sorudaki amaç, tahminleri hesaplama algoritmasının zaman zaman başarısız olabileceği veya tahmin edicinin zaman zaman tanımsız olduğu durumlarda bile tahminler üretmektir. Genel bir yaklaşım olarak bir sorun vardır:

  • Tahminleri hesaplanamayan önyükleme örneklerini körü körüne atarken ortalama önyükleme tahminleri genel olarak taraflı sonuçlar verecektir.

Genel sorunun ne kadar ciddi olduğu birkaç şeye bağlıdır. Örneğin, tahmin hesaplanabilir ve numunenin koşullu dağılım tahmin olduğunu olmasına bakmaksızın, ne sıklıkta değil değildir tahmini hesaplanabilir verilen bu numunenin koşullu dağılımından hesaplanabilir farklıdır. Yöntemi kullanmanızı tavsiye etmem.

Sorunun ikinci kısmı için küçük bir gösterime ihtiyacımız var. Eğer orijinal veri setini belirtir bizim tahmincisi şekilde (gerçek değerli ve değer NA almaya izin basitlik için varsayıyorum) orijinal veriler için tahmindir grubu, ve daha sonra önyükleme ortalama etkili bir tahmin edici işlem tek bir desteksiz örneği gösterir burada bağlı olarak, bir olay gösterir , bunun üzerine . Olduğunu, bir desteksiz numunede tahmincisi koşullu beklenti hesaplamakθ θ ( X ) Y, ~ θ ( x ) = E ( θ ( Y ) | X , A ( x ) ) bir ( X ) X θ ( Y ) NA - X,Xθ^θ^(X)Y

θ~(X)=E(θ^(Y)X,A(X))
A(X)Xθ^(Y)NAorijinal örnek ve olay , tahmin edicinin önyüklemeli örnek için hesaplanabilir olması koşuluyla koşullandırma . Gerçek bootstrap hesaplaması, örnekleme tabanlı bir yaklaşımdır .XA(X)θ~(X)

Sorudaki öneri , ve şartlı olarak nin standart sapmasının bir tahmini olan, önyüklemeli tahmin edicilerin ampirik standart sapmasını hesaplamaktır . İstenen standart sapma, standart hata, un standart sapmasıdır . İkincisini öncekinden alamazsınız. Standart hatanın güvenilir bir tahminini elde etmek için ikinci bir önyükleme katmanı kullanmaktan başka bariz ve genel bir yol göremiyorum.xA(x) ~ θ (X)θ^(Y)XA(X)θ~(X)

Standart hatanın kestirimi hakkındaki tartışma, üzerinde koşullandırmanın, kestiricisinin nasıl etkilediğinden bağımsızdır . Etki şiddetliyse, standart hatanın doğru tahminleri ile bile, bir güven aralığı yanıltıcı olacaktır. ˜ θ ( X )A(X)θ~(X)

Düzenle :

Efron'un Model Seçiminden Sonra Çok Güzel Kağıt Tahmini ve Doğruluğu , ikinci bir önyükleme katmanı kullanmadan torbalı bir tahmincinin standart hatasını tahmin etmek için genel bir yöntem verir. Bu makale, zaman zaman hesaplanamayan tahmin edicileri açık bir şekilde ele almamaktadır.


Müthiş cevap için teşekkürler. İlgili noktası önyargı özellikle iyi alınır. Nokta bulutunun tamamen tekdüze olduğu uç bir durumu hayal edebilirsiniz, modele çok iyi uyan tek bir uzak nokta kümesi için tasarruf edin. Uyumların büyük çoğunluğu nlsbaşarısız olabilir, ancak yakınlaşanlardan önyargı büyük olacak ve tahmin edilen standart hatalar / CI'ler sahte bir şekilde küçük olacaktır. nlsBoot% 50 başarılı uyum için özel bir gereksinim kullanır, ancak koşullu dağıtımların (dis) benzerliğinin aynı derecede endişe duyduğunu kabul ediyorum.
John Colby

(Bu site bana SO gibi izin veriyorsa yarın size bir bonus vermeye çalışacağım)
John Colby
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.