Su media deseada está dada por la ecuación:
N⋅p−N⋅(1−p)N=.05
de la que se deduce que la probabilidad de que el 1s
debe ser.525
En Python:
x = np.random.choice([-1,1], size=int(1e6), replace = True, p = [.475, .525])
Prueba:
x.mean()
0.050742000000000002
1'000 experimentos con 1'000'000 muestras de 1s y -1s:
En aras de la exhaustividad (punta de sombrero para @Elvis):
import scipy.stats as st
x = 2*st.binom(1, .525).rvs(1000000) - 1
x.mean()
0.053859999999999998
1'000 experimentos con 1'000'000 muestras de 1s y -1s:
Y, finalmente, a partir de la distribución uniforme, como lo sugiere @ Łukasz Deryło (también, en Python):
u = st.uniform(0,1).rvs(1000000)
x = 2*(u<.525) -1
x.mean()
0.049585999999999998
1'000 experimentos con 1'000'000 muestras de 1s y -1s:
¡Los tres se ven prácticamente idénticos!
EDITAR
Un par de líneas en el teorema del límite central y la distribución de las distribuciones resultantes.
En primer lugar, los sorteos de medios siguen a la Distribución Normal.
En segundo lugar, @Elvis en su comentario a esta respuesta hizo algunos buenos cálculos sobre la distribución exacta de las medias obtenidas en 1'000 experimentos (circa (0.048; 0.052)), intervalo de confianza del 95%.
Y estos son los resultados de las simulaciones, para confirmar sus resultados:
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])
Una variable con valores y tiene la forma con a Bernoulli con el parámetro . Su valor esperado es , por lo que sabe cómo obtener (aquí ).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
En R puede generar variables de Bernoulli con
rbinom(n, size = 1, prob = p)
, por ejemplo,fuente
Genere muestras uniformemente a partir de , recodifique números inferiores a 0.525 a 1 y descanse a -1.[ 0 , 1 ]N [0,1]
Entonces su valor esperado es
No soy un usuario de Matlab, pero supongo que debería ser
fuente
Necesita generar más 1s que -1s. Precisamente, un 5% más de 1s porque quieres que tu media sea 0.05. Entonces, aumenta la probabilidad de 1s en un 2.5% y disminuye -1s en un 2.5%. En su código es equivalente a cambiar
0.5
a0.525
, es decir, del 50% al 52.5%fuente
En caso de que desee un EXACT 0.05 significa que puede hacer el equivalente al siguiente código R en MATLAB:
fuente