問題は、政府が電子ルーレットを閉鎖することを望んでおり、ルーレットが統計的検定で失敗したと主張していることです。
私の言語では申し訳ありませんが、これはスロベニアの法律から可能な限り翻訳された公式の(法律による)要件は次のとおりです。
- 各イベントの頻度は、予想される頻度と3シグマを超えてはなりません。
- 正規分布のカイ二乗検定は0.025のリスクレベル内にある必要があります
- 連続相関の検定は、3シグマ検定とカイ2乗検定に合格する必要があります。
最初の2つの要件をテストし、それらはテストに合格しましたが、3番目の要件を理解するのに問題があります。(これは翻訳されており、「連続した相関」は別のものになる可能性があることに注意してください)
3番目の要件をテストするにはどうすればよいですか?
誰かが興味を持っている場合のデータ:http :
//pastebin.com/ffbSKpr1
編集:カイ二乗は2%の確率で失敗します(アルファが0.025であるために予想されることです)、sigma3テストは5%失敗しますが、3sigmaでは9%の失敗が予想されます(それに従って周波数が分散されていないようです)乱数でも正規分布)
私はこの法則を正しく理解していないかもしれませんが、すべての自己相関ベクトルに対して3シグマテストに合格する確率はほぼ0%です。
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 )