Simpleks'ten tek tip örnekleme


29

N sayılarının toplamı 1 olan ve tüm sayıların 0 ve 1 arasında olduğu bir N rasgele sayı dizisi üretmek için bir algoritma arıyorum. Örneğin, N = 3, rasgele nokta (x, y, z) üçgenin içine girmelidir:

x + y + z = 1
0 < x < 1
0 < y < 1
0 < z < 1

İdeal olarak, alandaki her noktanın eşit olasılıkta olmasını istiyorum. Çok zorsa, ihtiyacı bırakabilirim. Teşekkürler.


Hedef dağılımı nedir? Ne denedin
Raphael

3
Her zaman reddedilme örneklemesinin olduğunu unutmayın : örnek tekdüze sayılar ve sayılar kadar eklenmezse reddedilir . Burada, beklenen yineleme sayısı rahatsız edici derecede yüksektir, bu nedenle başka bir şey yapmalısınız. n1
Raphael

Yanıtlar:


28

İlk önce içinde örneklemek istediğinizi varsayalım

x + y + z = 1
0 ≤ x ≤ 1
0 ≤ y ≤ 1
0 ≤ z ≤ 1

Bu, bir fark yaratmaz, çünkü numune noktası talep ettiğiniz alanda yüksek olasılıkla yatmaya devam edecektir.

Şimdi bir simpleks noktasından bir örnekleme ile kaldı . 3B örneğinde, 3B'de gerçekleştirilen 2d tek taraflı (üçgen) elde edersiniz.

Bu blog yazısında rastgele eşit bir nokta nasıl seçildi (yorumlara bakınız).

Sorununuz için aralıktan ( 0 , 1 ) rasgele sayı almanız, ardından sayılarının bir listesini almak için 0 ve 1 ekleyeceğiniz anlamına gelir . Listeyi sıralar ve ardışık iki öğe arasındaki farkları kaydedersiniz. Bu size kadar olan sayısının bir listesini verir . Üstelik bu örnekleme tek tip. Bu fikir, Donald B. Rubin'de, Bayesyen bootstrap Ann'de bulunabilir. Devletçi. 9, 1981, 130-134.n1(0,1)01n+1n1

Örneğin ( ) üç rastgele sayıya sahipsiniz, daha sonra sıralı diziyi elde edersiniz ve bu farkları verir ve bu dört sayıyı inşa ederek 1'e kadar toplar.n=40.4 0.2 0.10 0.1 0.2 0.4 10.1 0.1 0.2 0.6

Başka bir yaklaşım şudur: ilk önce hiperküpten numune (ki onu unutursun x+y+z=1) ve sonra numune noktasını normalleştir. Normalizasyon bir çıkıntıdır için -hypercube -simplex. Simpleksin ortasındaki noktaların dıştan ziyade "görüntü-ön-noktalarına" sahip olduğu sezgisel olarak anlaşılmalıdır . Bu nedenle, hiper küpten düzenli olarak örnek alırsanız, bu size simpleks'te muntazam bir örnekleme vermeyecektir. Ancak, uygun bir Üstel Dağılıma sahip hiper küpten örnek alırsanız, bu etki ortadan kalkar. Şekil size her iki yöntemin nasıl örnekleyeceği hakkında bir fikir vermektedir. Ancak, basit şekli nedeniyle "sıralama" yöntemini tercih ederim. Uygulaması da daha kolay.dd1

2 örnekleme yöntemine örnek


Sanırım saf fikir - ( 0 , 1 ) ' den sayıları çiz ve normalleştir - o zaman hatalı. n(0,1)
Raphael

Sorunuzu genişletilmiş cevapta ele aldım.
A.Schulz

1
Sıralamanın düzgün bir dağılım verdiğini gösteren basit bir kanıt var mı? Olasılıkta sadece temel geçmişe sahibim, böylece kağıt başımın üstünde.
Chao Xu

5
n(0,1)nn1(0,1)

1
@Orient: Lütfen ayrı bir mesajla size sorular sorun ve bunun için yorumları yanlış kullanmayın.
A.Schulz

8

Bu mevcut cevaplara eklemek içindir.

Devroye , bu tür sorular için mükemmel bir referanstır. Bölüm 7, OP'nin peşinde olduğu tekdüze sıra istatistikleri oluşturmak için gereken algoritmaları verir.

n[0,1]O(nlogn)nx1,,xnExp(1)

(yi)1in=1ixj1nxj
O(n)

[0,1]2x+3y+z=5


Buradaki cevabı takip edersem: stackoverflow.com/questions/2106503/… Daha sonra üstel dağılımdan rasgele sayı üretmek, biraz yavaş olabilen logaritmayı değerlendirmeyi içerir.
R zu

3
X[0] = 0
for i = 1 to N-1
    X[i] = uniform(0,1)
X[n] = 1
sort X[0..N]
for i = 1 to N
    Z[i] = X[i] - X[i-1]
return Z[1..N]

Burada, uniform(0,1)bağımsız bir şekilde ve 0 ile 1 arasında eşit olarak dağılmış bir gerçek sayı döndürür.


5
Bu A. Schulz'un açıklamasız koddaki cevabı, değil mi?
Raphael

1

Bu makaleye bakınız : Smith, N. ve Tromble, R., Ünite simpleksinden eşit şekilde örnekleme .


2
Lütfen cevabınızı okunaklı bir biçimde biçimlendirin: bibtex derleyicisini değil, insanlar için yazıyorsunuz. Ayrıca, makale çevrimiçi olarak sunuluyorsa, bağlantı sağlamanız çok daha etkilidir.
David Richerby
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.