Mean yang Anda inginkan diberikan oleh persamaan:
N⋅p−N⋅(1−p)N=.05
dari yang mengikuti bahwa probabilitas 1s
seharusnya.525
Dengan Python:
x = np.random.choice([-1,1], size=int(1e6), replace = True, p = [.475, .525])
Bukti:
x.mean()
0.050742000000000002
1'000 percobaan dengan 1'000'000 sampel 1s dan -1s:
Demi kelengkapan (ujung hat ke @ Elvis):
import scipy.stats as st
x = 2*st.binom(1, .525).rvs(1000000) - 1
x.mean()
0.053859999999999998
1'000 percobaan dengan 1'000'000 sampel 1s dan -1s:
Dan akhirnya menggambar dari distribusi yang seragam, seperti yang disarankan oleh @ Łukasz Deryło (juga, dengan Python):
u = st.uniform(0,1).rvs(1000000)
x = 2*(u<.525) -1
x.mean()
0.049585999999999998
1'000 percobaan dengan 1'000'000 sampel 1s dan -1s:
Ketiganya terlihat hampir identik!
EDIT
Beberapa garis pada teorema limit Tengah dan penyebaran distribusi yang dihasilkan.
Pertama-tama, penarikan sarana memang mengikuti Distribusi Normal.
Kedua, @ Elvis dalam komentarnya untuk jawaban ini melakukan beberapa perhitungan yang bagus pada penyebaran yang tepat dari rata-rata yang diambil lebih dari 1.000 eksperimen (sekitar (0,048; 0,052)), interval kepercayaan 95%.
Dan ini adalah hasil dari simulasi, untuk mengkonfirmasi hasilnya:
mn = []
for _ in range(1000):
mn.append((2*st.binom(1, .525).rvs(1000000) - 1).mean())
np.percentile(mn, [2.5,97.5])
array([ 0.0480773, 0.0518703])
Variabel dengan nilai dan berbentuk dengan a Bernoulli dengan parameter . Nilai yang diharapkan adalah , jadi Anda tahu cara mendapatkan (di sini ).1 Y = 2 X - 1 X p E ( Y ) = 2 E ( X ) - 1 = 2 p - 1 p p = 0,525−1 1 Y=2X−1 X p E(Y)=2E(X)−1=2p−1 p p=0.525
Dalam R Anda dapat menghasilkan variabel Bernoulli dengan
rbinom(n, size = 1, prob = p)
, jadi misalnyasumber
Hasilkan sampel secara seragam dari , angka recode lebih rendah dari 0,525 ke 1 dan sisanya ke -1.[ 0 , 1 ]N [0,1]
Maka nilai yang Anda harapkan adalah
Saya bukan pengguna Matlab, tapi saya rasa itu sholud
sumber
Anda perlu menghasilkan lebih dari 1s dari -1s. Tepatnya, 5% lebih banyak 1s karena Anda ingin mean Anda menjadi 0,05. Jadi, Anda meningkatkan probabilitas 1s sebesar 2,5% dan menurunkan -1s sebesar 2,5%. Dalam kode Anda itu setara dengan mengubah
0.5
ke0.525
, yaitu dari 50% menjadi 52,5%sumber
Jika Anda menginginkan EXACT 0,05 berarti Anda dapat melakukan yang setara dengan kode R berikut di MATLAB:
sumber