Nomor acak seragam palsu: Lebih merata daripada data seragam asli


43

Saya mencari cara untuk menghasilkan angka acak yang tampaknya terdistribusi seragam - dan setiap tes akan menunjukkan mereka seragam - kecuali bahwa mereka lebih merata daripada data seragam sejati .

Masalah yang saya miliki dengan tebusan seragam yang "benar" adalah bahwa mereka kadang-kadang akan berkelompok. Efek ini lebih kuat pada ukuran sampel yang rendah. Secara kasar mengatakan: ketika saya menggambar dua seragam Uniform di U [0; 1], kemungkinan sekitar 10% bahwa mereka berada dalam kisaran 0,1, dan 1% bahwa mereka berada dalam 0,01.

Jadi saya mencari cara yang baik untuk menghasilkan angka acak yang lebih merata daripada tebusan seragam .

Contoh penggunaan kasus: katakan saya sedang melakukan permainan komputer, dan saya ingin menempatkan harta secara acak di peta (tidak peduli tentang hal lain). Saya tidak ingin harta itu berada di satu tempat, itu harus ada di seluruh peta. Dengan tebusan yang seragam, jika saya menempatkan, katakanlah, 10 objek, kemungkinannya tidak serendah itu sehingga ada 5 atau lebih yang sangat dekat satu sama lain. Ini bisa memberi satu pemain keunggulan dibanding yang lain. Pikirkan kapal penyapu ranjau, kemungkinan (walaupun rendah, jika ada cukup ranjau) adalah bahwa Anda benar-benar beruntung dan menang dengan satu klik.

Pendekatan yang sangat naif untuk masalah saya adalah membagi data ke dalam kisi. Selama jumlahnya cukup besar (dan memiliki faktor), seseorang dapat menerapkan keseragaman ekstra dengan cara ini. Jadi alih-alih menggambar 12 variabel acak dari U [0; 1], saya bisa menggambar 6 dari U [0; .5] dan 6 dari U [0,5; 1], atau 4 dari U [0; 1/3] + 4 dari U [1/3; 2/3] + 4 dari U [2/3; 1].

Apakah ada cara yang lebih baik untuk menyamakan seragam ini? Mungkin hanya bekerja untuk batch acak (ketika menggambar satu acak, saya jelas harus mempertimbangkan seluruh jajaran). Secara khusus, saya dapat mengocok catatan lagi setelah itu (jadi bukan yang pertama dari yang ketiga).

Bagaimana kalau dilakukan secara bertahap? Jadi yang pertama ada di U [0; 1], lalu dua dari masing-masing bagian, satu dari setiap ketiga, satu dari masing-masing keempat? Apakah ini sudah diselidiki, dan seberapa bagus itu? Saya mungkin harus berhati-hati untuk menggunakan generator yang berbeda untuk x dan y untuk tidak membuat mereka berkorelasi (xy pertama akan selalu di bagian bawah, yang kedua di bagian kiri dan ketiga di bawah, yang ketiga di tengah ketiga dan ketiga atas. .. jadi setidaknya beberapa permutasi bin acak juga diperlukan .. dan dalam jangka panjang, itu akan terlalu merata, kurasa.

Sebagai node samping, apakah ada tes yang terkenal apakah beberapa distribusi terlalu merata untuk benar-benar seragam? Jadi menguji "true uniform" vs. "seseorang mengacaukan data dan mendistribusikan item lebih merata". Jika saya ingat dengan benar, Statistik Hopkins dapat mengukur ini, tetapi bisakah itu digunakan untuk pengujian juga? Juga agak KS-Test terbalik: jika deviasi terbesar di bawah ambang batas yang diharapkan, data terlalu merata?


7
Pernahkah Anda mendengar tentang urutan Halton ? Untuk "terlalu merata," orang-orang (dimulai dengan investigasi Fisher terhadap hasil percobaan kacang polong Mendel) telah merujuk pada statistik kuadrat-chi (biasa) ke bagian bawah distribusi chi-kuadrat.
whuber

Salah satu cara untuk meresmikan ini akan menginginkan distribusi seperti itu (1) g ( ) meminggirkan ke 1 lebih x 1 , . . . , X n - 1 , (2) g adalah simetris, yaitu X 1 , . . . , X n dapat ditukarkan, dan (3) g ( x 1 , .g(x1,...,xn)g()1x1,...,xn1gX1,...,Xn adalah besar ketika x 1 , . . . , x n tersebar. Saya pikir ada masalah nyata dengan (2) dan (3) karena urutan pertukaran tak terbatas dalam R tidak dapat dikorelasikan secara negatif, sehingga semakin besar n kita ingin menggunakan semakin sedikit tolakan yang bisa kita terapkan; di sisi lain, untuk n besar, kita harus memiliki penyebaran yang baik. g(x1,...,xn)x1,...,xnRnn
pria

Urutan Halton cukup dekat dengan pendekatan yang saya pikirkan. Termasuk melewatkan beberapa entri pertama untuk mengurangi risiko korelasi. Saya juga berpikir untuk menggunakan permuasi acak untuk setiap level. Terima kasih atas penunjuk ini, karena ini memberi saya poin bagus untuk mencari metode terkait!
Anony-Mousse

wrt. Urutan halton lagi. Saya perlu memilikinya non-deterministik, setidaknya kecuali untuk benih awal. Saya melihat dua cara di sini. Saya bisa melakukan pergantian siklik dengan offset acak + offset mulai acak + ukuran langkah. Masalahnya adalah bahwa tentu saja "harta karun" untuk tetap menjadi contoh permainan juga tidak harus berada di posisi yang sama relatif satu sama lain setiap kali. Atau saya bisa menggunakan pendekatan seragam-dari-subinterval yang saya miliki dalam pertanyaan saya untuk menambahkan sejumlah "twist acak". Jadi bisa dikatakan: Halton tampaknya lagi terlalu mudah ditebak dan teratur untuk saya gunakan.
Anony-Mousse

3
en.wikipedia.org/wiki/Low-discrepancy_afterence atau mathworld.wolfram.com/QuasirandomSequence.html . Beberapa tes umum RNG seragam (seperti yang ada pada baterai uji Diehard / Dieharder) peka terhadap hal-hal seperti itu; misalnya, terlalu sedikit 'jarak kecil' antar titik.
Glen_b

Jawaban:


60

Ya , ada banyak cara untuk menghasilkan urutan angka yang lebih merata daripada seragam acak. Bahkan, ada seluruh bidang yang didedikasikan untuk pertanyaan ini; itu adalah tulang punggung quasi-Monte Carlo (QMC). Di bawah ini adalah tur singkat dari dasar-dasar absolut.

Mengukur keseragaman

Ada banyak cara untuk melakukan ini, tetapi cara yang paling umum memiliki rasa geometris yang kuat, intuitif. Misalkan kita prihatin dengan menghasilkan poin x 1 , x 2 , , x n di [ 0 , 1 ] d untuk beberapa bilangan bulat positif d . Tetapkan mana adalah persegi panjang di sedemikian rupa sehingganx1,x2,,xn[0,1]ddR [ a 1 , b 1 ] × × [ a d , b d ]

Dn:=supRR|1ni=1n1(xiR)vol(R)|,
R[a1,b1]××[ad,bd] 0 a ib i1 R R R v o l ( R ) = i ( b i - a i )[0,1]d0aibi1 dan adalah himpunan semua persegi panjang tersebut. Istilah pertama di dalam modulus adalah proporsi titik "yang diamati" di dalam dan istilah kedua adalah volume , .RRRvol(R)=i(biai)

Kuantitas sering disebut ketidaksesuaian atau perbedaan ekstrim dari himpunan titik . Secara intuitif, kita menemukan kotak "terburuk" mana proporsi poin menyimpang paling banyak dari apa yang kita harapkan di bawah keseragaman yang sempurna. ( x i ) RDn(xi)R

Ini sulit dalam praktik dan sulit untuk dihitung. Sebagian besar, orang lebih suka bekerja dengan perbedaan bintang , Satu-satunya perbedaan adalah set di mana supremum diambil. Ini adalah himpunan persegi panjang berlabuh (pada titik asal), yaitu, di mana .A a 1 = a 2 = = a d = 0

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

Lemma : untuk semua , . Bukti . Tangan kiri terikat jelas karena . Batas kanan mengikuti karena setiap dapat dikomposisikan melalui serikat pekerja, persimpangan dan pelengkap tidak lebih dari persegi panjang berlabuh (yaitu, dalam ).DnDn2dDnd AR R R 2 d And
ARRR2dA

Jadi, kita melihat bahwa bintang dan adalah ekuivalen dalam arti bahwa jika satu kecil seperti tumbuh, yang lain akan juga. Berikut adalah gambar (kartun) yang menunjukkan persegi panjang kandidat untuk setiap perbedaan.D n nDnDnn

perbedaan ekstrim dan bintang

Contoh urutan "baik"

Urutan dengan perbedaan bintang yang dapat dibuktikan rendah, bintang sering disebut, tidak mengejutkan, urutan perbedaan yang rendah .Dn

van der Corput . Ini mungkin contoh paling sederhana. Untuk , urutan van der Corput dibentuk dengan memperluas integer dalam biner dan kemudian "mencerminkan digit" di sekitar titik desimal. Secara lebih formal, ini dilakukan dengan fungsi invers radikal di basis , mana dan adalah digit dalam basis ekspansi . Fungsi ini membentuk dasar untuk banyak urutan lainnya juga. Sebagai contoh, dalam biner adalah dan seterusnyai b ϕ b ( i ) = k = 0 a k b - k - 1d=1ibi = k = 0 a k b k a k b i 41 101001 a 0 = 1 a 1 = 0 a 2 = 0 a 3 = 1 a 4 = 0 a 5 = 1 x 41 = ϕ 2 ( 41 ) = 0,100101

ϕb(i)=k=0akbk1,
i=k=0akbkakbi41101001a0=1 , , , , dan . Oleh karena itu, titik ke-41 dalam urutan van der Corput adalah .a1=0a2=0a3=1a4=0a5=1x41=ϕ2(41)=0.100101(base 2)=37/64

Perhatikan bahwa karena bit paling tidak signifikan dari berosilasi antara dan , poin untuk odd ada di , sedangkan poin untuk even berada di .0 1 x i i [ 1 / 2 , 1 ) x i i ( 0 , 1 / 2 )i01xii[1/2,1)xii(0,1/2)

Urutan halton . Di antara yang paling populer dari urutan perbedaan rendah klasik, ini adalah ekstensi dari urutan van der Corput ke beberapa dimensi. Biarkan menjadi prime terkecil. Kemudian, th titik dari berdimensi urutan Halton adalah Untuk low ini berfungsi dengan baik, tetapi memiliki masalah di dimensi yang lebih tinggi . j i x i d x i = ( ϕ p 1 ( i ) , ϕ p 2 ( i ) , , ϕ p d ( i ) )pjjixidd

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

Urutan memenuhi . Mereka juga baik karena mereka dapat diperluas dalam hal konstruksi titik tidak tergantung pada pilihan a priori dari panjang urutan .nDn=O(n1(logn)d)n

Urutan Hammersley . Ini adalah modifikasi yang sangat sederhana dari urutan Halton. Kami menggunakan Mungkin secara mengejutkan, keuntungannya adalah mereka memiliki perbedaan bintang yang lebih baik, .D n = O ( n - 1 ( log n ) d - 1 )

xi=(i/n,ϕp1(i),ϕp2(i),,ϕpd1(i)).
Dn=HAI(n-1(catatann)d-1)

Berikut adalah contoh dari urutan Halton dan Hammersley dalam dua dimensi.

Halton dan Hammersley

Urutan Halton yang diijinkan oleh Faure . Serangkaian permutasi khusus (ditetapkan sebagai fungsi ) dapat diterapkan pada ekspansi digit untuk setiap saat memproduksi urutan Halton. Ini membantu memperbaiki (sampai taraf tertentu) masalah yang disinggung dalam dimensi yang lebih tinggi. Setiap permutasi memiliki properti yang menarik dengan menjaga dan sebagai titik tetap.a k i 0 b - 1sayaSebuahksaya0b-1

Aturan kisi . Biarkan menjadi bilangan bulat. Ambil mana menunjukkan bagian pecahan dari . Pilihan yang bijaksana dari nilai menghasilkan properti keseragaman yang baik. Pilihan yang buruk dapat menyebabkan urutan buruk. Mereka juga tidak dapat diperluas. Berikut ini dua contoh. x i = ( i / n , { i β 1 / n } , , { i β d - 1 / n } )β1,...,βd-1{ y } y β

xsaya=(saya/n,{sayaβ1/n},...,{sayaβd-1/n}),
{y}yβ

Kisi baik dan buruk

(t,m,s) jaring . jaring dalam basis adalah sekumpulan titik sedemikian rupa sehingga setiap persegi panjang volume di berisi poin. Ini adalah bentuk keseragaman yang kuat. kecil adalah teman Anda, dalam hal ini. Urutan Halton, Sobol 'dan Faure adalah contoh dari jaring . Ini cocok untuk pengacakan melalui pengacakan. Perebutan acak (dilakukan dengan benar) dari jaring menghasilkan jaring lain . Proyek MinT menyimpan koleksi sekuens semacam itu.(t,m,s)bbt-m[0,1]sbtt(t,m,s)(t,m,s)(t,m,s)

Pengacakan sederhana: Rotasi Cranley-Patterson . Biarkan menjadi urutan titik. Biarkan . Kemudian poin didistribusikan secara seragam dalam .xsaya[0,1]dUU(0,1)x^saya={xsaya+U}[0,1]d

Berikut adalah contoh dengan titik-titik biru sebagai titik-titik asli dan titik-titik merah menjadi titik-titik yang dirotasi dengan garis-garis yang menghubungkannya (dan ditunjukkan melilit, jika perlu).

Cranley Patterson

Urutan terdistribusi secara seragam . Ini adalah gagasan keseragaman yang bahkan lebih kuat yang terkadang ikut bermain. Misalkan menjadi urutan titik dalam dan sekarang bentuk blok tumpang tindih dengan ukuran untuk mendapatkan urutan . Jadi, jika , kita ambil maka , dll. Jika, untuk setiap , , maka dikatakan sepenuhnya terdistribusi secara merata . Dengan kata lain, urutan menghasilkan satu set poin apa pun(kamusaya)[0,1]d(xsaya)s=3x1=(kamu1,kamu2,kamu3)x2=(kamu2,kamu3,kamu4) s1Dn(x1,...,xn)0(kamusaya)dimensi yang memiliki properti diinginkan .Dn

Sebagai contoh, urutan van der Corput tidak sepenuhnya terdistribusi secara merata karena untuk , titik berada di dalam kotak dan titik dalam . Oleh karena itu tidak ada titik dalam kuadrat yang menyiratkan bahwa untuk , untuk semua .s=2x2saya(0,1/2)×[1/2,1)x2saya-1[1/2,1)×(0,1/2)(0,1/2)×(0,1/2)s=2Dn1/4n

Referensi standar

The Niederreiter (1992) monografi dan Fang dan Wang (1994) teks tempat untuk pergi untuk eksplorasi lebih lanjut.


4
Jawaban ini luar biasa, dan saya hanya ingin menghargai upaya yang Anda lakukan. Terima kasih!
Anony-Mousse

1
Satu pertanyaan lanjutan kecil. Urutan halton terlihat bagus, karena tampaknya juga tidak terlalu teratur. Hal-hal kisi jauh lebih biasa bagi saya, dan juga urutan Hammersley tampaknya memiliki banyak objek pada garis melalui asal. Apa cara yang baik untuk mengontrol keseimbangan antara seragam sejati dan seragam palsu? Ambil saja kontribusi 80% dari Halton + 20% seragam secara acak?
Anony-Mousse

1
+ 10rb dan pasti dengan jawaban terendah (87 !!!!)! Oh, dan saya sangat menyukai posting ini. Sebenarnya, saya menandai pertanyaan itu. Bagus, @ cardinal.
Makro

@ Macro: Terima kasih atas komentar yang bagus! Kamu sangat baik. Saya pikir hal 10K ini mungkin sementara bagi saya. Saya menduga saya bisa berada jauh di bawah 10K segera setelah suara Penunda ini dikembalikan. Aku heran ini belum terjadi, sebenarnya. Saya percaya mereka memberikan hampir 3.000 suara di situs ini. Terima kasih juga telah memposting di sini; entah bagaimana saya tidak pernah melihat pertanyaan lanjutan Anony-Mousse!
kardinal

@ Anony-Mousse: Permintaan maaf atas keterlambatan yang mengerikan dalam merespons. Saya pasti mengabaikan komentar ini. Saya pikir menciptakan keseimbangan akan tergantung pada tujuan Anda. Secara teoritis, memperkenalkan titik seragam acak terikat untuk menghancurkan sifat optimal bintang , misalnya. Sebagai masalah praktis, mungkin lebih baik menggunakan jitter yang sangat kecil dari titik QMC di mana jitter dipilih berdasarkan pada properti dari urutan. Anda juga bisa memperkenalkan transformasi acak-kaku pada semua titik, misalnya, menggeser dan mengoordinasikan rotasi. D DD
kardinal

3

Salah satu cara untuk melakukan ini adalah dengan menghasilkan angka acak yang seragam, kemudian menguji "kedekatan" menggunakan metode apa pun yang Anda suka dan kemudian menghapus item acak yang terlalu dekat dengan orang lain dan memilih satu set seragam acak untuk menebusnya.

Akankah distribusi seperti itu lulus setiap ujian keseragaman? Saya harap tidak! Ini tidak lagi terdistribusi secara seragam, sekarang beberapa distribusi lainnya.

Salah satu aspek probabilitas yang tidak intuitif adalah bahwa peluang itu tidak jelas. Ada lebih banyak data acak yang berjalan daripada yang diperkirakan orang. Saya pikir Tversky melakukan penelitian tentang hal ini (dia meneliti terlalu banyak, sehingga sulit untuk diingat).


2
Salah satu (banyak) masalah dengan pendekatan ini adalah sangat sulit untuk mengkarakterisasi distribusi yang dihasilkan.
whuber

OP tampaknya paling peduli dengan ukuran sampel kecil. Ini menunjukkan bahwa dia tidak perlu peduli dengan seluruh distribusi. Misalkan Anda memiliki satu set koordinat, Anda menghasilkan yang lain dan kemudian menghitung jarak euclidean terhadap semua yang lain. Jika jarak terkecil di bawah ambang batas tertentu, buang nomor keluar dan hasilkan yang baru. Saya pikir solusi Peter bekerja dengan baik.
John

@whuber Dia sepertinya tidak tertarik dengan itu, meskipun aku mungkin salah.
Peter Flom - Reinstate Monica

2
Biarkan saya menyatakan keberatan saya sedikit lebih jelas, Peter: ketika Anda menghapus dan / atau menyesuaikan nilai pseudorandom dalam cara ad hoc untuk memperkirakan beberapa properti yang diinginkan, seperti kurangnya pengelompokan, sulit untuk memastikan bahwa urutan yang dihasilkan memiliki setiap sifat yang diinginkan. Dengan metode Anda, misalnya, dapatkah Anda memberi tahu kami apa momen pertama dari proses yang dihasilkan? (Yaitu, dapatkah Anda meyakinkan kami bahwa intensitasnya seragam?) Bagaimana dengan momen kedua? Biasanya ini merupakan informasi minimum yang diperlukan untuk menggunakan urutan secara efektif untuk kesimpulan.
whuber

2
OKE, tapi, dalam contoh di pertanyaan, dia ingin menempatkan harta karun di peta dalam permainan. Itu tidak akan melibatkan inferensi atau momen atau semacamnya. Saya akui metode saya tidak akan bagus untuk banyak tujuan, tetapi saya pikir itu cocok dengan contohnya. Tentu saja, mungkin contohnya tidak benar-benar apa yang dia inginkan .... Mungkin dia menginginkan sesuatu yang lebih formal, dalam hal ini semua jawaban lain harus dilihat.
Peter Flom - Reinstate Monica

3

Ini dikenal sebagai proses titik poisson "hard-core" - dinamakan demikian oleh Brian Ripley pada 1970-an; yaitu Anda ingin menjadi acak, tetapi Anda tidak ingin ada poin yang terlalu dekat. "Hard-core" dapat dibayangkan sebagai zona penyangga di mana titik-titik lain tidak dapat mengganggu.

Bayangkan Anda sedang merekam posisi beberapa mobil di kota - tetapi Anda hanya merekam titik di pusat nominal mobil. Sementara mereka berada di jalan-jalan, tidak ada pasangan titik yang dapat berdekatan karena poin-poinnya dilindungi oleh "inti" dari bodywork - kita akan mengabaikan posisi super potensial di tempat parkir bertingkat :-)

Ada prosedur untuk menghasilkan proses titik tersebut - satu cara adalah hanya untuk menghasilkan poin secara seragam dan kemudian menghapus semua yang terlalu berdekatan!

Untuk beberapa detail tentang proses tersebut, lihat misalnya untuk ini


2

Sehubungan dengan pembuatan bets sebelumnya, saya akan menghasilkan sejumlah besar set pseudorandom variations, dan kemudian mengujinya dengan tes seperti tes Kolmogorov-Smirnov. Anda akan ingin memilih set yang memiliki nilai p tertinggi (yaitu, ideal). Perhatikan bahwa ini akan lambat, tetapi karena bertambah besar, itu mungkin menjadi kurang perlu. Nhal1N

Sehubungan dengan generasi tambahan, Anda pada dasarnya mencari seri dengan autokorelasi yang cukup negatif. Saya tidak yakin apa cara terbaik untuk melakukan itu, karena saya memiliki pengalaman yang sangat terbatas dengan deret waktu, tetapi saya curiga ada algoritma yang ada untuk ini.

Sehubungan dengan tes untuk "terlalu genap", setiap tes untuk apakah sampel mengikuti distribusi tertentu (seperti KS yang disebutkan di atas) akan dilakukan, Anda hanya ingin memeriksa apakah , daripada pendekatan standar. Saya menulis tentang contoh pendekatan alternatif ini di sini: chi-square selalu merupakan tes satu sisi . p>(1α)


1

Saya akan memformalkan masalah Anda dengan cara ini: Anda ingin distribusi lebih dari sedemikian rupa sehingga densitasnya adalah untuk beberapa mengkuantifikasi tolakan titik. f ( x ) e ( 1[0,1]n k<0f(x)e(1ksayaj|xsaya-xj|k)1kk<0

Salah satu cara mudah untuk menghasilkan vektor semacam itu adalah dengan melakukan sampling Gibbs.


Bisakah Anda menguraikan ini? Pengambilan sampel Gibbs tampaknya tidak membantu di sini, karena distribusi bersyarat = distribusi marjinal = seragam? Atau saran Anda untuk menggunakan sampel sebelumnya untuk menghasilkan "lubang" dalam distribusi untuk sampel dari?
Anony-Mousse

Pilih vektor acak seragam, dan kemudian berulang kali secara seragam pilih indeks dan sampel ulang . Hitung rasio dari sebelum dan sesudah pengujian ulang dan tolak pengujian ulang Anda dengan odds . Ini jauh lebih cepat daripada jawaban lain yang Anda dapatkan ketika Anda memiliki vektor yang sangat panjang karena Anda melakukan penolakan lokal daripada global. x i r f ( x ) rsayaxsayarf(x)r
Neil G
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.