Kesik dağılım ne anlama geliyor?


14

Dinamik bir sistemin sıradan bir diferansiyel denklem modelinin duyarlılık analizi hakkındaki bir araştırma makalesinde yazar, bir model parametresinin Normal dağılım (ortalama = 1e-4, std = 3e-5) aralığına kesilmiş olarak dağılımını sağlamıştır [0.5e -4 1.5e-4]. Daha sonra modelin simülasyonları için bu kesik dağılımdan örnekler kullanır. Bu kesik dağılımdan kesik bir dağılım ve örnek olması ne anlama gelir?

Bunu yapmanın iki yolu olabilir:

  • Normal dağılımdan örnek alın, ancak simülasyonlardan önce belirtilen aralığın dışında kalan tüm rastgele değerleri yok sayın.
  • Bir şekilde özel bir "Kesik Normal" dağılımı elde edin ve ondan örnekler alın.

Bunlar geçerli ve eşdeğer yaklaşımlar mı?

İlk durumda inanıyorum, eğer bir örnek deneysel cdf / pdf çizmek olsaydı, eğrileri uzanmaz çünkü Normal dağılım gibi görünmeyecekti .±

Yanıtlar:


16

Bir dağılımı kısaltmak, değerlerini bir aralıkla sınırlamak ve bu aralık üzerindeki integralin 1 olması için yoğunluğu yeniden normalleştirmektir.

Bu nedenle, dağılımını bir aralığa kısaltmak, yoğunluğa sahip rastgele bir değişken oluşturmak olacaktır.( a , b )N(μ,σ2)(a,b)

pa,b(x)=ϕμ,σ2(x)abϕμ,σ2(y)dyI{x(a,b)}

burada olan yoğunluğu. Bu yoğunluktan birkaç şekilde örnekleme yapabilirsiniz. Bunu yapmanın bir yolu (aklıma gelen en basit yol), değerleri üretmek ve aralığının dışında kalanları atmaktır . Evet, listelediğiniz bu iki madde işareti de aynı hedefe ulaşacaktı. Ayrıca, bu dağılımdaki değişkenlerin ampirik yoğunluğunun (veya histogramının) uzanmayacağı konusunda haklısınız . Elbette ile sınırlıdır .N ( μ , σ 2 ) N ( μ , σ 2 ) ( a , b ) ± ( a , b )ϕμ,σ2(x)N(μ,σ2)N(μ,σ2)(a,b)±(a,b)


17

Normal simülasyonu dağıtım sonuç bir aralık içine düşen kadar ince olduğu zaman olasılığı yeterince büyük. Çok küçükse, bir kabul için ortalama çekiliş sayısı olduğu için bu prosedür çok maliyetlidir .( a , b ) ϱ = b a φ μ , σ 2 ( x )N(μ,σ2)(a,b)1 / ϱ

ϱ=abφμ,σ2(x)dx
1/ϱ

Tarif edildiği gibi Monte Carlo İstatistiksel Yöntemler , yanı sıra (Bölüm 2, Örnek 2.2) , benim arXiv kağıt , daha verimli bir şekilde, bir üstel göre bir-kabul reddetme yöntemi kullanmak için, bu normal kesildi simüle etmek dağılımı.E(α)

Genelliği kaybetmeden ve durumunu düşünün . Tüm , potansiyel bir aracı dağıtım tercüme üstel dağılımı, , yoğunluk ile Daha sonra oranı sınırlanır tarafından ise tarafından başka şekilde. Karşılık gelen (üst) sınır μ=0σ=1b=+E(α,a)

gα(z)=αeα(za)Iza.
pa,(z)/gα(z)eα(za)ez2/2
exp(α2/2αa)α>aexp(a2/2)
{1/αexp(α2/2αa)if α>a,1/αexp(a2/2)otherwise.
İlk ifade , ikinci sınırı en aza indirir. için optimum seçim (1) 'dir.
α=12a+12a2+4,(1)
α~=aα

2
Bir şeyi kaçırıyor olabilirim, ancak sadece alıp nedir? Bu istenen dağılımı vermiyor mu? UUnif(Φ(a),Φ(b))X=Φ1(U)
bnaul

2
@bnaul: Bu ters cdf dönüşümünü temel alarak tamamen doğrudur. Bununla birlikte normal dağılımın kuantil fonksiyonunun çok yüksek bir hassasiyete getirilmesi anlamına gelir. Özellikle , çok daha büyük olduğunda . a0
Xi'an

1
Xi'an haklı, @bnaul. qnormR döngüsünde koşmak iyi bir fikir değildir.
Stéphane Laurent

@ Xi'an: Bu doğru, ancak bu işlevler keyfi bir hassasiyete sahip olacak şekilde tasarlanabilir.
Neil G

9

Normal dağılımdan örnek alın, ancak simülasyonlardan önce belirtilen aralığın dışında kalan tüm rastgele değerleri yok sayın.

Bu yöntem doğrudur, ancak @ Xi'an'ın cevabında belirtildiği gibi, aralığın küçük olduğu zaman (daha doğrusu, normal dağılım altında ölçüsü küçük olduğunda) uzun zaman alacaktır.

Diğer herhangi bir dağıtım olarak, ( ters dönüşüm örneklemesi olarak da adlandırılır) ters çevirme yöntemi kullanılabilir; burada , ilgili dağıtımın (kümülatif işlevi) ve . , bir miktar dağılım aralıkta kesilmesiyle elde edilen dağılım olduğunda , bu, ile örneğine eşdeğerdir. .F1(U)FUUnif(0,1)FG(a,b)G1(U)UUnif(G(a),G(b))

Ancak, bu zaten bir yorumda @ Xi'an tarafından belirtilmiştir, bazı durumlar için tersine çevirme yöntemi kuantil fonksiyonunun çok hassas bir değerlendirmesini gerektirir ve ayrıca hızlı bir hesaplanmasını gerektirdiğini de ekleyeceğim . Zaman bir normal dağılım, değerlendirilmesidir oldukça yavaştır ve bu değerleri için son derece hassas olmayan ve arasında "dizi" dış .G1G1GG1abG

Önemli örneklemeyi kullanarak kesik bir dağılımı simüle edin

Bir olasılık önem örneklemesini kullanmaktır . Standart Gauss dağılımı örneğini düşünün . Önceki gösterimleri unutun, şimdi Cauchy dağılımı olsun. Yukarıda belirtilen iki gereksinim için yerine getirilmiştir : biri sadece ve . Bu nedenle, kesik Cauchy dağılımının ters çevirme yöntemi ile örneklenmesi kolaydır ve kesik normal dağılımın önemini örneklemek için enstrümantal değişkenin iyi bir seçimidir.N(0,1)GGG(q)=arctan(q)π+12G1(q)=tan(π(q12))

Biraz basitleştirmeden sonra ve almak ile :UUnif(G(a),G(b))G1(U)tan(U)UUnif(arctan(a),arctan(b))

a <- 1
b <- 5
nsims <- 10^5
sims <- tan(runif(nsims, atan(a), atan(b)))

Şimdi , normalleştirilene kadar iki yoğunluğun oranı olarak tanımlanan her örneklenmiş değeri için ağırlık hesaplanmalıdır , bu nedenle ancak kütük ağırlıklarını almak daha güvenli olabilir: φ ( x ) / g ( x ) a ( x ) = exp ( - x 2 / 2 ) ( 1 + x 2 ) ,xiϕ(x)/g(x)

w(x)=exp(x2/2)(1+x2),
log_w <- -sims^2/2 + log1p(sims^2)
w <- exp(log_w) # unnormalized weights
w <- w/sum(w)

Ağırlıklı örnek , aralığın içine düşen her örneklenmiş değerin ağırlıklarını toplayarak, hedef dağılım altındaki her bir aralığın ölçümünü tahmin sağlar :[ u , v ](xi,w(xi))[u,v]

u <- 2; v<- 4
sum(w[sims>u & sims<v])
## [1] 0.1418

Bu, hedef kümülatif fonksiyonun bir tahminini sağlar. spatsatPaketle hızlı bir şekilde alıp çizebiliriz :

F <- spatstat::ewcdf(sims,w)
# estimated F:
curve(F(x), from=a-0.1, to=b+0.1)
# true F:
curve((pnorm(x)-pnorm(a))/(pnorm(b)-pnorm(a)), add=TRUE, col="red")

ewcdf

# approximate probability of u<x<v:
F(v)-F(u)
## [1] 0.1418

Tabii ki, örnek kesinlikle hedef dağılımının bir örneği değil, enstrümantal Cauchy dağılımının bir örneğidir ve biri , örneğin çok uluslu örnekleme kullanılarak ağırlıklı yeniden örnekleme yaparak hedef dağılımın bir örneğini alır :(xi)

msample <- rmultinom(1, nsims, w)[,1]
resims <- rep(sims, times=msample)
hist(resims) 

dur

mean(resims>u & resims<v)
## [1] 0.1446

Başka bir yöntem: hızlı ters dönüşüm örneklemesi

Olver ve Townsend , geniş bir sürekli dağıtım sınıfı için bir örnekleme yöntemi geliştirdi. Bu uygulanan Matlab chebfun2 kütüphanede hem de Julia için ApproxFun kütüphanesine . Son zamanlarda bu kütüphaneyi keşfettim ve çok umut verici geliyor (sadece rastgele örnekleme için değil). Temel olarak bu tersine çevirme yöntemidir, ancak cdf ve ters cdf'nin güçlü yaklaşımlarını kullanır. Giriş, normalleştirmeye kadar hedef yoğunluk fonksiyonudur.

Örnek basitçe aşağıdaki kodla oluşturulur:

using ApproxFun
f = Fun(x -> exp(-x.^2./2), [1,5]);
nsims = 10^5;
x = sample(f,nsims);

Aşağıda kontrol edildiği gibi, önemli örneklemeyle daha önce elde edilene yakın bir aralığın tahmini bir ölçümünü verir :[2,4]

sum((x.>2) & (x.<4))/nsims
## 0.14191
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.