El problema es que el gobierno quiere cerrar la ruleta electrónica y afirman que la ruleta falló en la prueba estadística.
Lo siento por mi idioma, pero esto está traducido de la ley eslovena lo mejor posible Los requisitos oficiales (por ley) son:
- la frecuencia de cada evento no debe diferir de la frecuencia esperada en más de 3 sigma
- La prueba de chi cuadrado de distribución normal debe estar dentro del nivel de riesgo de 0.025
- La prueba de correlación consecutiva tiene que pasar la prueba 3 sigma y la prueba de chi cuadrado
He probado los primeros 2 requisitos y pasan las pruebas, pero tengo problemas con la comprensión del tercer requisito. (tenga en cuenta que esto se traduce y la "correlación consecutiva" puede ser otra cosa)
¿Cómo debo probar el tercer requisito?
Datos si alguien está interesado:
http://pastebin.com/ffbSKpr1
EDITAR: el chi cuadrado falla el 2% del tiempo (lo que espero que se espere debido al hecho de que alfa es 0.025) y la prueba sigma3 falla el 5% donde espero un 9% de falla para 3sigma (parece que las frecuencias no se distribuyen de acuerdo con distribución normal incluso para números aleatorios)
Es posible que no entienda esta ley correctamente, pero es casi un 0% de probabilidad de pasar la prueba 3sigma para todos los vectores de autocorrelación, ya que es un 9% de probabilidad de fallar en una sola ejecución y 2.5 para la prueba de chi cuadrado.
Código de Python:
from math import sqrt
from itertools import *
import random
#uncoment for python 2.x
#zip = izip
#range = xrange
#with open("rng.txt","r") as wr:
# n = [int(i) for i in wr]
n = [random.randint(0,36) for i in range(44000)]
def get_freq(n):
r=[0 for i in range(37)]
for i in n:
r[i] += 1
return r
def trisigmatest(freq):
Ef = 1.0*sum(freq)/37
sigma = sqrt(sum(i**2 for i in freq)/37-Ef**2)
return all((abs(i - Ef )< sigma*3) for i in freq)
def chiquaretest(freq):
Ef = 1.0*sum(freq)/37
chi2 = sum((i-Ef)**2 / Ef for i in freq)
# values are from http://itl.nist.gov/div898/handbook/eda/section3/eda3674.htm
# (EDIT) I recaluclated these valuse from inverse cdf chi2
# distribution for interval (0.025/2,1-0.025/2) (alpha = 0.025)
return 20.4441 < chi2 < 58.8954
#whitout autocorelation
gf = get_freq(n)
if not trisigmatest(gf):
print("failed")
raise
if not chiquaretest(gf):
print("failed")
raise
actests = 1000
trifailed = 0;
chifailed = 0;
for i in range(1,actests + 1):
f=((b-a+37) % 37 for (a,b) in zip(n,n[i:]))
gf = get_freq(f)
if not trisigmatest(gf):
trifailed += 1;
if not chiquaretest(gf):
chifailed += 1;
print("trisigmatest failed ", 1.0 * trifailed / actests )
print("chiquaretest failed ", 1.0 * chifailed / actests )
Respuestas:
Para un juego justo, las jugadas sucesivas deben ser independientes. Parece que le piden que realice una prueba de que los resultados consecutivos no están correlacionados. Puede hacerlo emparejando los datos permitidosR1,R2,...,R2n sé el primero 2n resultados. Entonces puedes formarn pares distintos
(R1,R2) , (R3,R4),...,(R2n−1,R2n) . Calcular el coeficiente de correlación de Pearson es diferente de cero (si los datos son continuos o incluso un conjunto de enteros). Si los datos son0/1 para perder / ganar puede probar la independencia en el 2×2 tabla obtenida mediante el uso de los recuentos para (0,0),(0,1),(1,0) y (1,1) . En este caso de0/1 la prueba de carreras de Wald y Wofowitz sugerida anteriormente también podría usarse. Según se describe en la regla, parece que quieren que construyas un intervalo de confianza para la correlación con medio ancho igual a3σ . Pasarías si0 está contenido en el intervalo. Sin embargo, estas pruebas parecen ser demasiado fáciles de aprobar.
fuente