choose(80,15)[1] 6.63587e+15
title: “Projet” author: “Groupe 4” format: “html” editor: visual editor_options: chunk_output_type: console
Nous expliquons la version du Keno sur l’article où un joueur appellé Bill participe à une version du jeu du Keno.Dans ce jeu on a \(80\) numéros. Sur un bulletin, il sélectionne \(15\) numéros parmi ceux-ci. Ensuite, l’opérateur du Keno choisit aléatoirement \(20\) numéros parmi les \(80\) comme numéros gagnants.
Calculons la probabilité que \(10\) des numéros sélectionnés par Bill fassent partie de l’ensemble des numéros gagnants. En premier lieu, calculons le nombre de manières dont Bill peut choisir ses \(15\) numéros.Autrement dit, déterminons de combien de manières il peut sélectionner \(15\) numéros parmi les \(80\). Mathématiquement, on note ce nombre
\[ \binom{80}{15} \] Dans R, on peut calculer le nombre de maniéres dont Bill peut choisir ses \(15\) numéros parmis les \(80\), en utilisant la formule suivante:
choose(80,15)[1] 6.63587e+15
le nombre est : 6,63587 x 10^15
Pour calculer la probabilité demandée, nous devons effectuer deux opérations:
choose(20,10)[1] 184756
choose(60,5)[1] 5461512
Pour obtenir la probabilité que le bulletin de Bill contienne exactement 10 numéros gagnants, il faut diviser le nombre de cas possible, \(\binom{80}{15}\), par le nombre de cas favorables \(\binom{20}{10}\)x\(\binom{60}{5}\). Ce qui s’écrit mathématiquement de la façon suivante: \[ \frac{\binom{20}{10}\binom{60}{5}}{\binom{80}{15}} \] Pour effectuer le calcul dans R, on fait:
choose(20,10)*choose(60,5)/choose(80,15)[1] 0.0001520595
Le joueur obtient la probabilité qui vaut environ \(1.5\) chances pour \(10000\). Le nombre de numéro gagnants parmi ceux du joueur peuvent varier de \(0\) à \(15\). Si nous appelons \(r\) le nombre de bons numéros, la probabilité d’obtenir \(r\) bons numéros sera donné plus généralement par : $$ ,:r=o,,15.
r<-0:15
choose(20,r) [1] 1 20 190 1140 4845 15504 38760 77520 125970 167960
[11] 184756 167960 125970 77520 38760 15504
choose(60,15-r) [1] 5.319409e+13 1.734590e+13 5.166863e+12 1.399359e+12 3.427001e+11
[6] 7.539403e+10 1.478314e+10 2.558621e+09 3.862069e+08 5.006386e+07
[11] 5.461512e+06 4.876350e+05 3.422000e+04 1.770000e+03 6.000000e+01
[16] 1.000000e+00
choose(20,r)*choose(60,15-r)/choose(80,15) [1] 8.016144e-03 5.227920e-02 1.479390e-01 2.404009e-01 2.502132e-01
[6] 1.761501e-01 8.634808e-02 2.988972e-02 7.331441e-03 1.267163e-03
[11] 1.520595e-04 1.234249e-05 6.496049e-07 2.067708e-08 3.504590e-10
[16] 2.336393e-12
Il est possible d’obtenir ces probabilités de manière plus rapide en utilisant la fonction dhyper en R. La distribution appropriée pour le Kéno est la loi hypergéométrique, et dhyper permet de calculer la probabilité de tirer exactement un certain nombre d’éléments de succès dans un échantillon de taille fixe à partir d’une population de taille spécifiée avec un certain nombre d’éléments de succès.
r<-0:15
dhyper(r, 20, 60, 15,) [1] 8.016144e-03 5.227920e-02 1.479390e-01 2.404009e-01 2.502132e-01
[6] 1.761501e-01 8.634808e-02 2.988972e-02 7.331441e-03 1.267163e-03
[11] 1.520595e-04 1.234249e-05 6.496049e-07 2.067708e-08 3.504590e-10
[16] 2.336393e-12
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
Gains avec le symbole du dollar :
Table 1 extrait de l’article du Keno
Les chances de réaliser des gains sont minuscules pour les résultats qui rapportent de l’argent, et les probabilités associées aux résultats lucratifs sont quasiment négligeables. Dans plus de \(96%\) des situations (en agrégeant les produits pour \((0 < r < 6)\), Bill ne remporte aucun gain. Comment pourrait-on estimer le “gain attendu” de Bill dans ces circonstances ? Pour déterminer cette valeur anticipée, il suffit de multiplier chaque paiement potentiel par sa probabilité respective, puis de sommer ces produits.
# Probabilités pour chaque valeur de r
probabilities <- c(dhyper(r,20,60,15))
# Paiements correspondants pour chaque valeur de r
payoffs <- c(rep(0,7),8,25,130,300,2600,8000,25000,32000,40000)# Définition des gains possibles et de leurs probabilités
gains <- c(rep(0,7),8,25,130,300,2600,8000,25000,32000,40000) # Les gains possibles
probabilites <- c(dhyper(r,20,60,15)) # Les probabilités correspondantes
# Calcul des produits
produits <- gains * probabilites
# Calcul de la somme des produits (l'espérance mathématique)
esperance <- sum(produits)
# Création d'un tableau avec les résultats
resultats <- data.frame(r=0:15, Produit = produits)%>%filter(r>=7)
library(stargazer)
Please cite as:
Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
resultats <- data.frame(r=0:15, Produit = produits)%>%filter(r>=7)
# Affichage du tableau avec stargazer
stargazer(resultats, title = "Calcul de l'espérance mathématique", type = "text", summary = FALSE)
Calcul de l'espérance mathématique
============
r Produit
------------
1 7 0.239
2 8 0.183
3 9 0.165
4 10 0.046
5 11 0.032
6 12 0.005
7 13 0.001
8 14 0.00001
9 15 0.00000
------------
Table 2 extrait de l’article Keno
La somme totale s’élève à \(0,6706\)$, soit approximativement \(0,67\)$. Étant donné que Bill a déboursé $1,00$ $ pour son billet, il devrait anticiper, à long terme, une perte d’argent en jouant au Keno. Cette réalité ne devrait pas le surprendre, car le casino vise clairement à réaliser un profit.
Il est intéressant d’observer l’apport aux attentes totales résultant des produits figurant dans le Tableau II. Pour de petites valeurs de r, ces contributions sont relativement significatives. À mesure que r se rapproche et atteint \(15\) , les produits contribuent presque négligeablement à la somme totale. Bien que le prix maximal de \(40 000\)$ (lorsque \(r = 15\)) puisse sembler considérable, il survient si rarement que le produit est insignifiant.
Notre description du jeu de Bill présupposait qu’il choisissait \(15\) numéros. En réalité, un joueur peut sélectionner moins de \(15\) numéros, avec divers paiements associés à différents résultats. Imaginons que Ginny ne choisisse que \(7\) numéros sur sa carte de Keno.
\[ \frac{\binom{20}{r}\binom{60}{7-r}}{\binom{80}{7}} \] Pour effectuer le calcul dans R, on fait:
choose(20,10)*choose(60,5)/choose(80,15)[1] 0.0001520595
Tableau 3
# Définir les paramètres de la loi binomiale
n <- 5 # nombre d'expériences
p <- 0.2 # probabilité de succèsHistogramme Table1
library(tidyverse)
r <- 0:15
# Probabilités pour chaque valeur de r
probabilities <- dhyper(r, 20, 60, 15)
# Paiements correspondants pour chaque valeur de r
payoffs <- c(rep(0, 7), 8, 25, 130, 300, 2600, 8000, 25000, 32000, 40000)
# Création du data frame avec les probabilités et les paiements
data <- data.frame(probabilities, payoffs)
# Tracer l'histogramme avec ggplot2
ggplot(data, aes(x = payoffs, y = probabilities)) +
geom_histogram(binwidth = 1, fill = "red", color = "black", alpha = 0.5, stat = "identity") +
ggtitle("Distribution des gains pour le Keno") +
xlab("Gain") +
ylab("Probabilités")Warning in geom_histogram(binwidth = 1, fill = "red", color = "black", alpha =
0.5, : Ignoring unknown parameters: `binwidth`, `bins`, and `pad`
# Création du graphique à barres avec espaces enlevés
ggplot(data, aes(x = r, y = probabilities)) +
geom_bar(stat = "identity", fill = "skyblue", color = "black", width = 1) + # Réglez la largeur des barres à 1
labs(x = "r", y = "Probabilités", title = "Graphique à barres des valeurs avec leurs probabilités associées")Le jeu de Keno se compose de 80 numéros, numérotés de 1 à 80. Dans ce jeu, il y a 10000 joueurs. Chaque joueur remplit un bulletin en sélectionnant 15 numéros de son choix parmi les 80 disponibles. Tirage des numéros gagnants par l’organisateur : L’organisateur du jeu, tel qu’un casino ou une autre institution, tire au hasard 20 numéros parmi les 80 disponibles. Ces 20 numéros tirés sont désignés comme les numéros “gagnants”. Détermination des gains des joueurs : Le gain de chaque joueur dépend du nombre de numéros gagnants qui figurent sur son bulletin. Plus un joueur a de numéros gagnants sur son bulletin, plus son gain est élevé. Objectif : Calcul de la probabilité d’un événement spécifique : L’objectif est de calculer la probabilité que chaque joueur ait exactement 10 des numéros sélectionnés qui font partie des numéros gagnants. Cette probabilité est calculée en utilisant la distribution hypergéométrique, qui prend en compte le nombre de numéros sélectionnés par chaque joueur, le nombre total de numéros, le nombre de numéros gagnants tirés par l’organisateur et le nombre exact de numéros gagnants nécessaires pour un gain spécifique.
# Chargement de la bibliothèque nécessaire
library(stats)
# Paramètres du jeu de Keno
total_numbers <- 80 # Nombre total de numéros
selected_numbers <- 15 # Nombre de numéros sélectionnés par chaque joueur
winning_numbers <- 20 # Nombre de numéros gagnants tirés par l'organisateur
# Nombre exact de numéros gagnants que chaque joueur doit avoir
exact_winning_numbers <- 10
# Nombre de joueurs
num_players <- 10000
# Générer les échantillons aléatoires de joueurs avec exactement 10 numéros gagnants
samples <- rhyper(num_players, selected_numbers, total_numbers - selected_numbers, winning_numbers)
# Compter le nombre de joueurs ayant exactement 10 numéros gagnants
num_players_with_10_winning_numbers <- sum(samples == exact_winning_numbers)
# Calculer la probabilité que chaque joueur ait exactement 10 numéros gagnants
probability <- num_players_with_10_winning_numbers / num_players
# Afficher la probabilité
print(probability)[1] 0
# Nombre total de numéros dans le jeu de Keno
total_numbers <- 80
# Nombre de numéros sélectionnés par chaque joueur
selected_numbers <- 15
# Nombre de numéros gagnants tirés par l'organisateur
winning_numbers <- 20
# Paiements correspondants pour chaque valeur de r
payoffs <- c(rep(0, 7), 8, 25, 130, 300, 2600, 8000, 25000, 32000, 40000)
# Nombre de joueurs
num_players <- 10000
# Initialiser le vecteur pour stocker les gains de chaque joueur
gains <- numeric(num_players)
# Générer les numéros gagnants
winning_set <- sample(1:total_numbers, winning_numbers)
# Initialiser un dataframe pour stocker les résultats
result_df <- data.frame(num_winning_numbers = 0:15, probability = numeric(16), gains_associated = numeric(16))
# Calculer les probabilités et les gains associés pour chaque nombre de numéros gagnants
for (i in 0:15) {
# Calculer la probabilité pour chaque nombre de numéros gagnants en utilisant la distribution hypergéométrique
prob <- dhyper(i, selected_numbers, total_numbers - selected_numbers, winning_numbers)
# Calculer le gain associé à chaque probabilité
gain <- payoffs[i + 1]
# Stocker les résultats dans le dataframe
result_df[i + 1, "probability"] <- prob
result_df[i + 1, "gains_associated"] <- gain
}
# Afficher le dataframe
print(result_df) num_winning_numbers probability gains_associated
1 0 8.016144e-03 0
2 1 5.227920e-02 0
3 2 1.479390e-01 0
4 3 2.404009e-01 0
5 4 2.502132e-01 0
6 5 1.761501e-01 0
7 6 8.634808e-02 0
8 7 2.988972e-02 8
9 8 7.331441e-03 25
10 9 1.267163e-03 130
11 10 1.520595e-04 300
12 11 1.234249e-05 2600
13 12 6.496049e-07 8000
14 13 2.067708e-08 25000
15 14 3.504590e-10 32000
16 15 2.336393e-12 40000
# Définition des gains possibles et de leurs probabilités
gains <- c(rep(0,7),8,25,130,300,2600,8000,25000,32000,40000) # Les gains possibles
probabilites <- c(dhyper(r,20,60,15)) # Les probabilités correspondantes
# Calcul des produits
produits <- gains * probabilites
# Calcul de la somme des produits (l'espérance mathématique)
esperance <- sum(produits)
# Création d'un tableau avec les résultats
resultats <- data.frame(r=0:15, Produit = produits)%>%filter(r>=7)
library(stargazer)
resultats <- data.frame(r=0:15, Produit = produits)%>%filter(r>=7)
# Affichage du tableau avec stargazer
stargazer(resultats, title = "Calcul de l'espérance mathématique", type = "text", summary = FALSE)
Calcul de l'espérance mathématique
============
r Produit
------------
1 7 0.239
2 8 0.183
3 9 0.165
4 10 0.046
5 11 0.032
6 12 0.005
7 13 0.001
8 14 0.00001
9 15 0.00000
------------
# Calcul de la variance
variance <- sum(probabilites * (gains - esperance)^2)
sqrt(variance)[1] 13.39558
# variance 2
produits2 <- (gains^2 )*probabilites
esperance1 <- sum(produits2)
esperance2 <- esperance^2
variances2 <- (esperance1 - esperance2)
((gains^2)%*%probabilites)-(gains%*%probabilites)^2 [,1]
[1,] 179.4416