[PYTHON] Détection des statistiques d'injustice de Chinchiro de Hancho - Partie 2

introduction

Connaissez-vous ** Otsuki Team Leader **? C'est vrai, il est le chef d'équipe vilain qui apparaît dans l'installation souterraine de travaux forcés du dessin animé Kaiji. Même si vous ne savez pas, j'ai entendu la citation de Kaiji quand il a bu de la bière crue ** "Il fait froid de pervers ... !!" "C'est criminel ... c'est trop bon ..." ** N'est-ce pas? ** La personne qui a donné la bière crue à Kaiji. ** ** En fait, il est très populaire parmi ce chef d'équipe Otsuki et certains fans, et jusqu'à 9 volumes de dessins animés dérivés ont déjà été vendus. Je l'ai lu, mais c'est pénalement intéressant. Cette fois, j'essaierai de tester la distribution binomiale en détectant statistiquement la fraude de Chinchiro que M. Otsuki faisait dans l'installation souterraine de travaux forcés.

image.png

Règles de Chinchirorin (version souterraine)

Le jeu qui a eu lieu dans l'installation souterraine de travaux forcés est Chinchirorin (abrégé en Chinchiro). Les règles sont très simples ** Jetez trois dés dans un bol et la force du rôle que vous jouez déterminera le résultat. ** Les participants s'assoient en cercle comme indiqué dans la figure ci-dessous, d'abord les parents se balancent, puis les enfants se balancent dans le sens antihoraire, et Pelica (1 yen dans la devise de l'installation de travail souterraine = 1 yen dans la devise de l'installation de travail souterraine) en fonction de ce qui est le plus fort 10 Pelica) vont et viennent. L'image est comme indiqué ci-dessous.

image.png

** La force du rôle est indiquée dans le tableau ci-dessous. ** ** image.png

Fondamentalement, celui qui a de grands yeux est plus fort, et les épées et shigoro sont les rôles au-dessus. À propos, si vous souhaitez copier un grand nombre des mêmes pièces dans des positions parallèles (haut, bas, gauche et droite) avec powerpo comme indiqué dans le tableau ci-dessus, il est très facile d'utiliser Ctrl + Maj + glisser la souris.

Les dés de triche de Hancho

Maintenant, jetons un coup d'œil aux dés de calmar utilisés par Hanchou. ** Les dés de triche n'ont que 4 à 6 lancers, mais les mêmes numéros sont placés de sorte qu'ils soient situés du côté opposé, donc vous ne pouvez pas remarquer au premier coup d'œil les dés lancés. C'est devenu comme. ** **

image.png

** De plus, Hancho a pris les deux mesures suivantes pour empêcher l'exposition des calmars. ** **

  1. Si vous l'utilisez tout le temps, vous serez pris, vous ne l'utiliserez donc que deux fois dans une partie.
  2. Lorsque vous l'utilisez comme numéro de parent, laissez l'enfant le secouer pour éliminer l'inconfort.

Testé par jet de dés

Je voudrais examiner comment détecter l'Ikasama du chef d'équipe Otsuki à l'aide de statistiques estimées. L'histoire de Poancare et de la boulangerie, qui est une anecdote célèbre de statistiques estimées, est présentée dans cet article. Pour faire simple, le test des statistiques putatives est une méthode pour émettre à l'avance une hypothèse sur la population et confirmer que l'échantillon obtenu se situe dans une fourchette réaliste. ** **

On suppose que jouer avec 10 personnes et faire tourner les parents pendant un tour est "une partie". Le jet de dés a été implémenté en utilisant la fonction aléatoire de Python.

Les résultats (total des lancers de dés) de la tenue de registres chaque jour pendant 10 jours sont indiqués ci-dessous. Je lance trois dés à la fois, mais par souci de simplicité, je pense à eux tous indépendamment. Vous pouvez voir qu'il y en a beaucoup de 4 à 6 en quelque sorte.

image.png

Avec un dé normal, la probabilité de lancer 4 à 6 devrait être de 1/2, donc l'hypothèse nulle est que "lorsque vous lancez ce dé 300 fois, vous obtiendrez 4 à 6". C'est la moitié de 150 fois. " ** **

Le nombre de succès lorsque n essais avec une probabilité de succès de p suivent une ** distribution binomiale **. La ** valeur attendue du nombre de succès dans la distribution binomiale (le nombre de fois où 4 à 6 apparaissent) est E (X) = np **, et la ** variance est V (x) = np (1-p) **. Ensuite, en standardisant la distribution binomiale avec la formule suivante, elle est approchée de la distribution normale standard N (0, 1). Puisque le taux de rejet est de 1% en tant que test bilatéral, l'hypothèse nulle est correcte si z dans l'équation suivante se situe entre -2,68 et 2,68.


\begin{align}
z=\frac{X-np}{\sqrt{np(1-p)} \\}
\end{align}

** Et le résultat? ** **

image.png

** Puisque la valeur observée n'est pas entrée dans la zone rejetée, la conclusion est que la valeur observée est réaliste même avec un dé normal. ** **

Testé en combinant les trois côtés des dés que vous pouvez voir

Comme considération suivante, ** les dés de triche ne prennent que 4 à 6 valeurs, alors pensez à tester "les yeux à trois côtés des dés lancés x les variables de probabilité de trois dés". .. ** * J'ai l'impression que 3 côtés peuvent ne pas être visibles selon l'angle, mais je vais continuer pour le moment La combinaison des yeux de dés que vous pouvez voir est l'un des huit modèles suivants s'il s'agit d'une structure de dés normale. (1,2,3)、(1,2,4)、(1,3,5)、(1,4,5)、(2,3,6)、(2,4,6)、(3,5,6)、(4,5,6) image.png

** Et avec un dé normal, la probabilité qu'il apparaisse (4,5,6) est de 1/8. ** **

** Le chiffre ci-dessous est la valeur observée. C'est la même variable aléatoire qu'avant, mais le biais est plus prononcé. ** **

image.png

** De même, la valeur attendue de la distribution binomiale a été testée. Et le résultat? ** **

image.png

** Les valeurs observées étant éloignées, l'hypothèse nulle a été rejetée et on a conclu que Hanchou trichait. ** **

code



import math
import random
import numpy as np
import matplotlib.pyplot as plt

#Le motif des yeux visibles des dés que vous pouvez voir
look_pattern = {1:[1,2,3],
                2:[1,2,4],
                3:[1,3,5],
                4:[1,4,5],
                5:[2,3,6],
                6:[2,4,6],
                7:[3,5,6],
                8:[4,5,6]}

counts_single = [0 for _ in range(7)]
counts_multi = [0 for _ in range(9)]

#pour 10 jours
for day in range(10):
    #Ordinaire
    for normal in range(8):
        #3 dés
        for dice_num in range(3):
            #Comment voir les dés
            result = random.randint(1,8)
            counts_multi[result] += 1
            #Lancer de dés
            result = look_pattern[result][random.randint(0,2)]
            counts_single[result] += 1
    #Ikasama
    for ikasama in range(2):
        #3 dés
        for dice_num in range(3):
            #Comment voir les dés
            result = 8
            counts_multi[result] += 1
            #Lancer de dés
            result = look_pattern[result][random.randint(0,2)]
            counts_single[result] += 1
#Lancer de dés
plt.scatter(range(len(counts_single[1:])),counts_single[1:])
plt.plot(range(len(counts_single[1:])),counts_single[1:])
plt.ylim(0,100)
plt.show()

#Dés les yeux que vous pouvez voir
plt.scatter(range(len(counts_multi[1:])),counts_multi[1:])
plt.plot(range(len(counts_multi[1:])),counts_multi[1:])
plt.ylim(0,100)
plt.show()

#Tester
n = sum(counts_multi)
p = 1/8
X = counts_multi[8]
z = (X - n*p) / (n*p*(1-p))**0.5
ok_Xs = np.linspace(-2.68, 2.68, num = 50)

f = lambda x: (math.exp(-x**2/2)) / math.sqrt(2*math.pi)
plt.plot([i*0.1-5 for i in range(100)],[f(i*0.1-5) for i in range(100)], color = "black")
plt.fill_between(ok_Xs, np.zeros_like(ok_Xs),list(map(f, ok_Xs)),facecolor='darkred',alpha=0.5)

plt.plot([z,z],[0,1], color = "blue")
plt.ylim(0,0.4)
plt.xlim(-4,10)

plt.show()

référence

  1. Examen du trou Ikasama et des contre-mesures du chef d'équipe de Kaiji Underground Chinchiro
  2. Règle de Chinchirorin souterraine

À la fin

Merci d'avoir lu jusqu'au bout.

Recommended Posts

Détection des statistiques d'injustice de Chinchiro de Hancho - Partie 2