(Partie 2)
(Reportez-vous à la page qui apparaît dans le texte Les statistiques sont l'étude la plus solide [Pratique] Réflexions et méthodes d'analyse des données-par Kei Nishiuchi Voici la page du livre /9784478028230.html).
Dans la partie 2, comme dans l'exemple de P61, considérez le résultat de lancer 2 sets (c'est-à-dire lancer des pièces 4 fois), en supposant que "lancer deux fois" = "1 set". Puisque les pièces sont lancées quatre fois, le motif qui apparaît est
--Table 0 fois --Table une fois --Table deux fois --Table 3 fois --Table 4 fois
5 façons.
from random import randint
from decimal import Decimal
from prettytable import PrettyTable
import numpy as np
def tossBiasedCoin():
""" Returns 0 or 1 with 0 having 2/3 chance """
return randint(0,2) % 2
# Make a 3x3 array
counts = [[0 for j in range(3)] for i in range(3)]
# Toss a coin many times to get counts
sampleCount = 50000
for num in range(sampleCount):
firstSet = [tossBiasedCoin(),tossBiasedCoin()]
secondSet = [tossBiasedCoin(),tossBiasedCoin()]
counts[sum(secondSet)][sum(firstSet)] += 1
# Conert all counts to perentage
TWOPLACES = Decimal(10) ** -2
for i in range(3):
for j in range(3):
value = counts[i][j]
counts[i][j] = (100 * Decimal(counts[i][j])/Decimal(sampleCount)).quantize(TWOPLACES)
print("Converted the value {} to percentage {}".format(value, counts[i][j]))
# Make summaries of number of heads.
keys = np.arange(5)
values = [counts[0][0], # 0
counts[0][1]+counts[1][0], # 1
counts[0][2]+counts[2][0]+counts[1][1],
counts[1][2]+counts[2][1],
counts[2][2]]
# Add row descriptions
counts[0].insert(0, '2nd set 0 head')
counts[1].insert(0, '2nd set 1 head')
counts[2].insert(0, '2nd set 2 heads')
# Create table with column descriptions, add rows, then show it.
table = PrettyTable(["", "1st set 0 head", "1st set 1 head", "1st set 2 heads"])
table.padding_width = 1
table.add_row(counts[0])
table.add_row(counts[1])
table.add_row(counts[2])
print table
# Draw a bar chart
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
rects = plt.bar(keys,
values,
0.5,
alpha=0.4,
align="center",
color='b')
plt.xlabel('Number of heads with two sets')
plt.ylabel('Probability (%)')
plt.title('Probabilities heads with a biased coin')
plt.xticks(keys, np.arange(5))
plt.tight_layout()
plt.show()
La structure du programme est fondamentalement la même que la dernière fois.
Créez une liste 3x3 pour qu'elle soit identique à la figure 1-19.
# Make a 3x3 array
counts = [[0 for j in range(3)] for i in range(3)]
Bouclez 500 000 fois et lancez des pièces 4 fois au total.
# Toss a coin many times to get counts
sampleCount = 50000
for num in range(sampleCount):
firstSet = [tossBiasedCoin(),tossBiasedCoin()]
secondSet = [tossBiasedCoin(),tossBiasedCoin()]
counts[sum(secondSet)][sum(firstSet)] += 1
Cela devient un peu gênant. Le modèle «table est deux fois (feuilles)» est sur 2 ensembles Le premier jeu comprend 2 feuilles, le deuxième jeu contient 0 feuilles 0 pour le 1er set, 2 pour le 2ème set 1 pour le 1er set, 1 pour le 2ème set Il y a 3 façons, alors ajoutez-les toutes.
# Make summaries of number of heads.
keys = np.arange(5)
values = [counts[0][0], # 0
counts[0][1]+counts[1][0], # 1
counts[0][2]+counts[2][0]+counts[1][1],
counts[1][2]+counts[2][1],
counts[2][2]]
Ajoutez une troisième ligne pour passer d'une structure 2x2 à une structure 3x3.
# Add row descriptions
counts[0].insert(0, '2nd set 0 head')
counts[1].insert(0, '2nd set 1 head')
counts[2].insert(0, '2nd set 2 heads')
Fondamentalement, des changements sont apportés en réponse à l'augmentation.
# Create table with column descriptions, add rows, then show it.
table = PrettyTable(["", "1st set 0 head", "1st set 1 head", "1st set 2 heads"])
table.padding_width = 1
table.add_row(counts[0])
table.add_row(counts[1])
table.add_row(counts[2])
print table
# Draw a bar chart
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
rects = plt.bar(keys,
values,
0.5,
alpha=0.4,
align="center",
color='b')
plt.xlabel('Number of heads with two sets')
plt.ylabel('Probability (%)')
plt.title('Probabilities heads with a biased coin')
plt.xticks(keys, np.arange(5))
plt.tight_layout()
plt.show()
Cela ressemble à un graphique "écart-type"! C'est ce que ce chapitre est sur le point de démontrer en premier lieu.
De plus, on peut voir que la probabilité "d'une table" est la plus élevée. Cela signifie que "la probabilité de lancer 4 fois et le tableau apparaît (1/3)" est "4 x 1/3" = 1,333. En d'autres termes, cela signifie que "lancer quatre cartes se traduira généralement par une table".
(Partie 3) se poursuit.
Recommended Posts