8 votos

Estadísticas para la validación de máquinas de juego

El problema es que el gobierno quiere cerrar la ruleta electrónica y afirman que la ruleta no pasó la prueba estadística.

Perdón 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 la distribución normal tiene que estar dentro del nivel de riesgo de 0,025
  • la prueba de correlación consecutiva tiene que pasar la prueba de 3 sigmas y la prueba de chi cuadrado

He probado los dos primeros requisitos y pasan las pruebas, pero tengo problemas para entender el tercer requisito. (tenga en cuenta que esto está traducido y "correlación consecutiva" puede ser otra cosa)

¿Cómo debo comprobar el tercer requisito?

Datos si alguien está interesado:
http://pastebin.com/ffbSKpr1

EDITAR: chi cuadrado falla el 2% de las veces (lo que espero que se espera debido al hecho de que el alfa es 0,025) y la prueba de sigma3 falla el 5% donde espero el 9% de fracaso para 3sigma (parece que las frecuencias no se distribuyen de acuerdo a la distribución normal, incluso para los números aleatorios)

Puede que no entienda bien esta ley, 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 chi cuadrado.

Código 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 )

2voto

mat_geek Puntos 1367

Para que el juego sea justo, las jugadas sucesivas deben ser independientes. Parece que le piden que realice una prueba de que los resultados consecutivos no están correlacionados. Podrías hacerlo emparejando los datos dejándolos $R_1, R_2,...,R_{2n}$ ser el primero $2n$ resultados. A continuación, puede formar $n$ pares de distntos $(R_1,R_2)$ , $(R3, R4),...,(R_{2n-1}, R_{2n})$ . 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 son $0/1$ para perder/ganar se puede probar la independencia en el $2\times2$ tabla obtenida a partir de los recuentos de $(0,0), (0,1),(1,0)$ y $(1,1)$ . En este caso de $0/1$ también se podría utilizar la prueba de las carreras de Wald y Wofowitz sugerida anteriormente. Por la forma en que se describe en la norma, parece que quieren que construyas un intervalo de confianza para la correlación con una anchura media igual a $3\sigma$ . Usted pasaría si $0$ está contenido en el intervalo. Sin embargo, estas pruebas parecen ser demasiado fáciles de pasar.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X