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

8

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 )
ralu
fuente
3
dober dan! ¿sabe si la ley oficial está diseñada para la ruleta o para otros dispositivos de juego? (máquina tragaperras, póker, etc) el tercer sonidos requisito como autocorrelación, o podría ser probado por la prueba de Wald-Wolfowitz, etc.
shabbychef
Está diseñado para dispositivos de juego en general. El enlace para la ley (en esloveno) está en unpis.gov.si/fileadmin/unpis.gov.si/pageuploads/zakonodaja/… (párrafo 6)
ralu
Mi suegra es eslovena, pero no creo que ella pueda traducir esto muy bien. Quizás la prueba a la que se refieren es la autocorrelación de los rendimientos para un jugador que siempre juega el número 17, por ejemplo. (¿y repetir para cada número?) Tal vez hurgar en en.wikipedia.org/wiki/Diehard_tests también sería instructivo.
shabbychef
Quizás lo que están pidiendo es una regresión retrasada, es decir: ¿predice el número anterior al número siguiente?
russellpierce

Respuestas:

2

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 2nresultados. Entonces puedes formarn pares distintos (R1,R2), (R3,R4),...,(R2n1,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/1la 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 si0está contenido en el intervalo. Sin embargo, estas pruebas parecen ser demasiado fáciles de aprobar.

Michael R. Chernick
fuente