Sahte tekdüze rasgele sayılar: Gerçek tekdüze verilerden daha eşit dağıtılmış


43

Tek tip dağılmış gibi görünen rasgele sayılar üretmenin bir yolunu arıyorum - ve her test tek tip olduklarını gösterecek - gerçek tek tip verilerden daha eşit dağılmış olmaları dışında .

"Doğru" düzgün rastgele rastgele rastlamamdaki sorun, zaman zaman kümelenecek olmalarıdır. Bu etki, düşük bir örneklem boyutunda daha güçlüdür. Kabaca şöyle dedi: U [0; 1] 'de iki Düzgün rastgele rasgele çizdiğimde, olasılıklar% 0.1,% 1 ve% 1 aralığında olduklarını gösteriyor.

Bu yüzden tek tip rastgele rastgele daha eşit dağıtılmış rasgele sayılar oluşturmak için iyi bir yol arıyorum .

Örnek olay kullanın: bilgisayar oyunu yapıyorum ve hazineyi rasgele bir haritaya koymak istiyorum (başka bir şeyi umursamıyorum). Hazinenin tek bir yerde olmasını istemiyorum, haritanın her tarafında olmalı. Tekdüze rastgele, eğer 10 nesne yerleştirirsem, şanslar birbirine çok yakın ya da çok 5 olması kadar düşük değildir. Bu, bir oyuncuya diğerine göre avantaj sağlayabilir. Mayın Tarlası'nı düşünün, olasılıklar (düşük de olsa, mayın varsa) gerçekten şanslısınız ve tek bir tıklama ile kazanıyorsunuz.

Sorunum için çok saf bir yaklaşım, verileri bir ızgaraya bölmek. Sayı yeterince büyük (ve faktörlere sahip) olduğu sürece, bu şekilde ekstra tekdüzelik elde edilebilir. Böylece U [0; 1] 'den 12 rasgele değişken çizmek yerine, U [0; 5]' ten 6 ve U [0.5; 1] 'den 6 ya da U [0; 1/3] + 4'ten 6 çizebilirim U [1/3; 2/3] + 4'ten U [2/3; 1].

Bu ekstra düzgünsüzlüğü üniformaya sokmanın daha iyi bir yolu var mı? Muhtemelen sadece toplu rasgele işlemler için işe yarar (tek rasgele bir rasgele çizim yaparken, kesinlikle tüm aralığı dikkate almam gerekir). Özellikle, daha sonra kayıtları tekrar karıştırabilirim (bu yüzden ilk üçte bir ilk 4 değil).

Artımlı olarak yapmaya ne dersiniz? Yani, ilk önce U [0; 1], sonra her yarıdan iki, üçte biri, her dörtte biri mi? Bu araştırılmış ve ne kadar iyi? Bunları birbirleriyle ilişkilendirmemek için x ve y için farklı jeneratörler kullanmaya dikkat etmem gerekebilir (ilk xy her zaman alt yarıda, ikinci sol yarıda ve alt üçüncü, üçüncü üçüncü ve üçüncü üçüncü olur. .. en azından bazı rasgele çöp kutusu permütasyonuna da ihtiyaç var ve uzun vadede, çok bile olacak sanırım.

Bir yan düğüm olarak, bazı dağılımların gerçekte tek biçimli olamayacak kadar eşit dağılmış olup olmadığı iyi bilinen bir test var mı ? Bu yüzden "gerçek üniforma" ve "birisi verilerle uğraştığında ve öğeleri daha eşit bir şekilde dağıtırken" test edildi. Doğru hatırlıyorsam, Hopkins Statistic bunu ölçebilir, ancak test için de kullanılabilir mi? Ayrıca biraz ters KS-Testi: en büyük sapma beklenen bir eşiğin altındaysa, veriler çok düzgün dağıtılır mı?


7
Halton dizilerini duydunuz mu? "Çok düzgün" için, insanlar (Fisher'ın Mendel'in bezelye deney sonuçlarını araştırmasıyla başlayan), (normal) ki-kare istatistiğine ki-kare dağılımının alt kuyruğuna atıfta bulundu .
whuber

Bu formalizing bir yolu, bir dağıtım istemek olacaktır , öyle ki (1) g ( ) için eşitsizlikler 1 üzerinde x 1 , . . . , X , n - 1 (2), g , yani simetriktir X 1 , . . . , X, n, değiştirilebilir, ve (3) g ( x 1 , .g(x1,...,xn)g()1x1,...,xn1gX1,...,Xn olduğunda büyük x 1 , . . . , X , n dağılmıştır. I (2) ve sonsuz değiştirilebilir diziler beri (3) ile gerçek bir sorun olduğunu düşünüyorum R daha büyük yüzden negatif korelasyon edilemez, n biz zorlayabilir az itmeyi kullanmak istiyorum; Öte yandan, büyük n için , zaten iyi yayılmış olmalıyız. g(x1,...,xn)x1,...,xnRnn
adam

Halton dizileri, düşündüğüm yaklaşıma oldukça yakın. Korelasyon riskini azaltmak için ilk birkaç girişin atlanması dahil. Ayrıca her seviye için rastgele bir izin kullanmayı düşünüyordum. Bu işaretçi için teşekkür ederim, bu bana ilgili yöntemleri aramak için iyi bir nokta verir!
Anony-Mousse,

wrt. Halton yine dizileri. En azından başlangıçtaki tohum hariç, deterministik olmamasını istiyorum. Burada iki yol görüyorum. Bir rastgele ofset + rastgele bir başlangıç ​​ofset + adım büyüklüğü ile döngüsel bir kayma yapabilirim. Sorun şu ki, oyun örneğinde kalacak "hazine" aynı zamanda her seferinde birbirine göre aynı konumda olmamalıdır. Ya da bir miktar "rasgele bükülme" eklemek için soruma dayandığım bu alt-üniforma yaklaşımını kullanabilirim. Söylemek gerekirse: Halton benim kullanımım için yine çok öngörülebilir ve düzenli görünüyor.
Anony-Mousse,

3
en.wikipedia.org/wiki/Low-discrepancy_sequence veya mathworld.wolfram.com/QuasirandomSequence.html . Tek tip RNG'lerin (testlerin Diehard / Dieharder pillerinde olduğu gibi) yaygın olarak yapılan testlerin bazıları bu tür şeylere duyarlıdır; örneğin, noktalar arasında çok az 'küçük mesafe' vardır.
Glen_b

Yanıtlar:


60

Evet , rastgele üniformalardan daha eşit olarak dağıtılmış bir sayı dizisi üretmenin birçok yolu vardır . Aslında, bu soruya adanmış bütün bir alan var ; Yarı Monte Carlo'nun (QMC) bel kemiğidir . Aşağıda mutlak temelleri kısa bir tur.

Tekdüzelik ölçme

Bunu yapmanın birçok yolu vardır, ancak en yaygın olanı güçlü, sezgisel, geometrik bir tada sahiptir. Biz üretme ile ilgili olduğunu varsayalım noktaları x 1 , x 2 , ... , x , n de [ 0 , 1 ] d bazı pozitif bir tam sayı için d . tanımlayın burada , içindeki bir dikdörtgendir .nx1,x2,,xn[0,1]ddR [ a 1 , b 1 ] × × [ a d , b d ] [ 0 , 1 ] d

Dn:=supRR|1ni=1n1(xiR)vol(R)|,
R[a1,b1]××[ad,bd][0,1]dR R R v a l ( R ) = i ( b i - a i )0aibi1 ve , tüm bu dikdörtgenlerin kümesidir. Modül içindeki ilk terim içindeki noktaların "gözlenen" oranıdır ve ikinci terim , .RRRvol(R)=i(biai)

miktarına genellikle nokta kümesinin tutarsızlığı veya aşırı tutarsızlığı denir . Sezgisel olarak, noktaların oranının mükemmel bir tekdüzelik altında beklediğimizden en fazla saptığı “en kötü” dikdörtgeni buluyoruz . ( x i ) R,Dn(xi)R

Bu pratikte hantal ve hesaplanması zor. Çoğunlukla, insanlar yıldız tutarsızlığıyla çalışmayı tercih eder , Tek fark, supremum'un alındığı set A'dır. Bu kümesidir bağlantılı (orijinde) dikdörtgenler, yani .A a 1 = a 2 = = a d = 0

Dn=supRA|1ni=1n1(xiR)vol(R)|.
Aa1=a2==ad=0

Lemma : tümü , . Kanıt . Sol el, beri açıktır . Sağdaki sınır takip eder çünkü her , den daha fazla sabitlenmemiş dikdörtgenden sendikalar, kavşaklar ve tamamlayıcılar ile oluşturulabilir (yani, ). n d AR R R 2 d ADnDn2dDnnd
ARRR2dA

Dolayısıyla, ve , büyüdükçe küçük olursa , diğerinin de olacağı anlamında eşdeğer olduğunu . İşte her tutarsızlık için aday dikdörtgenleri gösteren bir (çizgi film) resim.D n nDnDnn

aşırı ve yıldız tutarsızlığı

"İyi" dizi örnekleri

Doğrulanabilir şekilde düşük yıldız tutarsızlığı olan genellikle şaşırtıcı olmayan bir şekilde düşük tutarsızlık sekansları olarak adlandırılır .Dn

van der Corput . Bu belki de en basit örnek. İçin , Corput dizileri der Van tamsayı genişletme ile oluşturulur ondalık noktası etrafında "basamak yansıtan" ikili olarak ve daha sonra. Daha resmi olarak, bu tabanındaki kök ters fonksiyonla yapılır , burada ve bir baz ile basamak olan genişlemesi . Bu fonksiyon diğer birçok sekans için de temel oluşturur. Örneğin, ikili olduğunu ve böylecei b ϕ b ( i ) = k = 0 a k b - k - 1d=1ib

ϕb(i)=k=0akbk1,
i=k=0akbkakbi41101001a0=1 , , , , ve . Dolayısıyla, van der Corput dizisindeki 41. nokta x_ .a1=0a2=0a3=1a4=0a5=1x41=ϕ2(41)=0.100101(base 2)=37/64

Not en önemsiz bit çünkü arasında gidip ve , puan tek için olan noktası ise, bile olan .i01xii[1/2,1)xii(0,1/2)

Halton dizileri . Klasik düşük tutarsızlık dizilerinin en popülerleri arasında, bunlar van der Corput dizisinin birden fazla boyuta uzatılmasıdır. Let olmak en küçük asal inci. Daha sonra, inci noktası arasında boyutlu Halton sekansı olan Düşük bunlar oldukça iyi çalışır, ancak daha yüksek boyutlarda problemler vardır .pjjixid

xi=(ϕp1(i),ϕp2(i),,ϕpd(i)).
d

Halton sekansları karşılar . Onlar da güzeldir çünkü noktaların yapısının, dizisinin uzunluğunun priori bir seçimine bağlı olmaması nedeniyle genişletilebilirler .Dn=O(n1(logn)d)n

Hammersley dizileri . Bu, Halton dizisinin çok basit bir modifikasyonudur. Bunun yerine Belki de şaşırtıcı şekilde, avantajı, daha iyi bir yıldız tutarsızlığına sahip olmalarıdır .

xi=(i/n,ϕp1(i),ϕp2(i),,ϕpd1(i)).
Dn=O(n1(logn)d1)

İki boyutlu Halton ve Hammersley dizilerinin bir örneği.

Halton ve Hammersley

Faure-permated Halton dizileri . Halton sekansı üretilirken, her bir için basamak genişlemesine özel bir permütasyon seti ( bir fonksiyonu olarak sabitlenir ) uygulanabilir . Bu, daha yüksek boyutlarda ortaya çıkan sorunların giderilmesine (bir dereceye kadar) yardımcı olur. Permütasyonların her biri ve sabit puan olarak tutma özelliğine sahiptir .iaki0b1

Kafes kurallar . Let olmak tamsayılar. Al burada kesirli kısmını ifade eder . değerlerinin makul seçimi iyi tekdüzelik özellikler sağlar. Kötü seçimler kötü dizilere yol açabilir. Ayrıca genişletilemezler. İşte iki örnek.β1,,βd1

xi=(i/n,{iβ1/n},,{iβd1/n}),
{y}yβ

İyi ve kötü kafesler

(t,m,s) ağlar . tabanındaki ağlar , içindeki ses seviyesinin her dikdörtgeninin noktaları içerdiği nokta kümeleridir . Bu güçlü bir tek biçimlilik şeklidir. Küçük bu durumda, senin arkadaşın. Halton, Sobol 've Faure dizileri ağlarına örnektir . Bunlar, karışma yoluyla rastgele bir şekilde kendilerini ödünç veriyorlar. Bir ağın rasgele karıştırılması (doğru yapılması) başka bir ağ oluşturur. MinT projesi böyle dizilerin bir koleksiyon tutar.(t,m,s)bbtm[0,1]sbtt(t,m,s)(t,m,s)(t,m,s)

Basit randomizasyon: Cranley-Patterson rotasyonları . Let noktaları dizisi olabilir. Let . Ardından noktaları eşit olarak dağıtılır .xi[0,1]dUU(0,1)x^i={xi+U}[0,1]d

İşte mavi noktaların orijinal noktalar ve kırmızı noktaların döndürülen noktaların birbirine bağlanan çizgilerle (ve uygunsa sarılarak gösterilmiştir) olduğu bir örnek.

Cranley Patterson

Tamamen tekdüze dağılımlı dizileri . Bu, bazen devreye giren, daha güçlü bir homojenlik kavramıdır. , deki noktaların sırası olsun ve şimdi diziyi elde etmek için boyutunda çakışan bloklar oluşturur . Yani, eğer , aldığımız sonra vb Eğer için her , , ardından tamamen üniform bir şekilde dağılmış olduğu söylenir . Başka bir deyişle, dizi, herhangi bir puan kümesini verir(ui)[0,1]d(xi)s=3x1=(u1,u2,u3)x2=(u2,u3,u4) s1Dn(x1,,xn)0(ui)İstenilen özelliklerine sahip boyut .Dn

Örnek olarak, van der Corput dizisi tamamen eşit dağılmamıştır çünkü , noktaları karesinde ve puanlarındadır. , . Bu nedenle kare bir nokta vardır ima için , tüm .s=2x2i(0,1/2)×[1/2,1)x2i1[1/2,1)×(0,1/2)(0,1/2)×(0,1/2)s=2Dn1/4n

Standart referanslar

Niederreiter (1992) monografi ve Dişi ve Wang (1994) metin ayrıntılı keşif gitmek yerlerdir.


4
Bu cevap mükemmel, ve sadece harcadığınız emeğe teşekkür etmek istedim. Teşekkür ederim!
Anony-Mousse,

1
Bir küçük takip sorusu. Halton dizileri iyi görünüyor, çünkü onlar da düzenli değil gibi görünüyorlar. Kafes şeyler benim için çok düzenli ve ayrıca Hammersley dizisinin orijinden geçen çizgiler üzerinde birçok nesnesi var gibi gözüküyor. Gerçek üniforma ile sahte üniforma arasındaki dengeyi kontrol etmenin iyi bir yolu nedir? Halton +% 20 üniforma rastgele% 80 katkı almak?
Anony-Mousse,

1
+ 10k ve kesinlikle rekor düşük (87 !!!!) cevap! Oh, ve ben bu yazıyı çok seviyorum. Aslında soruyu bunun için işaretledim. Aferin, @cardinal.
Makro

@Macro: Güzel bir yorumunuz için teşekkür ederiz! Çok kibarsın. Bu 10K olayı benim için geçici olabilir diye düşünüyorum. Erteleme'nin oyları geri alınır alınmaz 10 bin doların altına düşebileceğimi sanıyorum. Bunun gerçekleşmemiş olmasına şaşırdım, aslında. Bu sitede yaklaşık 3000 oy kullandıklarına inanıyorum. Buraya yazdığınız için teşekkür ederiz; Bir şekilde Anony-Mousse'un takip sorularını hiç görmedim!
kardinal,

@ Anony-Mousse: Yanıt vermedeki korkunç gecikme için özür dileriz. Bu yorumları gözden kaçırmış olmalıyım. Bir denge oluşturmanın amaçlarınıza bağlı olacağını düşünüyorum. Teorik olarak söylemek gerekirse, herhangi bir rastgele tekdüze noktanın dahil edilmesi, örneğin optimal özelliklerini yok etmek için bağlanır . Pratik bir mesele olarak, sekmenin özelliklerine göre jitterin seçildiği QMC noktalarının çok küçük bir jitterinin kullanılması daha iyi olabilir . Ayrıca tüm noktalara rasgele katı-gövde dönüşümleri de ekleyebilirsiniz, örneğin, vardiya ve koordinat rotasyonları. D DD
kardinal

3

Bunu yapmanın bir yolu, tek tip rastgele sayılar üretmek, daha sonra istediğiniz herhangi bir yöntemi kullanarak "yakınlığı" test etmek ve daha sonra başkalarına çok yakın olan rastgele öğeleri silmek ve bunlar için telafi etmek üzere başka bir rastgele üniforma grubu seçmek olacaktır.

Böyle bir dağılım her bir eşitlik testini geçebilir mi? Umarım olmaz! Artık düzgün bir şekilde dağılmıyor, şimdi başka bir dağıtım.

Olasılığın sezgisel olmayan bir yönü, şansın topaklı olmasıdır. Rasgele verilerde, insanların olacağını düşündüğünden daha fazla işlem var. Tversky'nin bu konuda biraz araştırma yaptığını düşünüyorum (çok fazla araştırdı, ama hatırlaması zor).


2
Bu yaklaşımla ilgili (birçok) problemden biri, ortaya çıkan dağılımı karakterize etmek çok zordur.
whuber

OP, en çok küçük örneklem büyüklükleriyle ilgileniyor görünmektedir. Bu, tüm dağıtımı önemseme ihtiyacı olmadığını gösterir. Bir koordinat kümeniz olduğunu varsayalım, bir tane daha üretin ve sonra öklid mesafesini diğerlerine göre hesaplayın. En küçük mesafe bazı eşiğin altındaysa, sayıyı atın ve yeni bir tane oluşturun. Peter'ın çözümü iyi çalışıyor bence.
Yuhanna

@whuber Yanlış olsa da, bununla ilgilenmiyor gibi görünüyor.
Peter Flom - Monica'yı yeniden kurun

2
İtirazımı biraz daha açık bir şekilde belirtmeme izin verin, Peter: Kümelenme eksikliği gibi istenen bazı özelliklere yaklaşmak için sözde rasgele değerleri geçici bir şekilde kaldırdığınızda ve / veya ayarlarken , sonuçta ortaya çıkan dizilerin istenen herhangi bir özellik. Örneğin, yönteminizle, ortaya çıkan sürecin ilk anının ne olacağını bize söyleyebilir misiniz? (Yoğunluğun tek biçimli olduğunu bize bile söyleyebilir misiniz?) İkinci an ne olacak? Genellikle bunlar, çıkarım için dizileri etkin bir şekilde kullanmak için gereken minimum bilgiyi oluşturur.
whuber

2
Tamam, ama sorudaki örnekte, bir oyunda haritaya hazine yerleştirmek istiyor. Bu, çıkarım, anlar veya herhangi bir şey içermez. Yöntemin pek çok amaç için iyi olmadığını kabul ediyorum, ancak bunun örnekle eşleşdiğini düşünüyorum. Elbette, belki de örnek istediği şey değildir ... Belki daha resmi bir şey ister, bu durumda diğer tüm cevaplara bakılmalıdır.
Peter Flom - Monica'yı yeniden yerleştirme

3

Bu "sert çekirdekli" bir poisson noktası işlemi olarak bilinir - 1970'lerde Brian Ripley tarafından; yani, rastgele olmasını istersiniz, ancak herhangi bir noktanın birbirine çok yakın olmasını istemezsiniz. "Sert çekirdekli", diğer noktaların girmeyeceği bir tampon bölge olarak düşünülebilir.

Bir şehirdeki bazı otomobillerin konumunu kaydettiğinizi düşünün - ancak noktayı yalnızca otomobilin nominal merkezinde kaydettiğinizden. Sokaklardayken iki nokta çifti birbirine yaklaşamaz, çünkü noktalar üstyapının "sert çekirdeği" tarafından korunur - çok katlı otoparklardaki potansiyel süper konumu görmezden geleceğiz :-)

Bu tür nokta işlemlerini üretme prosedürleri vardır - bunun tek yolu sadece eşit puan üretmek ve sonra birbirine çok yakın olanları kaldırmaktır!

Böyle süreçler üzerinde bazı ayrıntı için örneğin bakınız bu


2

Önceden toplu üretim ile ilgili olarak, çok sayıda sözderandom değişkeni kümesi üreteceğim ve sonra bunları Kolmogorov-Smirnov testi gibi bir testle test edeceğim. En yüksek p değerine sahip olan seti seçmek isteyeceksiniz (yani, idealdir). Bunun yavaş olacağını unutmayın, ancak büyüdükçe muhtemelen daha az gerekli hale gelir. Np1N

Artımlı üretime gelince, aslında orta derecede negatif bir otokorelasyonu olan bir dizi arıyorsunuz. Bunu yapmanın en iyi yolunun ne olduğundan emin değilim, çünkü zaman serilerinde çok sınırlı bir deneyime sahibim, ancak bunun için mevcut algoritmalar olduğundan şüpheleniyorum.

"Çok eşit" testiyle ilgili olarak, bir numunenin belirli bir dağılımı takip edip etmediğine dair herhangi bir test (yukarıda belirtilen KS gibi) yapacak, sadece yerine kontrol etmek isteyip istemediğinizi kontrol etmek isteyeceksiniz standart yaklaşım Bu alternatif yaklaşımın bir örneğini burada yazdım: Ki kare her zaman tek taraflı bir test . p>(1α)


1

Ben senin sorunun bu şekilde resmiyet olacaktır: Sen üzerinde dağılımını istiyorum böyle yoğunluk olduğunu bazı için noktaların itilmesini ölçmek için. f ( x ) e ( 1)[0,1]n k<0f(x)e(1kij|xixj|k)1kk<0

Bu tür vektörleri üretmenin kolay bir yolu Gibbs örneklemesi yapmaktır.


Bu konuda ayrıntılı bilgi verebilir misiniz? Gibbs örneklemesi burada şartlı dağıtım = marjinal dağılım = tekdüzen olarak yardımcı görünmüyor mu? Yoksa örneklerden alınacak dağıtımda "delikler" oluşturmak için önceki örnekleri kullanmanız öneriniz mi?
Anony-Mousse,

Tek tip rastgele bir vektör seçin ve ardından tekrar tekrar eşit şekilde bir indis seçin ve örnekleyin . Oran hesaplamak ve yeniden örnekleme önce ve sonra ve oran ile yeniden örnekleme red . Bu, çok uzun bir vektörünüz olduğunda aldığınız diğer cevaplardan çok daha hızlı çünkü küresel reddetmelerden ziyade yerel performans sergiliyorsunuz. x i r f ( x ) rixirf(x)r
Neil G
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.