Önyükleme, Monte Carlo


12

Ödevin bir parçası olarak şu soruyu belirledim:

Tek değişkenli bir veri örneği üzerinden% 95 güven aralığı elde etmek için önyüklemenin performansını incelemek için bir simülasyon çalışması tasarlayın ve uygulayın. Uygulamanız R veya SAS olabilir.

Bakmak isteyebileceğiniz performans özellikleri, güven aralığı kapsamıdır (yani, güven aralığının gerçek ortalamayı kaç kez içerdiği) ve Monte Carlo varyasyonu (yani, üst ve alt güven sınırlarının simülasyonlar arasında ne kadar değiştiği).

Bunun Monte Carlo varyasyon yönünü nasıl öğreneceğini bilen var mı? Bir algoritma falan bile çalışamıyorum. Monte Carlo entegrasyonu ile mi ilgili? Teşekkürler!

Yanıtlar:


18

Bootstrap prosedürleri ile Monte Carlo prosedürleri arasındaki bu karışıklık tekrarlamaya devam ediyor, bu yüzden belki de bu, ele alınması gereken herhangi bir yer. ( RKod örnekleri ev ödevlerinde de yardımcı olabilir.)

Bootstrap'in bu uygulamasını şu şekilde düşünün :R

boot <- function(x, t) { # Exact bootstrap of procedure t on data x
    n <- length(x)       # Must lie between 2 and 7 inclusive.
    if (n > 7) {
        stop("Sample size exceeds 7; use an approximate method instead.")
    }
    p <- c(n, 1:(n-1))
    a <- rep(x, n^(n-1))
    dim(a) <- rep(n, n)
    y <- as.vector(a)
    while (n > 1) {
        n <- n-1
        a <- aperm(a, p)
        y <- cbind(as.vector(a), y)
    }
    apply(y, 1, t)
}

Hızlı bir bakış, bunun deterministik bir hesaplama olduğunu teyit edecektir : rastgele değerler üretilmez veya kullanılmaz. (İlgilenen okuyucuların kendileri için anlamaları için iç çalışmalarının ayrıntılarını bırakacağım.)

Bağımsız değişkenler boot, dizideki sayısal veri grubu xve tek bir sayısal değer döndürmek tiçin bir işleve (tam olarak olduğu gibi dizilere uygulanabilen) bir başvurudır x; diğer bir deyişle, tbir istatistiktir . Tüm olası örnekleri her birinden değiştirerek üretir xve tbunlara uygulanır , böylece her bir örnek için bir sayı üretir: bu kısaca bootstraptir. Dönüş değeri temsil eden bir dizi tam önyükleme dağılımına ait tnumune için x.

Küçük bir örnek olarak , bir örnek için ortalamayı başlatalım x= c(1,3):

> boot(c(1,3), mean)
> [1] 1 2 2 3

Gerçekten de ( 1 , 3 ) ' ten değiştirilen boyutta dört olası numune vardır ; yani, ( 1 , 1 ) , ( 1 , 3 ) , ( 3 , 1 ) ve ( 3 , 3 ) . hepsini oluşturur (listelenen sırayla) ve her biri için geçerlidir . Bu durumda ortalamayı hesaplar ve bunlar 1 , 2 , 2 ve 3 olur2(1,3)(1,1)(1,3)(3,1)(3,3)boottt1223, çıkışta gösterildiği gibi.

Buradan nereye gideceğiniz, bootstrap'i nasıl kullanmak istediğinize bağlıdır. Tam bootstrap hakkında bilgiler yüzden görüntülemek için iyi bir fikir genellikle var, bu çıkış dizisinde bulunur. Standart sapmanın örnekten önyüklendiği bir örnek :(1,3,3,4,7)

hist(boot(c(1,3,3,4,7), sd))

SD histogramı

5

> set.seed(17)
> quantile(boot(runif(5, min=0, max=10), sd), .95)[1]
     95% 
3.835870 

Bu özel rasgele örnek için sonuç 3.83587'dir. Bu kesindir: Aynı veri kümesiyle boottekrar arayacak olsaydınız, cevap tamamen aynı olurdu. Peki cevap farklı rastgele örneklerle nasıl değişebilir? Bu işlemi birkaç kez tekrarlayarak ve sonuçların bir histogramını çizerek öğrenin:

> boot.sd <- replicate(100, quantile(boot(runif(5, min=0, max=10), sd), .95)[1])
> hist(boot.sd)

Simülasyonların histogramı

01010/122.887

> length(boot.sd[boot.sd >= 10/sqrt(12)]) / length(boot.sd)
[1] 0.75

Ama bu, belirttiğimiz (ve umduğumuz) nominal% 95'e yakın bir yerde değil! Bu bir simülasyon değeri: umutlarımızı gerçekte olanlarla karşılaştırıyor. (Neden tutarsızlık? Bunun bir SD'nin önyüklemesinin gerçekten küçük örneklerle iyi çalışmamasından kaynaklandığına inanıyorum.)

gözden geçirmek

  • Önyükleme istatistikleri kavramsal olarak ortalama veya standart sapma gibi diğer istatistiklerle aynıdır; hesaplanması uzun zaman alıyor. (Koddaki uyarı mesajına bakın boot!)

  • Monte-Carlo simülasyonu, bir bootstrap istatistiğinin örneklerin elde edilmesindeki rastgelelik nedeniyle nasıl değiştiğini incelemek için yararlı olabilir. Bu simülasyonda gözlenen varyasyon, önyüklemedeki varyasyondan değil , numunelerdeki varyasyondan kaynaklanmaktadır .

  • nnn


+1 Bu çok hoş. Daha iyi yapabileceğimi sanmıyorum! Sadece hata oranı tahmininde ve varyansları tahmin ederken güven aralıkları için önyüklemenin performansı hakkında bazı makalelerim olduğunu ekleyeceğim. Bu sonuçlar bootstrap yöntemleri kitabımın ikinci baskısında ve R ile yapılan uygulamalarla bootstrapping ile ilgili kitabımda bulunabilir
Michael R. Chernick


Ben sadece fikrin bilinen dağıtımlardan veri benzetmek için ilgi bootstrap prosedürü uygulamak olduğunu söyleyebilirim (örneğin bir parametre veya bir sınıflandırıcının hata oranı tahmini için güven aralıkları) ve gerçeği bildiğiniz için ne kadar iyi değerlendirebilirsiniz.
Michael R. Chernick

5

Bootstrap, bir tür rastgele örnekleme içerdiği için Monte Carlo tekniğidir. Bootstrap'i aynı veri kümesinde iki kez çalıştırırsanız, farklı yanıtlar alırsınız. Bootstrap'inizde ne kadar çok örnek kullanırsanız o kadar az varyasyon elde edersiniz.

Kapsam, aynı varsayımsal örnekleme dağılımından farklı veri kümelerindeki sonuçların varyasyonunu ifade eder.


teşekkürler, sadece güven sınırlarının simülasyonlar arasında değişip değişmediğini görmek için kod bulmak anlamına geldiğini varsayacağım!
Sarah

7
Kesin olmak gerekirse (bilgiçlik?), Bootstrap'in kendi başına bir Monte Carlo tekniği olmadığını açıklığa kavuşturmalıyız . Bununla birlikte, genellikle ilgili Carlo miktarlarını hesaplamak çoğu zaman izlenebilir olmadığından genellikle Monte Carlo simülasyonu kullanılarak tahmin edilir. Sorunun ifadesini de yanlış yorumlamaya çok eğilimli buluyorum! Bir ayırt etmek dikkatli olmalı örnekleme hatası dan Monte Carlo yaklaşım hatası. İkincisi, MC bootstrap yaklaşımını işaret ettiğiniz gibi aynı örnek üzerinde birçok kez tekrarlayarak anlamlı bir şekilde tahmin edilir . :)
kardinal

1

Ben de tam olarak " Monte Carlo varyasyonu" ile ne kastedildiğinden emin değilim . Kuşkusuz, üst (veya alt) sınırın değeri, örneğin (ipucu) gibi şeylerde yinelemeler arasında ne kadar varyasyon olduğuna bakmak mümkün olmalıdır. Belki de bunu sadece Monte Carlo için yapmanızı istiyorlar, bootstrap için değil? Yine de, bu bir egzersiz için bir gereklilik değil. Bu cümle ile ne kastedildiğini sormak en iyisi olabilir.


Yardımın için teşekkürler! Belki de şimdilik üst ve alt sınırlar arasındaki farklılığa bakacağım ve daha sonra Monte Carlo hakkında soracağım. Şimdi sadece bununla ilgili nasıl çalıştığımı çözmek için ..
Sarah

Burada birkaç olasılık var. Biri üst-alttır (yani fark). Sorudaki ifadeyi yorumlamam üstteki varyasyon ve alttaki varyasyon (yani 2 farklı varyasyon), ancak sanırım emin olamıyorum. Farklı bir notta, R'de MC simülasyonunu nasıl yapacağınız sorunuzun bir parçası mı?
gung - Monica'yı eski durumuna getirin

2 farklı varyasyon da aradığı sonucuna vardım, bu yüzden bunu deneyeceğim!
Sarah

1
Merak ediyorum, şu anda merak ediyorum, bu noktaya gitmekte iyi misiniz, yoksa sorunun sorduğunu tahmin ettiğimiz şeye nasıl yaklaşacağınız hakkında ek ipuçlarına mı ihtiyacınız var?
gung - Monica'yı eski durumuna getirin

1
Her yinelemede, üst ve alt sınırları (ipucu) saklıyor musunuz?
gung - Monica'yı eski durumuna getirin

1

Bu ev ödevi konusundaki anlayışım, belirli bir istatistik tekniği için bir Monte Carlo simülasyonu yapmanızı istemesidir. Yani, bir grup rastgele veri setini simüle eder, bu tekniği bu veri setine uygular ve daha sonra uygun bir şekilde özetlemek için sayıları saklarsınız (araçlar, simüle edilmiş olasılıklar, vb.)

Şimdi, söz konusu teknik, içinde Monte Carlo simülasyonunu içeren bootstrap (whuber'ın gösterdiği gibi, kesinlikle olası olmayan bootstrap'i yapmanız istenmediği sürece). Simülasyonlarınızın sonuçları olarak, örnek ortalamasını, örnek standart sapmasını ve bootstrap tarafından elde edilen ortalama için güven aralığının sınırlarını saklıyor olabilirsiniz.

n=10


3
Kesin bootstrap ile çalışmayı öğrendiğim bir şey, standart normal teori CI'nin eğilmiş olsalar bile küçük numunelerle genellikle daha iyi çalışacağıdır . Bootstrap büyük örneklerle kendi kendine gelir: teori asimptotiktir, kesin değildir.
whuber

2
@whuber, bu ilginç bir gözlem. Genellikle bootstrap'ın asimptotik doğasını vurgularım (nedenini anlamak için Peter Hall'un Bootstrap ve Edgeworth Genişletme kitabına bakın), ancak bu sefer yapamadı.
StasK
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.