Respuestas:
Su media deseada está dada por la ecuación:
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
En R puede generar variables de Bernoulli con rbinom(n, size = 1, prob = p)
, por ejemplo,
x <- rbinom(100, 1, 0.525)
y <- 2*x-1
Genere muestras uniformemente a partir de , recodifique números inferiores a 0.525 a 1 y descanse a -1.[ 0 , 1 ]
Entonces su valor esperado es
No soy un usuario de Matlab, pero supongo que debería ser
2*(rand(1, 10000, 1)<=.525)-1
En caso de que desee un EXACT 0.05 significa que puede hacer el equivalente al siguiente código R en MATLAB:
sample(c(rep(-1, 95*50), rep(1, 105*50)))