Mengapa distribusi seragam ini?

12

Kami sedang menyelidiki uji statistik Bayesian, dan menemukan fenomena aneh (bagi saya setidaknya).

Pertimbangkan kasus berikut: kami tertarik untuk mengukur populasi mana, A atau B, yang memiliki tingkat konversi yang lebih tinggi. Untuk pemeriksaan kewarasan, kami menetapkan , yaitu probabilitas konversi sama di kedua grup. Kami menghasilkan data buatan menggunakan model binomial, misalnyapA=pB

nABinomial(N,pA)

Kami kemudian mencoba memperkirakan menggunakan model beta-binomial Bayesian sehingga kami mendapatkan posisi untuk setiap tingkat konversi, mis.pA,pB

PABeta(1+nA,NnA+1)

Statistik pengujian kami dihitung dengan menghitung melalui monte carlo.S=P(PA>PB|N,nA,nB)

Yang mengejutkan saya adalah jika , maka S \ sim \ text {Uniform (0,1)} . Pikiranku adalah bahwa itu akan berpusat di sekitar 0,5, dan bahkan bertemu menjadi 0,5 ketika ukuran sampel, N , bertambah. pA=pBSUniform(0,1)N

Pertanyaan saya adalah, mengapa SUniform(0,1) saat pA=pB ?


Berikut beberapa kode Python untuk diperagakan:

%pylab
from scipy.stats import beta
import numpy as np
import pylab as P

a = b = 0.5
N = 10000
samples = [] #collects the values of S
for i in range(5000):
    assert a==b
    A = np.random.binomial(N, a); B = np.random.binomial(N, b)
    S = (beta.rvs(A+1, N-A+1, size=15000) > beta.rvs(B+1, N-B+1, size=15000)).mean() 
    samples.append(S)

P.hist(samples)
P.show()
Cam.Davidson.Pilon
sumber
Perhatikan bahwa tidak bisa persis seragam, karena itu adalah variabel diskrit. Karena itu Anda bertanya tentang perilaku asimptotik. Selain itu, untuk kecil (kurang dari , kira-kira, dengan ) distribusinya bahkan tidak mendekati seragam. N 100 / mnt ( p , 1 - p ) p = p A = p BSN100/min(p,1p)p=pA=pB
whuber
@whuber S bukan diskrit, ini adalah probabilitas yang dapat jatuh antara 0 dan 1. Juga, bahkan untuk N rendah, saya mengamati perilaku seragam.
Cam.Davidson.Pilon
2
Saya pasti salah mengerti pengaturan Anda, kalau begitu. Sejauh yang saya tahu, untuk nilai nilai adalah angka. Oleh karena itu, menerima bahwa dan tetap untuk saat ini (seperti yang ada dalam kode Anda), adalah fungsi dari . Tetapi yang terakhir, sebagai realisasi dari dua distribusi Binomial, hanya dapat mencapai satu set nilai yang terpisah. Ketika saya mereproduksi kode Anda , saya mendapatkan histogram jelas tidak seragam untuk kecil . S N , p A , p B S ( n A , n B ) NN,nA,nB,SN,pA,pBS(nA,nB)RN
Whuber
1
Meskipun memang Anda memiliki nilai antara dan , jangan bingung dengan non-diskrit: ia dapat memiliki paling banyak nilai yang berbeda (dan sebenarnya memiliki lebih sedikit dari itu). Ini mungkin tidak menjadi sangat jelas bagi Anda karena simulasi menghasilkan perkiraan dari daripada nilai yang benar dan perkiraan pada dasarnya memiliki distribusi yang kontinu. 0 1 N 2 SS01N2S
whuber
1
@whuber ya, Anda benar, pengamatan yang bagus. Saya masih terjebak pada mengapa itu terlihat seragam.
Cam.Davidson.Pilon

Jawaban:

11

TL; DR: Campuran dari distribusi normal mungkin terlihat seragam ketika ukuran bin besar.

Jawaban ini meminjam dari kode sampel @ whuber (yang saya pikir pertama adalah kesalahan, tetapi dalam retrospeksi mungkin merupakan petunjuk).

Proporsi yang mendasari dalam populasi adalah sama: a = b = 0.5.
Masing-masing kelompok, A dan B memiliki 10.000 anggota: N = 10000.
Kita akan melakukan 5000 ulangan dari simulasi: for i in range(5000):.

Sebenarnya, apa yang kita lakukan adalah dari . Di masing-masing dari 5000 iterasi kita akan melakukan . s i msimulationprime s i m u l a t i o n p r i m e s i m u l a t i o n usimulationunderlyingsimulationprimesimulationunderlying

Dalam setiap iterasi dari kita akan mensimulasikan nomor acak dari A dan B yang 'keberhasilan' (AKA dikonversi) diberikan proporsi yang mendasari yang sama ditetapkan sebelumnya: . Secara nominal ini akan menghasilkan A = 5000 dan B = 5000, tetapi A dan B bervariasi dari sim run ke sim run dan didistribusikan melintasi 5000 simulasi berjalan secara independen dan (kurang-lebih) secara normal (kami akan kembali ke sana).simulationprimeA = np.random.binomial(N, a); B = np.random.binomial(N, b)

Sekarang mari kita melangkahi untuk satu iterasi tunggal di mana A dan B telah mengambil jumlah keberhasilan yang sama (seperti rata-rata kasus). Dalam setiap iterasi dari kita akan, diberikan A dan B, membuat variasi acak dari distribusi beta untuk setiap grup. Kemudian kita akan membandingkannya dan mencari tahu apakah , menghasilkan TRUE atau FALSE (1 atau 0). Pada akhir jangka waktu , kami telah menyelesaikan 15000 iterasi dan memiliki 15000 nilai TRUE / FALSE. Rata-rata ini akan menghasilkan nilai tunggal dari distribusi sampling (sekitar normal) dari proporsi s i m u l a t i o n p r i m e s i m u l a t i o n u n d e r l y i n g B e t a A >simulationunderlyingsimulationprimesimulationunderlying simulatio n u n d e r l y i n g B e t a A > B e t a BBetaA>BetaBsimulationunderlyingBetaA>BetaB .

Kecuali sekarang akan memilih nilai 5000 A dan B. A dan B jarang akan sama persis, tetapi perbedaan tipikal dalam jumlah keberhasilan A dan B dikerdilkan oleh ukuran sampel total A dan B. As dan B khas akan menghasilkan lebih banyak tarikan dari distribusi sampling mereka dengan proporsi , tetapi yang ada di tepi distribusi A / B juga akan ditarik.B e t a A > B e t a BsimulationprimeBetaA>BetaB

Jadi, yang pada intinya kita menarik banyak sim run adalah kombinasi distribusi sampling dari untuk kombinasi A dan B (dengan lebih banyak tarikan dari distribusi sampling yang dibuat dari nilai-nilai umum A dan B dari nilai-nilai yang tidak biasa dari A dan B). Ini menghasilkan campuran distribusi normal-ish. Ketika Anda menggabungkan mereka di atas ukuran nampan kecil (seperti default untuk fungsi histogram yang Anda gunakan dan ditentukan langsung dalam kode asli Anda), Anda berakhir dengan sesuatu yang tampak seperti distribusi yang seragam.BetaA>BetaB

Mempertimbangkan:

a = b = 0.5
N = 10
samples = [] #collects the values of S
for i in range(5000):
    assert a==b
    A = np.random.binomial(N, a); B = np.random.binomial(N, b)
    S = (beta.rvs(A+1, N-A+1, size=15000) > beta.rvs(B+1, N-B+1, size=15000)).mean() 
    samples.append(S)

P.hist(samples,1000)
P.show()
russellpierce
sumber
1
Jadi ada perbedaan antara saya dan kode Anda. Saya sampel A dan B di setiap loop, Anda sampel sekali dan menghitung S 5000 kali.
Cam.Davidson.Pilon
1
Perbedaan terletak pada panggilan Anda ke rbinom, yang mengembalikan vektor. Panggilan berikutnya ke rbetadalam replicateadalah vektor, sehingga loop (internal) internal menggunakan dan berbeda untuk masing-masing 15000 variabel acak yang dihasilkan (membungkus sekitar 5000 final sejak Anda ). Lihat lebih lanjut. Ini berbeda dari kode @ Cam dengan memiliki dan tetap tunggal yang digunakan di semua 15000 panggilan variate acak untuk masing-masing dari 5000 sampling ( ) loop. B A BABNSIM = 10000?rbetaABreplicate
kardinal
1
inilah output untuk mereka yang penasaran: imgur.com/ryvWbJO
Cam.Davidson.Pilon
1
Satu-satunya hal yang saya ketahui yang berpotensi berkaitan pada tingkat konseptual adalah bahwa a) distribusi hasil yang diharapkan simetris, b) ukuran bin 1 selalu seragam, c) ukuran bin 2 untuk distribusi simetris juga akan selalu tampak seragam, d) jumlah distribusi pengambilan sampel yang mungkin yang dapat diambil dari kenaikan dengan N, e) nilai S tidak dapat menumpuk pada 0 atau 1 saja karena beta tidak terdefinisi ketika ada 0 keberhasilan dalam kedua kelompok , dan f) sampel dibatasi antara 0 dan 1.
russellpierce
1
Sebagai masalah observasi saja kita dapat melihat bahwa jarak antara centroid distribusi sampel berkurang ketika centroid distribusi sampel bergerak menjauh dari 0,5 (mungkin terkait dengan poin f di atas). Efek ini cenderung untuk menetralkan kecenderungan untuk frekuensi pengamatan yang tinggi untuk keberhasilan yang hampir sama pada kelompok A dan kelompok B. Namun, memberikan solusi matematika mengapa itu atau mengapa harus menghasilkan distribusi normal untuk ukuran bin tertentu tidak berada di dekat wilayah saya.
russellpierce
16

Untuk mendapatkan intuisi tentang apa yang sedang terjadi, mari kita merasa bebas untuk membuat sangat besar dan dengan demikian mengabaikan perilaku dan mengeksploitasi teorema asimtotik yang menyatakan bahwa distribusi Beta dan Binomial menjadi mendekati Normal. (Dengan beberapa masalah, semua ini bisa dibuat sulit.) Ketika kita melakukan ini, hasilnya muncul dari hubungan spesifik di antara berbagai parameter.O ( 1 / N )NO(1/N)


Karena kami berencana untuk menggunakan perkiraan Normal, kami akan memperhatikan harapan dan varian variabel:

  • Sebagai Binomial variates, dan memiliki harapan dan varians dari . Akibatnya dan memiliki harapan dari dan varians .n A n B p N p ( 1 - p ) N α = n A / N β = n B / N p p ( 1 - p ) / N(N,p)nAnBpNp(1p)Nα=nA/Nβ=nB/Npp(1p)/N

  • Sebagai Beta , memiliki ekspektasi dan varian . Mendekati, kami menemukan bahwa memiliki harapanP A ( n A + 1 ) / ( N + 2 ) ( n A + 1 ) ( N + 1 - n A ) / [ ( N + 2 ) 2 ( N + 3 ) ](nA+1,N+1nA)PA(nA+1)/(N+2)(nA+1)(N+1nA)/[(N+2)2(N+3)]PA

    E(PA)=α+O(1/N)

    dan varian dari

    Var(PA)=α(1α)/N+O(1/N2),

    dengan hasil yang serupa untuk .PB

Oleh karena itu, mari kita distribusi dan dengan Normal dan Normal (di mana parameter kedua menentukan varians ). Distribusi akibatnya kira-kira Normal; yakni,PAPB(α,α(1α)/N)(β,β(1β)/N)PAPB

PAPBNormal(αβ,α(1α)+β(1β)N).

Untuk sangat besar , ekspresi tidak akan berbeda dari kecuali dengan probabilitas yang sangat rendah ( istilah lainnya yang diabaikan ). Dengan demikian, membiarkan menjadi CDF normal standar,Nα(1α)+β(1β)p(1p)+p(1p)=2p(1p)O(1/N)Φ

Pr(PA>PB)=Pr(PAPB>0)Φ(αβ2p(1p)/N).

Tetapi karena memiliki rata-rata nol dan varians adalah standar Normal variate (setidaknya sekitar). adalah probabilitas integral perubahannya ; adalah seragam .αβ2p(1p)/N, Z=αβ2p(1p)/NΦΦ(Z)

whuber
sumber
1
Saya bersama Anda sampai ... lalu Anda pergi ke arah lain yang saya tidak cukup ikuti. Apakah didefinisikan dua kali, sekali sebagai CDF normal standar dan kemudian sebagai probabilitas integral berubah? Saya harap Anda dapat memperluas deskripsi Anda di sekitar langkah-langkah ini dan menghubungkannya dengan kode / masalah awal. Mungkin berputar kembali dan menyatakan kembali parameter spesifik mana yang menghasilkan hasil yang seragam. PAPBNormalΦ
russellpierce
1
@ rpierce (1) Perbedaan kira-kira normal karena dan independen dan masing-masing kira-kira normal. Mean adalah perbedaan dari mean dan varians adalah jumlah dari varians. (2) Transformasi integral probabilitas adalah CDF: itu adalah kasus untuk setiap variabel acak dengan distribusi kontinu , bahwa seragam. PAPBPAPBXFF(X)
whuber
1
Oh saya mendapat 1, itu barang setelah itu di mana saya tersesat. Ini akan menjadi sangat bodoh, tetapi mengapa sama dengan CDF? Pr(PA>PB)
russellpierce
1
@ rpierce Yang mengikuti langsung dari definisi, tetapi ada sedikit twist di mana simetri distribusi Normal dipanggil. Kami sedang berhadapan dengan variate normal diasumsikan memiliki harapan dan varians . Standarisasi , adalah wajar untuk menulis ulang probabilitas sebagaiX=PAPBμ=αβσ2=2p(1p)/NX
Pr(X>0)=Pr((Xμ)/σ>(0μ)/σ)=1Φ(μ/σ)=Φ(μ/σ).
whuber
3
@whuber ini sangat menakjubkan. Anda adalah guru yang luar biasa. Saya menghargai jawaban Anda dan rpierce, saya akan tetap memberinya pujian karena itu menyelesaikan masalah kami, dan Anda telah menunjukkan mengapa perilaku itu terjadi. Ty!
Cam.Davidson.Pilon