답변:
원하는 평균은 방정식으로 제공됩니다.
이로부터의 확률이 그 이하 1s
이어야.525
파이썬에서 :
x = np.random.choice([-1,1], size=int(1e6), replace = True, p = [.475, .525])
증명:
x.mean()
0.050742000000000002
1과 -1의 1'000'000 샘플을 사용한 1'000 실험 :
완전성을 위해 (@Elvis에 대한 팁) :
import scipy.stats as st
x = 2*st.binom(1, .525).rvs(1000000) - 1
x.mean()
0.053859999999999998
1과 -1의 1'000'000 샘플을 사용한 1'000 실험 :
그리고 마지막으로 @ Łukasz Deryło (Python에서도)에서 제안한 바와 같이 균일 분포에서 도출합니다.
u = st.uniform(0,1).rvs(1000000)
x = 2*(u<.525) -1
x.mean()
0.049585999999999998
1과 -1의 1'000'000 샘플을 사용한 1'000 실험 :
세 가지 모두 거의 동일하게 보입니다!
편집하다
Central의 몇 줄은 정리와 결과 분포의 확산을 제한합니다.
우선, 수단의 추첨은 실제로 정규 분포를 따릅니다.
둘째, @Elvis는이 답변에 대한 논평에서 1,000 회 실험 (약 (0.048; 0.052)), 95 % 신뢰 구간에 걸쳐 도출 된 평균의 정확한 확산에 대해 훌륭한 계산을 수행했습니다.
그의 결과를 확인하기위한 시뮬레이션 결과는 다음과 같습니다.
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])
EXACT 0.05를 원할 경우 MATLAB에서 다음 R 코드와 동등한 기능을 수행 할 수 있습니다.
sample(c(rep(-1, 95*50), rep(1, 105*50)))