Upload
hacong
View
223
Download
0
Embed Size (px)
Citation preview
SIMULATIONS, ALGORITHMES EN PROBABILITÉSET STATISTIQUE(S) AU LYCÉE ET AVEC R
I-INTRODUCTION● Que disent les programmes ?● La simulation un outil pratique mais aussi une
alternative didactique● L'outil libre, gratuit et collaboratif R● Analyse de quelques exemples glanés dans les ouvrages
II-LA SIMULATION UN OUTIL DU COURS DE PROBABILITÉS● Ses enjeux didactiques à travers quelques exemples● Réinvestir la statistique descriptive, modéliser
III-LA SIMULATION UN OUTIL DE RÉSOLUTION DE PROBLÈMES● Quelques exemples emblématiques ● Résolution* simulée d'exercices d'annales de bac S
IV-EXPLOITER ET PROLONGER UNE EXPÉRIENCE ALÉATOIRE● Une séquence de travaux pratiques d'introduction
fréquentiste à la probabilité. Du protocole à l'AED
V-CONCLUSIONS
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
En seconde (BO n°30 du 23 juillet 2009) :Statistiques et probabilité : "ces enseignements sont en relation étroite l'un avec l'autre et doivent faire l'objet d'aller et retour".
"Concevoir mettre en œuvre et exploiter des simulations de situations concrètes "...(quid du protocole)
L'intervalle de fluctuation d'une fréquence " peut être obtenu de façon approchée par simulation".
En première : à l'aide de simulations et d'une approche heuristique de la loi des grands nombres on fait le lien" entre moyenne, variance d'une série et espérance et variance d'une variable aléatoire. On peut simuler une loi géométrique tronquée, une loi binomiale.
En terminale : La simulation de sondages sur tableur permet de sensibiliser aux fourchettes de sondage.
I-INTRODUCTION
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
Ce que ne précisent pas les programmes ni les documents d'accompagnement actuels :Qu'est-ce que la simulation ?
I-INTRODUCTION
● Le document d’accompagnement [GEPS, 2001] des programmes de première précisait :« Modéliser consiste à associer un modèle à des données expérimentales, alors que simuler consiste à produire des données à partir d'un modèle prédéfini. Pour simuler une expérience, on associe d'abord un modèle à l'expérience en cours, puis on simule la loi du modèle ».
● Le choix d'un modèle est l'étape préliminaire indispensable, lorsque l'on conçoit une simulation. Modélisation et simulation sont donc indissociables et sont sources d'obstacles didactiques qu'il faut s'efforcer d'identifier et de résoudre.
● Le schéma suivant (Bernard Parzysz, 2009), illustre bien ces notions :
modèle
expérience 1(phénomène étudié)
expérience 2Représentation
Validation
Modélisation simulation● Lorsque l'on néglige la
phase "modèle", l'expérience 2 est comprise comme une simple représentation de l'expérience 1 !
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
R : un outil polyvalent, libre, performant et richement documenté, qui permet de mettre en œuvre les méthodes en Analyse, Probabilités, Analyse Exploratoire et Statistique.
Notre objectif : en dépassant les simples illustrations de cours, montrer que R permet de mettre facilement en œuvre la simulation comme :
√ Un outil didactique pour l'apprentissage des probabilités
√ Un outil de résolution de problèmes
√ Un champ de mise en œuvre de l'algorithmique
√ R est un outil qui facilite l'autonomie des élèves.
R : POURQUOI ET COMMENT
I-INTRODUCTION
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
QUATRE DES INTERFACES DE R : 1° - Rcmdr : les menus à cliquer
I-NTRODUCTION
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
2° - R-GUI : la console , l'éditeur de script ...
I-INTRODUCTION
QUATRE DES INTERFACES DE R:
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
3°-Tinn-R : coloration syntaxique, complétion, console intégrée ...
I-INTRODUCTION
QUATRE DES INTERFACES DE R :
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
4°-RStudio : coloration syntaxique, complétion, console intégrée ,
worskpace ...
I-INTRODUCTION
QUATRE DES INTERFACES DE R:
DANS LES MANUELS : SIMULER LA LOI BINOMIALE
● Quelle utilité de la simulation alors qu'on sait facilement calculer des probabilités binomiales (loi annoncée)?
● On simule 1 valeur de la variable alors qu'une loi c'est une distribution.
● À la difficulté de décryptage de l'algorithme s'ajoute la difficulté de floor(1+5*random())
● Une généralisation est proposée mais encore pour simuler 1 valeur.
● Pourquoi cette différence de traitement entre n et B et m ?
● Après avoir annoncé une loi binomiale, on demande ensuite de "tester" le programme. Mais comment ?
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
● On n'a pas besoin de la loi binomiale pour simuler cette expérience. Juste le modèle équiprobable, peu lisible ici.
I-INTRODUCTION
DANS LES MANUELS : SIMULER LA LOI BINOMIALE
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
● Un peu plus loin, sous le même titre, on trouve un autre algorithme simulant cette fois M valeurs issues d'un schéma de Bernoulli.
● On cumule quatre difficultés : algorithme long, modèle équiprobable peu lisible (bien que classique), distribution* simulée de S directement cumulée dans TAB[s], initialisation et affichage du tableau par boucles for().
● En b) on demande d'utiliser un autre logiciel (tableur) puis de comparer distribution* simulée et distribution de probabilité (je suppose), mais comment ?
● Pourquoi ne pas réinvestir les outils de la statistique descriptive ? (je ne l'ai trouvé sur aucun des algorithmes visités !)
I-INTRODUCTION
DANS LES MANUELS : UN CALCUL D'ESPÉRANCE
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
● L'initialisation (voire la saisie) du tableau ne figure pas dans l'algorithme.
● Le langage "naturel" n'est pas assez précis, d'où la difficulté du passage à la programmation : traduire p
ixi n'a rien d'évident.
● Pertinence de la méthode, par rapport aux fonctionnalités des langages actuels.
I-INTRODUCTION
DANS LES MANUELS : SIMULER UN JEU DE LOTERIE
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
● Cumul de la difficulté du connecteur logique, de la boucle TantQue et du positionnement du compter j.
● On simule 1 valeur de la variable.● Comment vérifier le fonctionnement
d'une simulation ?● La simulation ne sert pas dans le 2. où
l'on demande le calcul d'une distribution de probabilité et où l'on propose d'utiliser un autre logiciel (calcul formel ?) pour faire un calcul numérique d'espérance.
● On peut réaliser tous ces calculs, plus simplement, avec R, qui fait des illustrations graphiques.
I-INTRODUCTION
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
DANS LES MANUELS : CALCULER ET SIMULER L'IF D'UNE VARIABLE FRÉQUENCE
● L'algorithme de calculs des IF est simplifié avec R.
● Je n'ai pas trouvé d'exemple d'algorithme de simulation d'un IF. Se pose le problème du mode de calcul des quantiles d'une série statistique.
● Il est proposé d'exécuter le programme plusieurs fois. C'est peu réaliste pour établir un nombre suffisant de résultats. Pourquoi ne pas prévoir ces répétitions dans l'algorithme lui même ?
● Quels critères de cohérence pour comparer fréquences simulées et probabilité ?
I-INTRODUCTION
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
II-LA SIMULATION UN OUTIL DU COURS DE PROBABILITÉ
II-UN OUTIL DU COURS DE PROBABILITÉ
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
LE PROBLÈME HISTORIQUE D'UN GRAND DUC DE TOSCANE Simulation : plusieurs modèles et stratégies
Calculer des distributions de probabilité Superposer graphiquement fréquences simulées et probabilités
LE PROBLÈME HISTORIQUE DU CROIX-PILE DE D'ALEMBERT Simulations , s'arrêter ou pas lorsque l'on gagne
Simuler le rang du premier succès Calculer les distributions du rang du premier succès
Superposer graphiquement fréquences simulées et probabilités
UN MODÈLE D'URNE POUR ÉTUDIER LE NOMBRE DE ROUGES TIRÉES Simuler un modèle d'urne
Simuler un intervalle de fluctuation Calculer l'intervalle de fluctuation d'une variable binomiale
CONVERGENCE DE LA LOI BINOMIALE VERS LA LOI DE GAUSS Illustration graphique
Exploration d'intervalles de fluctuation asymptotiques gaussiens
SIMULATION D'UN PEIGNE D'INTERVALLES DE CONFIANCE Plusieurs illustrations graphiques
CALCUL DE L'INTERVAL DE CONFIANCE "EXACT" D'UNE PROPORTION Par la méthode de Clopper et Pearson (1934)
II-LA SIMULATION UN OUTIL DU COURS DE PROBABILITÉ
II-UN OUTIL DU COURS DE PROBABILITÉ
PROBLÈME HISTORIQUE (1620) DU GRAND DUC DE TOSCANE : JETER 3 FOIS UN DÉ** (ÉQUILIBRÉ)
S est la variable aléatoire prenant pour valeursla somme des valeurs des faces obtenues
ALGORITHME A1_1 LIGNES DE COMMANDES POUR SIMULER 1 JEU
(de <- 1:6) # abréviation de seq(from = 1, to = 6, by = 1)
[1] 1 2 3 4 5 6
(jeu <- sample(de, 3, T))# abréviation de sample(x = de, size = 3, replace = TRUE)
[1] 6 6 4
(s <- sum(jeu))
[1] 16
SIMULATIONS, ALGORITHMES EN PROBABILITÉS II-UN OUTIL DU COURS DE PROBABILITÉ
L'apport de R ?
L'aide sous R : ?sampleL'aide sous RStudio : touche tab sur sample (fonction contextuelle)
PROBLÈME HISTORIQUE DU GRAND DUC DE TOSCANE : JETER 3 FOIS UN DÉ**
ALGORITHME A1_2LIGNES DE COMMANDES POUR SIMULER 2000 JEUX (IDENTIQUES)
TABLEAU DES FRÉQUENCES DE LA SÉRIE SIMULÉE
de <- 1:6 ; Nbjets = 3 ; nbsim = 2000 ; serieSomNbjets <- NULL
for(i in 1:nbsim){ jeu <- sample(de, Nbjets, replace = TRUE)
#**** Affichage des résultats et des graphiques*************(tableFreqS <- table(serieSomNbjets) / nbsim)
s <- sum(jeu)
serieSomNbjets 3 4 5 6 7 8 9 100.0045 0.0130 0.0220 0.0390 0.0745 0.0955 0.1190 0.1325 11 12 13 14 15 16 17 18 0.1285 0.1030 0.1045 0.0730 0.0460 0.0235 0.0160 0.0055
serieSomNbjets <- c(serieSomNbjets, s) }
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
barplot(tableFreqS)
L'apport de R ?
II-UN OUTIL DU COURS DE PROBABILITÉ
PROBLÈME HISTORIQUE DU GRAND DUC DE TOSCANE : JETER 3 FOIS UN DÉ** ; AVEC LE NOMBRE DE JETS QUI PEUT VARIER
ALGORITHME A1_4
toscaneA1_4 <- function(Nbjets = 3, nbsim = 2000){
jeu <- sample(de, Nbjets, replace = TRUE) s <- sum(jeu)
#**** Affichage des résultats et des graphiques*********** cat("Tableau des fréquences simulées:\n") print(tableFreqS)
serieSomNbjets <- c(serieSomNbjets, s)
> toscaneA1_4()Tableau des fréquences* simulés :serieSomNbjets 3 4 5 6 7 8 9 10 0.0040 0.0145 0.0270 0.0470 0.0665 0.0980 0.1255 0.1250 11 12 13 14 15 16 17 18 0.1265 0.1035 0.0885 0.0720 0.0550 0.0270 0.0150 0.0050
}
tableFreqS <- table(serieSomNbjets) / nbsim
for(i in 1:nbsim){
serieSomNbjets <- NULL ; de <- 1:6
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
barplot(tableFreqS, xlab = "Valeurs de la variable somme", ylab = "Fréquences simulées", main = "Distribution simulée de la variable S")}
II-UN OUTIL DU COURS DE PROBABILITÉ
barplot(tableFreqS, xlab = "Valeurs de la variable somme", ylab = "Fréquences simulées", main = "Distribution simulée de la variable S")}
de <- 1:6
seriejets1 <- sample(de, nbsim, replace = T)
seriejets2 <- sample(de, nbsim, replace = T)
#**** Affichage des résultats et des graphiques*********** print(tableFreqS)
seriejets3 <- sample(de, nbsim, replace = T)
> system.time(toscaneA1_6())serieSom3jets 3 4 5 6 7 8 9 10 0.0045 0.0155 0.0260 0.0435 0.0820 0.0915 0.1225 0.1125 11 12 13 14 15 16 17 18 0.1160 0.1140 0.0975 0.0770 0.0480 0.0260 0.0170 0.0065 utilisateur système écoulé 0.01 0.00 0.03
serieSom3jets <- seriejets1 + seriejets2 + seriejets3 tableFreqS <- table(serieSom3jets) / nbsim
> system.time(toscaneA1_4())serieSom3jets 3 4 5 6 7 8 9 10 0.0070 0.0205 0.0290 0.0430 0.0690 0.0985 0.1200 0.1270 11 12 13 14 15 16 17 18 0.1260 0.1045 0.0955 0.0650 0.0470 0.0290 0.0150 0.0040 utilisateur système écoulé 0.19 0.00 0.19
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
toscaneA1_6 <- function(nbsim = 2000){
PROBLÈME HISTORIQUE DU GRAND DUC DE TOSCANE : JETER 3 FOIS UN DÉ** – UNE STRATÉGIE POUR ÉVITER LES BOUCLES
ALGORITHME A1_6
II-UN OUTIL DU COURS DE PROBABILITÉ
PROBLÈME HISTORIQUE DU GRAND DUC DE TOSCANE : JETER Nbjets FOIS UN DÉ À 6 FACES NON ÉQUILIBRÉ
ALGORITHME A1_8
toscaneA1_8 <- function(Nbjets = 3, nbsim = 100){
jeu <- sample(de, Nbjets, prob = probafaces, replace = TRUE) s <- sum(jeu)
#**** Affichage des résultats et des graphiques*********** cat("Tableau des fréquences simulées:\n") print(tableFreqS)
serieSomNbjets <- c(serieSomNbjets, s)
> toscaneA1_8()Tableau des fréquences* simulés :serieSomNbjets 6 8 9 10 11 12 13 14 15 16 0.01 0.02 0.04 0.07 0.08 0.14 0.16 0.08 0.19 0.12 17 18 0.06 0.03
}
tableFreqS <- table(serieSomNbjets) / nbsim
for(i in 1:nbsim){
serieSomNbjets <- NULL ; de <- 1:6 ; probafaces = de / 21
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
barplot(tableFreqS, xlab = "Valeurs de la variable somme", ylab = "Fréquences simulées", main = "Diagramme en barres")}
L'apport de R ?
II-UN OUTIL DU COURS DE PROBABILITÉ
PROBLÈME HISTORIQUE DU GRAND DUC DE TOSCANE : JETER 3 FOIS UN DÉ** : CALCULER LA DISTRIBUTION DE PROBABILITÉ DE S
ALGORITHME A1_9
probaS3deA1_9 <- function(){
for(j in 1:6){ for(k in 1:6){s[i, j, k] <- i + j + k}
}
}
tabloProbaS <- table(s) / 216
for(i in 1:6){
s <- array(0, dim = c(6, 6, 6))
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
return(tabloProbaS)}
probaS3deA1_9()s 3 4 5 6 7 8 0.00462963 0.01388889 0.02777778 0.04629630 0.06944444 0.09722222 9 10 11 12 13 14 0.11574074 0.12500000 0.12500000 0.11574074 0.09722222 0.06944444 15 16 17 18 0.04629630 0.02777778 0.01388889 0.00462963
L'apport de R ?
plot(probaS3deA1_9(), col = "red", main = "Distribution de probabilité de S")
II-UN OUTIL DU COURS DE PROBABILITÉ
GRAND DUC DE TOSCANE : SUPERPOSER DISTRIBUTION DE PROBABILITÉ ET DISTRIBUTION* SIMULÉE DE S : ALGORITHME A1_10
toscaneA1_10 <- function(nbsim = 2000){ setwd("E:/HubW/IREM/AnimStages/AngersSept2012") source("toscaneA1_4bis.r") tableFreqS <- toscaneA1_4bis(nbsim = nbsim) source("probaS3deA1_9.r") DistribprobaS <- probaS3deA1_9()
#**** Affichage des résultats et des graphiques*********** cat("Tableau des fréquences simulées:\n") print(tableFreqS)
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
barplot(tableFreqS, xlab = "Valeurs de la variable somme", ylab = "Fréquences simulées ou Probabilités", main = "Distribution simulée(barres), probabilité (Points rouges)", ylim = c(0, .14))
> toscaneA1_10()Tableau des fréquences simulés :serieSom3jets 3 4 5 6 7 8 9 10 11 0.0060 0.0165 0.0305 0.0430 0.0610 0.0885 0.1250 0.1130 0.1180 12 13 14 15 16 17 18 0.1270 0.0980 0.0775 0.0535 0.0245 0.0165 0.0015
points(barplot(3:18, plot = FALSE), DistribprobaS, pch = 21, col = "red", bg = "red")}
II-UN OUTIL DU COURS DE PROBABILITÉ
SIMULER LE PROBLÈME HISTORIQUE (1754) DU CROIX-PILE DE D'ALEMBERT PREMIER MODÈLE : ALGORITHME A2_1
Un coup consiste à jeter une pièce (croix - pile ) équilibrée,Le jeu , en deux coups au plus , s'arrête dès que je gagne en "amenant croix".
Description de la distribution* des modalités des résultats du jeu.
croixpileA2_1 <- function(nbsim = 2000){ resultats <- rep(0, 3) ; piece <- c("Croix", "Pile") names(resultats) <- c("GagnéCoup1", "GagnéCoup2", "Perdu")
for(i in 1:nbsim){ coup1 <- sample(piece, 1) if(coup1 == "Croix") { resultats[1] <- resultats[1] + 1 } else {
coup2 <- sample(piece, 1) if(coup2 == "Croix") { resultats[2] <- resultats[2] + 1 } else { resultats[3] <- resultats[3] + 1 } } }
#**** Affichage des résultats et des graphiques*********** print(resultats / nbsim)
> croixpileA2_1(nbsim = 5000)(DISTRIBUTION*)GagnéCoup1 GagnéCoup2 Perdu 0.4915 0.2565 0.2520
L'apport de R ?
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
barplot(resultats / nbsim, ylab = "Fréquences simulées")}
II-UN OUTIL DU COURS DE PROBABILITÉ
SIMULER UN SCHÉMA DE BERNOULLI POUR ÉTUDIER LA VARIABLE R : RANG DU PREMIER SUCCÈS : ALGORITHME A3
Un peu de mécanique pour comprendre sum(v. logique) et which() de Rqui vont servir à simplifier algorithmes et programmes.Un jeu consiste à lancer une roulette de 18 secteurs équiprobables numérotés de 1 à 18, 20 fois au plus.On compte au bout de combien de fois on obtient 9.
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
(roulette <- 1:18)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
(ResExpe <- sample(roulette, 20, replace = TRUE))
[1] 4 8 2 11 2 1 6 8 11 9 18 17 9 12 16 6 5 15 18 4
ResExpe == 9
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE [13] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
as.numeric(ResExpe == 9)
[1] 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0sum(ResExpe == 9)
[1] 2 which(ResExpe == 9)
[1] 10 13(r <- min(which(ResExpe == 9)))
[1] 10
II-UN OUTIL DU COURS DE PROBABILITÉ
SIMULER UN SCHÉMA DE BERNOULLI POUR ÉTUDIER LA VARIABLE R : RANG DU PREMIER SUCCÈS : ALGORITHME A3
Description de la distribution* simulée de RrangpremiersuccesA3 <- function(n = 20, p = 1 / 5, nbsim = 2000){ deuxalternatives <- c("succes", "echec") ; serieSimR <- NULL
for(i in 1:nbsim){ ResExpe <- sample(deuxalternatives, n, prob = c(p, 1 - p), replace = TRUE) if(sum(ResExpe == "succes")!= 0) { r <- min(which(ResExpe == "succes"))} else {r <- 0}
#**** Affichage des résultats et des graphiques*********** cat("\nTableau de distribution des fréquences de la\n", "variable Rang du premier succès et moyenne de la série\n") print(tableFreqR) ; print(MoySerieR)
barplot(tableFreqR, xlab = "Valeurs de la variable rang du premier succès", ylab = "Fréquences simulées" main = "Distribution simulée de la variable R")}
serieSimR <- c(serieSimR, r) }
> rangpremiersuccesA3()(DISTRIBUTION*)Tableau de distribution des fréquences simulées de la
variable Rang du premier succès et moyenne de la sérieserieSimR 0 1 2 3 4 5 6 7 80.0135 0.2005 0.1550 0.1385 0.1025 0.0820 0.0675 0.0530 0.0400 9 10 11 12 13 14 15 16 170.0305 0.0300 0.0160 0.0160 0.0125 0.0110 0.0105 0.0065 0.0035 18 19 20 0.00450.0035 0.0030 [1] 4.6295
tableFreqR <- table(serieSimR) / nbsim MoySerieR <- mean(serieSimR)
L'apport de R ?
SIMULATIONS, ALGORITHMES EN PROBABILITÉS II-UN OUTIL DU COURS DE PROBABILITÉ
ALGORITHME DE CALCUL DE PROBABILITÉS AVECLA LOI GÉOMÉTRIQUE TRONQUÉE : ALGORITHME A3_1
Graphique des probabilités cumulées "Calcul de la probabilité d'événements diversgeotronkA3_1 = function(k, n, p){ distribX <- rep(0, n + 1) ; names(distribX) <- 0:n distribX[1] <- (1 - p)^n distribX[2:(n + 1)] <- (1 - p)^((1:n) - 1) * p proba <- distribX[k + 1] return(proba)}
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
> geotronkA3_1(3:6, 10, .3)
3 4 5 6 0.147000 0.102900 0.072030 0.050421
> sum(geotronkA3_1(3:6, 10, .3))
[1] 0.372351> (geotronkcum <- cumsum(geotronkA3_1(0:10, 10, .3)))
0 1 2 3 4 5 0.02824752 0.32824752 0.53824752 0.68524752 0.78814752 0.86017752 6 7 8 9 10 0.91059852 0.94589322 0.97059951 0.98789392 1.00000000
plot(0:10, geotronkcum, pch = 21, bg = "red", main = "Probabilités cumulées")Espérance numérique> (somxipi <- sum(0:10 * geotronkA3_1(0:10, 10, .3)))
L'apport de R ?
[1] 2.9567Variance numérique> somxi2pi <- sum((0:10)^2 * geotronkA3_1(0:10, 10, .3))> (vargeotronk <- somxi2pi - somxipi^2)
[1] 4.905331
II-UN OUTIL DU COURS DE PROBABILITÉ
SUPERPOSER LES GRAPHIQUES DE LA DISTRIBUTION SIMULÉE ET DE LA DISTRIBUTION GÉOMÉTRIQUE TRONQUÉE : ALGORITHME A3_2
● Comment gérer le fait que toutes les valeurs de la variable ne sont pas forcément atteintes.
SIMULATIONS, ALGORITHMES EN PROBABILITÉS II-UN OUTIL DU COURS DE PROBABILITÉ
1/3
roulette <- 1:18 ; serieK <- NULL ; n <- 10 ; nbsim <- 30tablo <- rep(0, n + 1) ; names(tablo) <- 0:n for(i in 1:nbsim){ x <- sample(roulette, n, replace = TRUE) if(sum(x == 9) != 0){k <- min(which(x == 9))} else {k <- 0} serieK <- c(serieK, k) }tableEffK <- table(serieK)tablo[as.numeric(names(tableEffK)) + 1] <- tableEffKtableEffKtablo
> tableEffKserieK 0 2 3 4 6 7 9 10 15 1 6 2 1 1 2 2
> tablo 0 1 2 3 4 5 6 7 8 9 10 15 0 1 6 2 0 1 1 0 2 2
SUPERPOSER LES GRAPHIQUES DE LA DISTRIBUTION SIMULÉE ET DE LA DISTRIBUTION GÉOMÉTRIQUE TRONQUÉE : ALGORITHME A3_2
● Comment gérer le fait que toutes les valeurs de la variable ne sont pas forcément atteintes.
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
L'apport de R ?
SuperpSimulProbaA3_2 <- function(n = 20, p = 1 / 5, nbsim = 2000){ TabloFreqR <- rep(0, n + 1) ; names(TabloFreqR) <- 0:n setwd("E:/HubW/IREM/AnimStages/AngersSept2012") source("RangPremierSucces.r") ; source("GeoTronkA3_1.r") tableFreqR <- rangpremiersucces(n, p, nbsim) TabloProbaR <- geotronkA3_1(0:n, n, p) TabloFreqR[as.numeric(names(tableFreqR)) + 1] <- tableFreqR
# Affichage des résultats et des graphiques barplot(TabloFreqR, xlab = "valeurs de la variable R", ylab = "Fréquences simulées ou Probabilités", main = paste("Distribution simulée(barres), probabilité (points)", "\nobtenue avec", nbsim, "simulations"), ylim = c(0, max(TabloProbaR))) points(barplot(0:n, plot = FALSE), TabloProbaR, pch = 21, col = "red", bg = "red")}
surpepositionsimulproba(nbsim = 100)surpepositionsimulproba(nbsim = 20000)
II-UN OUTIL DU COURS DE PROBABILITÉ
2/3
SUPERPOSER LES GRAPHIQUES DE LA DISTRIBUTION SIMULÉE ET DE LA DISTRIBUTION GÉOMÉTRIQUE TRONQUÉE : ALGORITHME A3_2
● Comment gérer le fait que toutes les valeurs de la variable ne sont pas forcément atteintes.
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
L'apport de R ?
II-UN OUTIL DU COURS DE PROBABILITÉ
3/3
SIMULER UN INTERVALLE DE FLUCTUATION D'UNE VARIABLE FRÉQUENCE X/n : ALGORITHME A5
IF_SimulA5 <- function(n = 20, p = .7, pIF = .95, nbsim = 2000){ SerieSimulX <- NULL# Définition de la fonction nombre de succès lors de n épreuves indep. SimulXSucces <- function(n, p){ x <- sum(sample(c(0, 1), n, prob = c(1 - p, p), replace = TRUE)) return(x) }# Fin fonction for(i in 1:nbsim){ x <- SimulXSucces(n, p) SerieSimulX <- c(SerieSimulX, x) } quantserieX <- quantile(SerieSimulX, probs = c((1 - pIF) / 2, (1 + pIF) / 2)) tablFreqX <- table(SerieSimulX) / nbsim tablFreqCumX <- cumsum(tablFreqX) propIF_sim <- sum(SerieSimulX >= quantserieX[1] & SerieSimulX <= quantserieX[2]) / nbsim
barplot(tablFreqCumX, xlab = "Valeurs de la variable X", ylab = "Fréquences simulées cumulées", main = "Intervalle de fluctuation simulé de X") abline(h = c((1 - pIF) / 2, (1 + pIF) / 2), col = "red")}
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
La simulation de l'expérience des n épreuves est faite par la fonction SimulXSucces()définie à l'intérieur de la fonction principale .
#**** Affichage des résultats et des graphiques*********** cat("Distribution simulée cumulée de la variable X\n") ; print(tablFreqCumX) cat("\nQuantiles série X\n") ; print(quantserieX) cat("\nQuantiles série X / n\n") ; print(quantserieX / n) cat("\nPourcentage de valeurs de la série comprises dans l'IF :", propIF_sim, "\n\n")
1/2
II-UN OUTIL DU COURS DE PROBABILITÉ
> IF_SimulA5()Fréquences* simulées cumulées de la variable X 6 7 8 9 10 11 12 13 14 0.0005 0.0030 0.0060 0.0185 0.0475 0.1195 0.2280 0.3895 0.5880 15 16 17 18 19 20 0.7610 0.8910 0.9610 0.9895 0.9985 1.0000
Quantiles série X 2.5% 97.5% 10 18
Quantiles série X / n 2.5% 97.5% 0.5 0.9
Pourcentage de valeurs de la série comprises dans l'IF : 0.971
L'apport de R ?
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
● La fonction quantile() offre 9 façons différentes de les calculer (paramètre "type"), toutes détaillées, bibliographie à l'appui, dans la documentation en ligne(help(quantile)). Le type par défaut est le 7, utilisé par les tableurs classiques, SAS utilise le type 3, Minitab et SPSS le type 6, et GeoGebra4 utilise le type 1 (!)● Hyndman, R. J. and Fan, Y. (1996) Sample quantiles in statistical packages, American Statistician, 50, 361–365.
2/2
II-UN OUTIL DU COURS DE PROBABILITÉ
SIMULER UN INTERVALLE DE FLUCTUATION D'UNE VARIABLE FRÉQUENCE X/n : ALGORITHME A5
CALCUL D'UN INTERVALLE DE FLUCTUATION D'UNE VARIABLEBINOMIALE X ET DE LA VARIABLE FRÉQUENCE CORRESPONDANTE X/n
IF_BinoCalculA5_1 <- function(n = 20, p = .7, pIF = .95){ repartX <- pbinom(0:n, n, p) rang_a <- min(which(repartX > (1 - pIF) / 2)) a <- rang_a - 1 rang_b <- min(which(repartX >= (1 + pIF) / 2)) b <- rang_b - 1
plot(0:n, repartX, pch = 21, col = "red", bg = "red", cex = .5, xlab = "Valeurs de la variable X", ylab = "Probabilités cumulées", main = "Intervalle de fluctuation binomial de X") abline(h = c((1 - pIF) / 2, (1 + pIF) / 2), col = "red")}
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
Pas de boucle tant que, mise en œuvre directe de la définition de 1ère
#**** Affichage des résultats et des graphiques*********** if(a != 0) {cat("P(X <=", a - 1, ")=", repartX[rang_a - 1], "\n") cat("P(X <=", a, ")=", repartX[rang_a], "\n\n") } else {cat("P(X <=", a, ")=", repartX[rang_a], "\n\n")} cat("P(X <=", b - 1, ")=", repartX[rang_b - 1], "\n") cat("P(X <=", b, ")=", repartX[rang_b], "\n\n") cat("Avec une probabilité d'au moins", pIF, "\n") cat("L'intervalle de fluctuation de X est :[", a,";", b, "]\n") cat("L'intervalle de fluctuation de X/n est :[", a / n,";", b / n, "]\n") cat("Sa probabilité est de", sum(dbinom((a:b), n, p)), "\n\n")
Un des modes de calcul – faisant office de définition - du document ressource de première SL'IF [a ; b], de probabilité 1 – e (pIF dans la fonction), de la variable X est tel que :
a est le plus petit entier tel que P(X ≤ a) > e / 2 ;b est le plus petit entier tel que P(X ≤ b) ≥ 1 – e / 2
ALGORITHME A5_1 1/2
II-UN OUTIL DU COURS DE PROBABILITÉ
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
Affiche les principaux éléments du calcul et l'IF de X et de X/n
plus le graphique
> IF_BinoCalculA5_1()P(X <= 9 )= 0.01714482 P(X <= 10 )= 0.0479619
P(X <= 17 )= 0.9645169 P(X <= 18 )= 0.9923627
Avec une probabilité d'au moins 0.95 L'intervalle de fluctuation de X est :[ 10 ; 18 ]L'intervalle de fluctuation de X/n est :[ 0.5 ; 0.9 ]Sa probabilité est de 0.9752179
L'apport de R ?
II-UN OUTIL DU COURS DE PROBABILITÉ
ALGORITHME A5_1 2/2
CALCUL D'UN INTERVALLE DE FLUCTUATION D'UNE VARIABLEBINOMIALE X ET DE LA VARIABLE FRÉQUENCE CORRESPONDANTE X/n
EXPLORATION D'UN INTERVALLE DE FLUCTUATION ASYMPTOTIQUE D'UNE VARIABLE BINOMIALE : ALGORITHME A5_3bis 1/2
#*****Affichage des graphiques*************** plot(0:n, y, cex = .5, ylim = c(.9, 1),
pIFasyA5_3bis <- function(n = 1000, p = .5, proba = .95){ P <- function(n, p, proba){ binf <- max(floor(n * p - sqrt(n)), 0) bsup <- min(floor(n * p + sqrt(n)), n) sum(dbinom((binf + 1):bsup, n, p)) } y <- NULL for(i in 1:n) y[i] <- P(i, p, proba)
xlab = "Taille n de l'échantillon", ylab = "Probabilité binomiale d'être dans l'IF asymptotique", main = "paste("Exploration de l'intervalle de fluctuation :", "influence de n avec ppop =", p))) abline(h = proba, col = "red")}
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
Probabilité binomiale de l'IF asymptotique de seconde p±1/racine(n) Cette probabilité est représentée en fonction de la taille n de l'échantillon.
II-UN OUTIL DU COURS DE PROBABILITÉ
SIMULATIONS, ALGORITHMES EN PROBABILITÉS II-UN OUTIL DU COURS DE PROBABILITÉ
EXPLORATION D'UN INTERVALLE DE FLUCTUATION ASYMPTOTIQUE D'UNE VARIABLE BINOMIALE : ALGORITHME A5_3bis 2/2
Probabilité binomiale de l'IF asymptotique de seconde p±1/racine(n)
EXPLORATION D'UN INTERVALLE DE FLUCTUATION ASYMPTOTIQUE D'UNE VARIABLE BINOMIALE : ALGORITHME A5_3 1/2
#***************Affichage des graphiques****************** plot(0:n, y, cex = .4, ylim = c(.9, 1),
pIFasyA5_3 <- function(n = 200, p = .5, proba = .95){
P <- function(n, p, proba){ g <- qnorm(1 - (1 - proba) / 2) binf <- max(floor(n * p - g * sqrt(p * (1 - p) * n)), 0) bsup <- min(floor(n * p + g * sqrt(p * (1 - p) * n)), n) sum(dbinom((binf + 1):bsup, n, p)) }
y <- NULL for(i in 0:n) y[i + 1] <- P(i, p, proba)
xlab = "Taille n de l'échantillon", ylab = "Probabilité binomiale d'être dans l'IF asymptotique", main = "Exploration de l'intervalle de fluctuation : influence de n") abline(h = proba, col = "red")}
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
Probabilité binomiale de l'IF asymptotique de terminale p±1,96*racine(p(1-p)/n)
Cette probabilité est représentée en fonction de la taille n de l'échantillon.
II-UN OUTIL DU COURS DE PROBABILITÉ
pIFasyA5_3(n = 200, p = .5) pIFasyA5_3(n = 2000, p = .5)
SIMULATIONS, ALGORITHMES EN PROBABILITÉS II-UN OUTIL DU COURS DE PROBABILITÉ
EXPLORATION D'UN INTERVALLE DE FLUCTUATION ASYMPTOTIQUE D'UNE VARIABLE BINOMIALE : ALGORITHME A5_3 2/2
L'apport de R ?
Probabilité binomiale de l'IF asymptotique de terminale p±1,96*racine(p(1-p)/n)
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
III-LA SIMULATION UN OUTIL DE RÉSOLUTION DE PROBLÈMES
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
SIMULATIONS, ALGORITHMES EN PROBABILITÉSIII-LA SIMULATION UN OUTIL DE RÉSOLUTION DE PROBLÈMES
SIMULER LE PROBLÈME DES ANNIVERSAIRES
SIMULER LE PROBLÈME DU CHEVALIER DE MÉRÉ
SIMULER LA MARCHE ALÉATOIRE DE LA PUCE
SIMULATIONS DE QUELQUES MARCHES ALÉATOIRE À TEMPS D'ARRET
SIMULER LE PÉTRAIN DU PATISSIER ET SES PAINS AUX RAISINS
RÉSOLUTION* SIMULÉE DE QUELQUES EXERCICES D'ANNALE DE BAC S
SIMULER LE PROBLÈME DES CHAINES DE LONGUEUR 6
SIMULER LE PROBLÈME DES CHAPEAUX DE MONTMORT(permutations sans point fixe)
SIMULER LE PROBLÈME DES COLLECTIONS D'IMAGES
SIMULER LE PROBLÈME DU DÉPOUILLEMENT D'UNE ÉLECTION
SIMULER LES URNES DE POLYA (évolution et distribution)
SIMULER LES URNES D'EHRENFEST (évolution et distribution)
SIMULER LE JEU DE 5 DÉS DE JEANNE PETITE FILLE DE MICHEL
SIMULER LE JEU DU FRANC-CARREAU
SIMULER LE JEU DE L'AIGUILLE DE BUFFON
SIMULER UNE GRANDEUR CALCULÉE À PARTIR DE GRANDEURS MESURÉE
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
SIMULATION DU PROBLÈME DES ANNIVERSAIRES : ALGORITHME B1_1
SIMULATIONS, ALGORITHMES EN PROBABILITÉS III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
simanivB1_1 <- function(m = 10, nbsim = 1000){ annee <- 1:365 tousdiff <- 0 for(j in 1:nbsim){ resultexpe <- sample(annee, m, replace = T) if(length(resultexpe) == length(unique(resultexpe))) tousdiff <- tousdiff + 1 } aumoinsdeux <- (1 - tousdiff / nbsim)
# Affichage des résultats et des graphiques cat("Une estimation de la probabilité qu'au moins deux personnes\n", "aient le même jour anniversaire dans une assemblée de", m, "personnes\nvaut :", aumoinsdeux, "\n\n")}
> simanivB1_1()Une estimation de la probabilité qu'au moins deux personnesaient le même jour anniversaire dans une assemblée de 10 personnesvaut : 0.121> simanivB1_1(n = 50)Une estimation de la probabilité qu'au moins deux personnesaient le même jour anniversaire dans une assemblée de 50 personnesvaut : 0.974
Il s'agit de calculer la probabilité que, dans une assemblée de m personnes, il y en ait au moins deux qui aient la même date anniversaire.Préciser le modèle, utilisation de la fonction unique().
SIMULER LA MARCHE ALÉATOIRE DE LA PUCE : ALGORITHME B3
SIMULATIONS, ALGORITHMES EN PROBABILITÉS III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
# Affichage des résultats et des graphiquesprint(posimoy)
> marcheA(nbSaut = 30, p = .5, Nbsim = 100)[1] 0.2
En partant de l'origine, la puce se déplace sur un axe gradué, aléatoirement vers la gauche ou vers la droite, d'une unité avec les proba 0,5 et 0,5, (p, 1-p). Simuler le point d'arrivée de "marches" de 30 sauts.
marcheB3 <- function(Nbsim = 100, nbSaut = 30, p = .5){ serieArrivees <- NULL ; choix <- c("droite", "gauche") for(i in 1:Nbsim){ x <- 0 for(j in 1:nbSaut){ sens <- sample(choix, 1, prob = c(p, 1 - p)) if(sens == "gauche") {x <- x - 1} else {x <- x + 1} } serieArrivees <- c(serieArrivees, x) } posimoy <- mean(serieArrivees) distFreqPosi <- table(serieArrivees) / Nbsim
par(mfrow = c(1, 2))barplot(distFreqPosi, horiz = T, ylab = "Position d'arrivée", xlab = "Fréquences simulées")plot(1:Nbsim, serieArrivees, type = "l", xlab = "Répétitions") abline(h = posimoy, col = "green")}
SIMULER LA MARCHE ALÉATOIRE DE LA PUCE : ALGORITHME B3
SIMULATIONS, ALGORITHMES EN PROBABILITÉS III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
> marcheA(nbSaut = 30, p = .5, Nbsim = 100)[1] 0.2
En partant de l'origine, la puce se déplace sur un axe gradué, aléatoirement vers la gauche ou vers la droite, d'une unité avec les proba 0,5 et 0,5, (p, 1-p). Simuler le point d'arrivée de "marches" de 30 sauts.
RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATIONEXEMPLE 1 :2012-S-Mars-Nouvelle Calédonie-Exercice 2 : un dé et deux urnes ALGORITHME C1
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
1/3
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATIONEXEMPLE 1 : ALGORITHME C1
NelleCaled2012C1 <- function(nbsim = 2000, nbpartie = 10, probaseuil = 1 / 10){ decub <-1:6 urne1 <- rep(c("brouge", "bnoire"), c(3, 1)) urne2 <- rep(c("brouge", "bnoire"), c(3, 2)) seriegagne <- NULL for(i in 1:nbsim){ NbGagne <- 0 for(k in 1:nbpartie){ resultDe <- sample(decub, 1) if(resultDe == 1) { resultUrne <- sample(urne1, 1)} else { resultUrne <- sample(urne2, 1) } if(resultUrne == "bnoire") {NbGagne <- NbGagne + 1} } seriegagne[i] <- NbGagne } moyenneGagne <- mean(seriegagne / nbpartie) tabfreq <- table(seriegagne) / nbsim tabfreqcum <- cumsum(tabfreq) tabfreqcumdec <- 1 - tabfreqcum + tabfreq N <- min(as.numeric(names(which(tabfreqcumdec < probaseuil)))) cat("\nEstimation de la probabilité de tirer une boule noire :\n", moyenneGagne, "\n") cat("\nFréquences cumulées décroissantes estimées de la variable X\n") print(tabfreqcumdec) cat("\nPlus petite valeur N de X telle que P(X>=N)<", probaseuil, "=", N, "\n")
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
barplot(tabfreqcumdec, xlab = "Nombre de parties gagnées", ylab = "Fréquences simulées décroissantes", main = "Diagramme en barres") abline(h = probaseuil, col = "red")}
2/3
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATIONEXEMPLE 1 : ALGORITHME C1
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
NelleCaled2012C1()Estimation de la probabilité de tirer une boule noire : 0.3822
Fréquences* simulées cumulées décroissantes de la variable Xseriegagne 0 1 2 3 4 5 6 7 8 1.0000 0.9955 0.9475 0.8030 0.5635 0.3175 0.1425 0.0440 0.0085
Plus petite valeur N de X telle que P(X>=N)< 0.1 = 7
3/3
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATIONEXEMPLE 3# 2010-S-Novembre-Nouvelle-Calédonie Exercice 3 : urne boules, tirages# avec et sans remiseALGORITHMES C3
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
1/4
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATIONEXEMPLE 3 : ALGORITHME C3_1
simurnsansC3_1 = function(n = 2, nbr = 3, nbv = 2, nbsim = 2000){ urne <- rep(c("brouge", "bverte"), c(nbr, nbv)) ; SerieXSim <- NULL TabloFreqX <- rep(0, n+1) ; names(TabloFreqX) <- 0:n for(i in 1:nbsim){ ResultExpe <- sample(urne, n, replace = FALSE) x <- sum(ResultExpe == "bverte") SerieXSim[i] <- x } tableFreqX <- table(SerieXSim) / nbsim TabloFreqX[as.numeric(names(tableFreqX)) + 1] <- tableFreqX#***********Affichage des résultats et des graphiques************ cat("Distribution* simulée de X nombre de vertes\n") ; print(TabloFreqX) cat("\nEstimation de la probabilité de 0 verte =", TabloFreqX[1], "\n\n") cat("Moyenne de la distribution simulée du nombre X de vertes =", mean(SerieXSim), "\n\n") cat("Estimation de la probabilité de 2 boules de la même couleur =", TabloFreqX[1] + TabloFreqX[3], "\n\n")
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
barplot(TabloFreqX, xlab = "Nombre de vertes", ylab = "Fréquences* simulées", main = "Distribution* simulée de X") }
2/4
> simurnsansC3_1()Distribution* simulée de X nombre de vertes 0 1 2 0.3030 0.6035 0.0935
Estimation de la probabilité de 0 verte = 0.303 Moyenne de la distribution simulée du nombre X de vertes = 0.7905 Estimation de la probabilité de 2 boules de la même couleur = 0.3965
3_1 : L'expérience consiste à tirer deux boules simultanément
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATIONEXEMPLE 3 : ALGORITHME C3_2
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
3/4
simavecsansC3_2 = function(n = 2, nbr = 3, nbv = 2, nbsim = 2000){ urne1 <- rep(c("brouge", "bverte"), c(nbr, nbv)) urne2 <- rep(c("brouge", "bverte"), c(nbr, nbv - 1)) TabloEffM <- rep(0,4) ; names(TabloEffM) <- c("VV", "VR", "RV", "RR") for(i in 1:nbsim){ T1 <- sample(urne1, 1) if(T1 == "brouge"){T2 <- sample(urne1, 1)} else { T2 <- sample(urne2, 1) } if(T1 == "bverte" & T2 == "bverte") TabloEffM[1] <- TabloEffM[1]+1 if(T1 == "bverte" & T2 == "brouge") TabloEffM[2] <- TabloEffM[2]+1 if(T1 == "brouge" & T2 == "bverte") TabloEffM[3] <- TabloEffM[3]+1 if(T1 == "brouge" & T2 == "brouge") TabloEffM[4] <- TabloEffM[4]+1 }TabloFreqM <- TabloEffM / nbsim
# Affichage des résultats et des graphiques cat ("Tableau des fréquences simulées des modalités de la variable M\n") print (TabloFreqM) cat("\nEstimation de la probabilité de seule la première est verte\n=", TabloFreqM[2], "\n\n") cat("Estimation de la probabilité de une seule verte\n=", TabloFreqM[2] + TabloFreqM[3], "\n\n") cat("Estimation de la probabilité que, sachant qu'une seule verte a", "été tirée,\nce soit la première =", TabloFreqM[2] / (TabloFreqM[2] + TabloFreqM[3]), "\n\n") barplot(TabloFreqM, xlab = "COUPLES TIRÉS", ylab = "Fréquences simulées", main = "Distribution* simulée de M")}
3_2 : L'expérience consiste à tirer deux boules successivement, avec remise de le première si elle est verte, sans remise sinon
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATIONEXEMPLE 3 : ALGORITHME C3_2
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
> simavecsansC3_2()Tableau des fréquences simulées des modalités de la variable M VV VR RV RR 0.1010 0.3085 0.2425 0.3480
Estimation de la probabilité de seule la première est verte= 0.3085 Estimation de la probabilité de une seule verte= 0.551 Estimation de la probabilité que, sachant qu'une seule verte a été tirée, ce soit la première = 0.5598911
4/43_2 : L'expérience consiste à tirer deux boules successivement, avec
remise de le première si elle est verte, sans remise sinon
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
EN JETANT 200 FOIS UNE PIÈCE ÉQUILIBRÉE QUELLE EST LA PROBABILITÉ D'OBTENIR AU MOINS UNE FOIS DES PILES OU DES FACES
QUI SE SUIVENT AU MOINS SIX FOIS DE SUITE : ALGORITHME D1
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
> L = 6 ; piece = c("P", "F") ; tirages = 20 ; SerieLmax <- NULL
[1] "F" "P" "F" "F" "F" "P" "P" "F" "F" "F" "F" "F" "P" "F" "F" "F" "P" "F" "P"[20] "F"
> (chaines <- rle(experience))
Run Length Encoding lengths: int [1:11] 1 1 3 2 5 1 3 1 1 1 ... values : chr [1:11] "F" "P" "F" "P" "F" "P" "F" "P" "F" "P" ...
> chaines$length
[1] 1 1 3 2 5 1 3 1 1 1 1
(Lmax <- max(chaines$length))
Un peu de mécanique pour comprendre la fonction rle() de R
> (experience <- sample(piece, tirages, replace = T))
[1] 5
(SerieLmax <- c(SerieLmax, Lmax))
[1] 5 4 6 7 3 5 5 6 5 5 3 8 3 4 4 4 5 3 6 9 3 ...
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
> (tableLmax <- table(SerieLmax))
SerieLmax 2 3 4 5 6 7 8 9 1 16 28 21 14 5 3 2
(tableLmax[length(tableLmax):1])
SerieLmax 9 8 7 6 5 4 3 2 2 3 5 14 21 28 16 1
> as.numeric(names(tableLmax)) >= L
> names(tableLmax)"2" "3" "4" "5" "6" "7" "8" "9"
[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
LA FONCTION R DES "CHAÎNES" DE LONGUEUR 6 : ALGORITHME D1
par(mfrow = c(2, 1)) barplot(cumLmax, xlab = paste("Longueur maximale de chaîne dans les ", tirages, "tirages"), ylab = "Fréquences* simulées cumulées décroissantes", main = "Fréquences* cumulées décroissantes") barplot(tableLmax, xlab = paste("Longueur maximale de chaîne dans les ", tirages, "tirages"), ylab = "Fréquences* simulées", main = "Distribution* simulée de Lmax")}
chainesdD1 = function(L = 6, tirages = 200, nbsim = 2000){ SerieLmax <- NULL ; piece = c("Pile", "Face") for(i in 1:nbsim){ expe <- sample(piece, tirages, replace = TRUE) chaines <- rle(expe) Lmax <- max(chaines$length) SerieLmax <- c(SerieLmax, Lmax) } tableLmax <- table(SerieLmax) / nbsim ltable <- length(tableLmax) cumLmax <- cumsum(tableLmax[ltable:1])[ltable:1] FreqLmax <- sum(tableLmax[(as.numeric(names(tableLmax)) >= L)])
#************* Affichage des résultats ******************* cat("Une estimation de la probabilité d'au moins 1 chaîne de longueur", L, "ou \nplus vaut :", FreqLmax, "\n\n") print("Distribution* simulée de la chaîne de longueur maximale") print(tableLmax)
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
La longueur des chaines, le nombre de jets et le nombre de simulations sont en paramètres. La fonction simule la distribution de la longueur de la chaine de longueur maximale.
1/2
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
LA FONCTION R DES "CHAÎNES" DE LONGUEUR 6 ALGORITHME D1 : RÉSULTATS ET GRAPHIQUES
> chainesdD1()Une estimation de la probabilité d'au moins 1 chaînede longueur 6 ou plus vaut : 0.969
[1] "Distribution* simulée de la chaîne de longueurmaximale"SerieLmax 5 6 7 8 9 10 11 12 0.0310 0.1795 0.2400 0.2215 0.1500 0.0825 0.0440 0.0255 13 14 15 16 17 18 19 0.0105 0.0055 0.0050 0.0025 0.0015 0.0005 0.0005
L'apport de R ?
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
2/2
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
LES URNES DE POLYA, ÉVOLUTION DE LA PROPORTION DE BOULES BLANCHES AU COURS DES n TIRAGES : ALGORITHME D5_1
polya3D5_1 <- function(b = 8, r = 4, n = 100){ urne <- rep(c("b", "r"), c(b, r)) serieFreqb <- b / (b + r) for(k in 1:n){ tiragek <- sample(urne, 1) if(tiragek == "r") { urne <- c(urne, "r")} else { urne <- c(urne, "b") } serieFreqb[k + 1] <- sum(urne == "b") / (b + r + k) }
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
Une urne contient b boules blanches et r boules rouges ;On tire une boule au hasard et on la remet avec un boule supplémentaire de la même couleur, que l'on a pris dans la réserve.
# Affichage des résultats et des graphiques plot(1:(n + 1), serieFreqb, pch = 21, col = "blue", bg = "blue", cex = .5, xlab = "Rang du tirage", ylab = "Proportion* simulée de boules blanches", main = paste("Évolution de la proportion* de boules blanches", "dans l'urne\n Simulée à partir d'une composition initiale de", b, "blanches et", r, "rouges")) abline(h = b / (b + r), col = "red")}
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
1/5
LES URNES DE POLYA, ÉVOLUTION DE LA PROPORTION DE BOULES BLANCHES AU COURS DES n TIRAGES : ALGORITHME D5_1
SIMULATIONS, ALGORITHMES EN PROBABILITÉS III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
2/5
LES URNES DE POLYA, ÉVOLUTION DE LA PROPORTION DE BOULES BLANCHES AU COURS DES n TIRAGES : ALGORITHME D5_1
SIMULATIONS, ALGORITHMES EN PROBABILITÉS III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
3/5
LES URNES DE POLYA, DISTRIBUTION DE LA PROPORTION DE BOULES BLANCHES AU BOUT DES n TIRAGES : ALGORITHME D5_2
polya2D5_2 <- function(b = 8, r = 5, n = 50, nbsim = 1000){ seriePropX <- NULL ; classes <- seq(0, 1, .05) for(i in 1:nbsim){ urne <- rep(c("b", "r"), c(b, r)) for(k in 1:n){ tiragek <- sample(urne, 1) if(tiragek == "r") { urne <- c(urne, "r")} else { urne <- c(urne, "b") } } seriePropX[i] <- sum(urne == "b") / (b + r + n) } moySerie <- mean(seriePropX) etSerie <- sqrt(var(seriePropX) * (nbsim - 1) / nbsim)
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
Une urne contient b boules blanches et r boules rouges ;On tire une boule au hasard et on la remet avec un boule supplémentaire de la même couleur, que l'on a pris dans la réserve.
# Affichage des résultats et des graphiques cat("Moyenne de la série des X/M urne finale =", moySerie, "\n") cat("Ecart type de la série des X/M urne finale =", etSerie, "\n\n") par(mfrow = c(2, 1)) hist(seriePropX, freq = FALSE, xlim = c(0, 1), breaks = classes, main = "Distribution simulée de la proportion finale de blanches", xlab = "Proportion finale de blanches dans l'urne") abline(v = b / (b + r), col = "red") boxplot(seriePropX, horizontal = TRUE, ylim = c(0, 1) main = paste("Effectifs initiaux : blanches =", b, "rouges =", r, "\nnombre de tirages n=", n)) abline(v = b / (b + r), col = "red")}
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
4/5
LES URNES DE POLYA, DISTRIBUTION DE LA PROPORTION X/M DE BOULES BLANCHES AU BOUT DES n TIRAGES : ALGORITHME D5_2
SIMULATIONS, ALGORITHMES EN PROBABILITÉS III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
> polya2D5_2(b = 1, r = 1)Moyenne de la série des X/M urne finale = 0.5116731 Ecart type de la série des X/M urne finale = 0.2851376
> polya2D5_2(b = 10, r = 10)Moyenne de la série des X/M urne finale = 0.5058571 Ecart type de la série des X/M urne finale = 0.09294051
> polya2D5_2(b = 1, r = 2)Moyenne de la série des X/M urne finale = 0.3292264 Ecart type de la série des X/M urne finale = 0.2238736
5/5
LE JEU DE DÉS DE JEANNE : ALGORITHME D7
cinq6D7 <- function(nbsim = 2000){ serieK <- NULL ; dai <- 1:6 for(i in 1:nbsim){ k <- 1 jetk <- sample(dai, 5, replace = TRUE) nb6 <- sum(jetk == 6) r <- 5 - nb6 while(r != 0){ k <- k + 1 jetk <- sample(dai, r, replace = TRUE) nb6 <- sum(jetk == 6) r <- r - nb6 } serieK <- c(serieK, k) } quantiles <- quantile(serieK, probs = c(0, .05, .25, .5, .75, .95, 1)) tableFreqK <- table(serieK) / nbsim
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
Le jeu de JEANNE consiste à jeter des dés autant de fois que nécessaire pour obtenir 5 fois la face 6, de la façon suivante : Au départ elle jette 5 dés, reprend ceux qui n'ont pas fait 6 et les rejette, et ainsi de suite jusqu'à obtenir les 5 faces 6. On nomme K la variable aléatoire prenant pour valeur le nombre de jets nécessaire pour obtenir les 5 faces 6.
barplot(tableFreqK, xlab = "Variable K nombre de jets", ylab = "Fréquences* simulées", main = "Distribution* simulée de la variable K")}
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
1/2
#**** Affichage des résultats et des graphiques*********** cat("Quelques quantiles de la série simulée de la variable K\n", "nombre de jets pour avoir les 5 SIX\n") print(quantiles)
SIMULATIONS, ALGORITHMES EN PROBABILITÉS III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
LE JEU DE DÉS DE JEANNE : ALGORITHME D72/2
> cinq6()Quelques quantiles de la série simulée de la variable K nombre de jets pour avoir les 5 SIX 0% 5% 25% 50% 75% 95% 100% 1 5 8 11 16 26 54
Il n'a pas grand chose à changer pour que l'on puisse prendre le nombre de dés comme paramètre :
LE FRANC-CARREAU DE BUFFON (1733) : ALGORITHME E1
francaE1 <- function(AB = 1, R = 1 / 4, nbsim = 2000){ XO <- runif(nbsim, 0, AB) YO <- runif(nbsim, 0, AB) franca <- (XO > R & XO < AB - R) & (YO > R & YO < AB - R) freqfranca <- sum(franca) / nbsim
# Affichage des résultats et des graphiques cat("Représentation dynamique des 20 premières\n", "simulations du franc-carreau\n\n") cat("Fréquence simulée de l'événement franc-carreau\n", freqfranca, "\n\n")
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
# Par défaut la longueur du côté du carré est de 1 unité# et la longueur du rayon de la pièce est de 1/4 d'unité.
require(tripack) plot(0, 0, xlim = c(0, 1), ylim = c(0, 1), asp = 1, main = "10 premières simulations dynamiques du franc-carreau") abline(h = c(0, 1), v = c(0, 1), col = "red") for(i in 1:10){ points(XO[i], YO[i], pch = "+") circles(XO[i], YO[i], R, col = "red") Sys.sleep(1) } detach(package:tripack) }
> francaE1()Fréquence simulée de l'événement franc-carreau 0.25
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
1/2
LE FRANC-CARREAU DE BUFFON (1733) : ALGORITHME E1
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
# Par défaut la longueur du côté du carré est de 1 unité# et la longueur du rayon de la pièce est de 1/4 d'unité.
> francaE1()Fréquence simulée de l'événement franc-carreau 0.25
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
2/2
L'AIGUILLE DE BUFFON (1733) : ALGORITHME E2
buffonE2 <- function(a = 5, L = 4, nbsim = 50000){ x <- runif(nbsim, 0, a) xG <- runif(10, 0, 2 * a) ; yG <- rep(L, 10); t <- 1:10 Theta <- runif(nbsim, 0, pi) LSinTheta <- L * sin(Theta) xA <- xG - LSinTheta[t] ; yA <- L + L * cos(Theta)[t] xB <- xG + LSinTheta[t] ; yB <- L - L * cos(Theta)[t] SerieCoupe <- x < LSinTheta freqCoupe <- sum(SerieCoupe) / nbsim
# Affichage des résultats et des graphiques cat("Fréquence simulée de l'événement l'aiguille coupe une rainure\n", freqCoupe, "\n\n")
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
# Par défaut la largeur des planches est de 2 a unités.# et la longueur de la baguette est de 2L unités avec L<a.
plot(t, t, xlim = c(- a, 3 * a), ylim = c(0, 2 * L), type = "n", asp = 1, main = "Les 10 premiers lancers de l'aiguille") abline(v = c(0, 2 * a), col = "red") for(i in t){ points(xG[i], yG[i], pch = "+") points(xA[i], yA[i], pch = "A", cex = .7) points(xB[i], yB[i], pch = "B", cex = .7) lines(c(xA[i], xB[i]), c(yA[i], yB[i])) Sys.sleep(1) }}
> buffonE2()Fréquence simulée de l'événement l'aiguille coupe une rainure 0.50998
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
1/4
L'AIGUILLE DE BUFFON (1733) : ALGORITHME E2
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
# Par défaut la largeur des planches est de 2 a unités.# et la longueur de la baguette est de 2L unités avec L<a.
> buffonE2()Fréquence simulée de l'événement l'aiguille coupe une rainure 0.50998
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
2/4
GRANDEURS MESURÉES GRANDEURS CALCULÉESQUELLES DISTRIBUTIONS ? : ALGORITHME E3_1
DurUnif <- function(Mmol = 100.0869, masse = .1001, Volum = .1, Press = .995, ITMmol = .002411777, ITmasse = .0003, ITVolum = .0000823, ITPress = .0058, nbsim = 5000){# Fonction calculant la concentration Conc <- function(Mmol, masse, Volum, Press){masse * Press / (Mmol * Volum)}# Calcul des séries simulées des grandeurs mesurées. Simulations Gaussiennes. SerieMmol <- rnorm(nbsim, Mmol, ITMmol) Seriemasse <- rnorm(nbsim, masse, ITmasse) SerieVolum <- rnorm(nbsim, Volum, ITVolum) SeriePress <- rnorm(nbsim, Press, ITPress)# Calcul de la série simulée des concentrations (calculées) SerieConc <- Conc(SerieMmol, Seriemasse, SerieVolum, SeriePress)# Calcul des bornes des 20 classes des histogrammes BMmol <- seq(min(SerieMmol), max(SerieMmol), length.out = 21) Bmasse <- seq(min(Seriemasse), max(Seriemasse), length.out = 21) BVolum <- seq(min(SerieVolum), max(SerieVolum), length.out = 21) BPress <- seq(min(SeriePress), max(SeriePress), length.out = 21) BConc <- seq(min(SerieConc), max(SerieConc), length.out = 21)# Calcul de quantiles de la série simulée des concentrations quant <- quantile(SerieConc, probs = c(.01, .025, .05, .95, .975, .99))
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
Il s'agit du calcul de la dureté (concentration en CaCO3) d'un échantillon d'eau, calculée à partir de constantes et de grandeurs mesurées : M est la masse molaire du CaCO3, m est la masse de CaCO3 mesurée dans l'échantillon, V est le volume de l'échantillon, P est la pression atmosphérique.
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
1/4
GRANDEURS MESURÉES GRANDEURS CALCULÉESQUELLES DISTRIBUTIONS ? : ALGORITHME E3_1
# Affichage des résultats et des graphiques cat("Les quantiles de la série simulée de\n", "la grandeur calculée “Concentration” sont :\n") print(quant)
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
graphics.off() hist(SerieMmol, breaks = BMmol, right = FALSE, freq = FALSE) dev.new() hist(Seriemasse, breaks = Bmasse, right = FALSE, freq = FALSE) dev.new() hist(SerieVolum, breaks = BVolum, right = FALSE, freq = FALSE) dev.new() hist(SeriePress, breaks = BPress, right = FALSE, freq = FALSE) dev.new() hist(SerieConc, breaks = BConc, right = FALSE, freq = FALSE)}
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
2/4
> DurGauss()Les quantiles de la série simulée de la grandeur calculée “Concentration” sont : 1% 2.5% 5% 95% 97.5% 99% 0.009804494 0.009824860 0.009844906 0.010058008 0.010080572 0.010107596
SIMULATIONS, ALGORITHMES EN PROBABILITÉS III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
3/4GRANDEURS MESURÉES GRANDEURS CALCULÉESQUELLES DISTRIBUTIONS ? : ALGORITHME E3_1
SIMULATIONS, ALGORITHMES EN PROBABILITÉS III-UN OUTIL DU RÉSOLUTION DE PROBLÈME
4/4GRANDEURS MESURÉES GRANDEURS CALCULÉESQUELLES DISTRIBUTIONS ? : ALGORITHME E3_1
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
IV-EXPLOITER ET PROLONGER UNE EXPÉRIENCE ALÉATOIRE
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE
METTRE EN OEUVRE UN PROTOCOLE D'EXPÉRIENCERéaliser l'expérience et remplir les fiches de saisie
CONCEVOIR ET RÉALISER LA SAISIE DES DONNÉES DANS UN FICHIERÉlaborer la structure de fichier et utiliser un logiciel
Choisir un format de fichier pour l'importation dans R
ANALYSE EXPLORATOIRE DES DONNÉES AVEC RUtiliser les outils de la description statistique
Élaborer un rapport
PROLONGER L'EXPÉRIENCE PAR DES SIMULATIONS NUMÉRIQUESÉlaborer les simulations numériques avec R
Faire la description des séries simulées
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
IV-EXPLOITER ET PROLONGER UNE EXPÉRIENCE ALÉATOIRE
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE
LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRESMISE EN OEUVRE D'UN PROTOCOLE EXPÉRIMENTAL POUR ILLUSTRER
L'APPROCHE FRÉQUENTISTE DE LA NOTION DE PROBABILITÉ
• LE PROTOCOLE simule le contrôle qualité par attribut d'un mélange de semences devant contenir 30 % de graine d'AR. Chaque élève effectue QUATRE échantillonnages A, B, C, D, de tailles respectives 10, 20, 50 et 100 (tirages avec remise) dans le lot simulé par une bouteille (Guy Brousseau 1974) et relève le nombre de graines d'AR (cotillons rouges) obtenues, sur les fiches du protocole. Une fiche récapitulative est remplie avec les résultats récapitulatifs de la classe.
• Le récapitulatif classe est saisi sur tableur :
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
1/9
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
2/9LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES ...
• Les calculs de fréquence sont faits sur tableur, une variable couleur de bouchon est introduite (il y deux types de couleurs de bouchons des bouteilles).
•Un classeur d'une feuille contenant uniquement les fréquences est enregistrée au format .csv :
• L'importation dans R du tableau des fréquences peu se faire directement par un copier puis un coller dans R par la fonction read.table("clipboard", …) ou bien par lecture d'un fichier tableur ou d'un fichier texte .txt ou .csv , avec la même fonction read.table("nomfichier", ...), en précisant toujours les séparateurs de champs et certaines autres caractéristiques du tableau.
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
3/9• Le fichiers .csv est importé dans R avec la fonction read.table().
Affichages pour contrôle :
LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES ...
setwd("E:/HubW/CoursMath/CoursProba/Simulation/TPTD_Simul")(sem1 <- read.table("DataSem1Simul1BTS2011.csv", sep = ";", header = TRUE, dec = ","))
noms bouchon A_10 B_20 C_50 D_1001 BOUNAUDET ROUGE 0.3 0.40 0.38 0.322 DIACONO ROUGE 0.4 0.40 0.24 0.413 GILLES ROUGE 0.5 0.10 0.40 0.314 IGLESIAS BLEU 0.4 0.35 0.52 0.515 LABREZE BLEU 0.5 0.45 0.56 0.476 LATTIER ROUGE 0.2 0.25 0.28 0.327 LHUILLERY ROUGE 0.5 0.50 0.36 0.358 MARTROU ROUGE 0.3 0.35 0.36 0.359 NOVELLA ROUGE 0.2 0.25 0.30 0.3210 VERGNE ROUGE 0.4 0.50 0.24 0.3111 BARDET ROUGE 0.2 0.30 0.28 0.3212 LUNA ROUGE 0.3 0.25 0.30 0.3013 POADAE ROUGE 0.6 0.30 0.26 0.1914 REBIERE ROUGE 0.4 0.35 0.24 0.35
boxplot(sem1[,3:6], ylab = "Fréquences observées d'AR", xlab = "Échantillons par taille", main = "Variabilité des fréquences dans la classe")
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
4/9•Pour introduire la taille d'échantillon comme variable, il faut modifier
la structure des données en créant de nouvelles variables comme suit :
LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES ...
couleurB <- rep(sem1$bouchon, 4)taillechant1 <- rep(c(10, 20, 50, 100), each = 14)freq1AR <- c(sem1$A_10, sem1$B_20, sem1$C_50, sem1$D_100)
couleurB taillechant1 freq1AR1 ROUGE 10 0.302 ROUGE 10 0.403 ROUGE 10 0.504 BLEU 10 0.405 BLEU 10 0.506 ROUGE 10 0.207 ROUGE 10 0.508 ROUGE 10 0.309 ROUGE 10 0.2010 ROUGE 10 0.4011 ROUGE 10 0.2012 ROUGE 10 0.3013 ROUGE 10 0.6014 ROUGE 10 0.4015 ROUGE 20 0.4016 ROUGE 20 0.4017 ROUGE 20 0.1018 BLEU 20 0.3519 BLEU 20 0.4520 ROUGE 20 0.25... ... ... ...
plot(taillechant1, freq1AR, main = "Toutes bouteilles")
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
5/9•On peut alors illustrer graphiquement les distributions des fréquences
observées, sous différentes formes. Noter la polyvalence de plot.
LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES ...
par(mfrow = c(1, 2))plot(taillechant1, freq1AR, main = "Toutes bouteilles")plot(as.factor(taillechant1), freq1AR, main = "Toutes bouteilles")
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
6/9•Mais où sont les bouchons bleus ? • Et si on enlève les bleus des boites?
LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES ...
par(mfrow = c(1, 2))plot(taillechant1, freq1AR, main = "Toutes bouteilles", pch = 21, bg = c("blue", "red")[couleurB])plot(as.factor(taillechant1)[couleurB != "BLEU"], freq1AR[couleurB != "BLEU"], main = "Bouteilles rouges")
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE
LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRESQUE SE PASSE-T-IL LORSQUE n AUGMENTE ENCORE?
COMMENT POURSUIVRE L'EXPÉRIENCE PAR DES SIMULATIONS NUMÉRIQUESALGORITHME F1 (adapté de A4)
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
7/9
• Il va donc s'agir de simuler l'expérience des bouteilles avec R. Mais pour introduire un modèle dans la simulation, il faut bien faire des hypothèses sur le % de graines d'AR dans les bouteilles.
•On se base sur le récapitulatif de la classe pour proposer 32 AR pour 100.
• Il suffit d'adapter l'algorithme A4 et de l'utiliser par la suite (diapo suivante) :
nbAR_A4bis <- function(nbsim, n, nbAR = 32, nbtot = 100){ bouteille <- rep(c("AR", "Autre"), c(nbAR, nbtot - nbAR)) SerieSimulX <- NULL for(i in 1:nbsim){ ResExpe <- sample(bouteille, n, replace = TRUE) x <- sum(ResExpe == "AR") SerieSimulX <- c(SerieSimulX, x) } return(SerieSimulX / n)}
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE
LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRESSIMULATIONS NUMÉRIQUES ...
dev.new() plot(as.factor(nechant), simfreqar, xlab = "Échantillons par tailles", ylab = "Fréquence des succès", main = "Résumé des distributions*")
nechant <- rep(c(10, 20, 50, 100, 500, 1000), c(20, 20, 20, 20, 20, 20))
simfreqar <- c(nbAR_A4bis(20, 10), nbAR_A4bis(20, 20), nbAR_A4bis(20, 50), nbAR_A4bis(20, 100) nbAR_A4bis(20, 500), nbAR_A4bis(20, 1000))
#--------------- Affichage des résultats et des graphiques------------ plot(nechant, simfreqar, main = "Distributions* des fréquences* des succès")
L'apport de R ?
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
8/9
•On utilise le fonction nbAR_A4bis() pour simuler les tirages d'une classe de 20.
•On peut facilement passer de la version ligne de commandes à la version fonction.
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE
LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
9/9
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
QUELQUES EXEMPLES COMPLÉMENTAIRES
PLUS OU MOINS PROBABILISTES
EXEMPLES COMPLÉMENTAIRES
QUELQUES REPRÉSENTATIONS GRAPHIQUES DE LA SUITE DE SYRACUSE 1/2 ALGORITHME G1_1
Analyse exploratoire des n premiers termes d'une suite de Syracuse
plot(0:n, vectu, xlab = "rangs n de la suite", ylab = "Valeurs des termes de la suite", pch = ".", cex = 3, main = paste("Suite de Syracuse U0 =",U0))}
syracn0G1_1 = function(U0 = 2919, n = 200){
k <- 0 ; u <- U0 ; vectu <- rep(0, n + 1) vectu[1] <- U0 ; names(vectu) <- 0:n
#*****Affichage des résultats et des graphiques***** cat("La valeur maximale de Un vaut :", maxun, "\n")
for(i in 2:(n+1)){
> syracn0D1_1()La valeur maximale de Un vaut : 250504
[1] "vecteur des 10 premières valeurs de (un)" 0 1 2 3 4 5 6 7 8 9 2919 8758 4379 13138 6569 19708 9854 4927 14782 7391
if(u %% 2 == 0) {u <- u / 2} else {u <- 3 * u + 1}
vectu[i] <- u
} maxun <- max(vectu)
print("vecteur des 10 premières valeurs de (un)") print(vectu[1:10])
SIMULATIONS, ALGORITHMES EN PROBABILITÉS EXEMPLES COMPLÉMENTAIRES
QUELQUES REPRÉSENTATIONS GRAPHIQUES DE LA SUITE DE SYRACUSE 2/2 ALGORITHME G1_2
Statistiques descriptives : Distribution des durées de volsyrG1_2 = function(U0Inf = 1, U0Sup = 100){ taille <- (U0Sup - U0Inf + 1) vectk <- vector(length = taille) names(vectk) <- U0Inf:U0Sup j <- 1 for(i in U0Inf:U0Sup){ k <- 0 ; u <- i while(u != 1){ if(u %% 2 == 0) {u <- u / 2} else {u <- 3 * u + 1} k <- k + 1 } vectk[j] <- k j <- j + 1 } minn <- min(vectk) ; maxn <- max(vectk) nbvaln <- maxn - minn + 1 tabloeffec <- vector(length = nbvaln) names(tabloeffec) <- minn:maxn effec <- table(vectk) indicestablo <- as.numeric(names(effec)) - min(as.numeric(names(effec))) + 1 tabloeffec[indicestablo] <- effec
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
#************* Affichage des résultats ******************* par(mfrow = c(2, 1)) plot(as.numeric(names(vectk)), vectk, xlab = "valeurs de U0", ylab = "Durée k du vol", pch = ".", cex = 3, main = paste("Durée k du vol en fonction de U0", " de\n", U0Inf, "à", U0Sup)) barplot(tabloeffec, xlab = "Durée k du vol", ylab = "Effectifs", main = paste("Diagramme en barre de la distribution", "des valeurs de k", sep = "\n"))}
EXEMPLES COMPLÉMENTAIRES
QUELQUES REPRÉSENTATIONS GRAPHIQUES DE LA SUITE DE SYRACUSE 2/2 ALGORITHME G1_2
Statistiques descriptives : Distribution des durées de vol
SIMULATIONS, ALGORITHMES EN PROBABILITÉS EXEMPLES COMPLÉMENTAIRES
REPRÉSENTATIONS GRAPHIQUES DES TRIANGLES DE SIERPINSKY ALGORITHME G2
Tracer le triangle A(-10;0), B(10;0), C(0;10√3). Placer un point M0(x;y) quelconque dans ce triangle. Pour placer les points Mi suivants : Tirer un nombre entier a au hasard entre 1 et 3. Si a=1 le point Mi sera le milieu du segment AMi-1, si a=2 le point Mi sera le milieu du segment BMi-1, si a=2 le point Mi sera le milieu du segment CMi-1, est ainsi de suite à l'infini ...
triangleG2 <- function(nbsim = 50000, xM = 3, yM = 2){ xA <- -10 ; yA <- 0 ; xB <- 10 ; yB <- 0 ; xC <- 0 ; yC <- 10 * sqrt(3) plot(c(xA, xB, xC), c(yA, yB, yC)) lines(c(xA, xB, xC, xA), c(yA, yB, yC, yA)) points(xM, yM, pch = "*") ; x <- xM ; y <- yM for(i in 1:nbsim){ a <- sample(1:3, 1) if(a == 1){ x <- (xA + x) / 2 ; y <- (yA + y) / 2 points(x, y, pch = ".", col = "green") } else { if(a == 2){ x <- (xB + x) / 2 ; y <- (yB + y) / 2 points(x, y, pch = ".", col = "red") } else { x <- (xC + x) / 2 ; y <- (yC + y) / 2 points(x, y, pch = ".", col = "blue") } } }}
SIMULATIONS, ALGORITHMES EN PROBABILITÉS EXEMPLES COMPLÉMENTAIRES
REPRÉSENTA-TION
GRAPHIQUE DES
TRIANGLES DE
SIERPINSKY ALGORITHME
G2
EXEMPLES COMPLÉMENTAIRES
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
LES SEULES FONCTIONS R NÉCESSAIRES À LA RÉALISATION DES TOUTES LES SIMULATIONS QUE L'ON VIENT DE VOIR
(AUCUN PACKAGE ADDITIONNEL N'EST NÉCESSAIRE) :
function()c()
rep()?()[]:;,
par()plot()print()cat()
dev.new()
sum()cumsum()while()for()if()
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
table()quantile()
rle()unique()
barplot()boxplot()hist()
rbinom()sample()names()which()
SIMULATIONS, ALGORITHMES EN PROBABILITÉS V-CONCLUSIONS
Intérêt didactique des simulations (Michel Henry, 2011)
• Les simulations permettent de travailler sur de grandes séries statistiques, donnant du sens aux résumés statistiques (paramètres de position et de dispersion, diagrammes et histogrammes) et montrant leur pertinence.
• Elles mettent en œuvre un processus de modélisation.
• Elles permettent une présentation dynamique de l’interaction entre les notions de fréquence et de probabilité.
• Elles permettent de répéter en classe une expérience aléatoire un assez grand nombre de fois pour induire une bonne compréhension de la loi des grands nombres.
• Un intérêt supplémentaire non négligeable est qu’elles permettent de résoudre des problèmes trop difficiles ou impossibles à traiter directement “à la main”.
R NOUS A PERMIS DE METTRE EN OEUVRE DES STRATÉGIES VARIÉES DE SIMULATION POUR SURMONTER DES OBSTACLES
DIDACTIQUES
AVEC R ON PEUT FAIRE DE LA SIMULATION UN VÉRITABLE OUTIL DE TRANSPOSITION DIDACTIQUE ET DE RÉSOLUTION
DE PROBLÈMES.
L'ANALYSE EXPLORATOIRE DES SÉRIES SIMULÉES PERMET DE RÉINVESTIR LES STATISTIQUES DESCRIPTIVES ET DE MONTRER LA PLACE IMPORTANTE QU'ELLES OCCUPENT DANS L'ANALYSE
DES DONNÉES AU SENS LARGE.
IL ME PARAIT NÉCESSAIRE DE TRAVAILLER À RENDRE PLUS PRÉCIS LE "LANGAGE" NATUREL UTILISÉ EN ALGORITHMIQUE.
IL SEMBLE QUE LES HORAIRES ACTUELS NE PERMETTENT PAS L'APPROPRIATION D'UN LANGAGE DE PROGRAMMATION DE FAÇON À CE QUE LES ÉLÈVES EN FASSENT UNE UTILISATION
AUTONOME.
SIMULATIONS, ALGORITHMES EN PROBABILITÉS V-CONCLUSIONS
SIMULATIONS, ALGORITHMES EN PROBABILITÉS Quelques références
Sur la modélisation et la simulation :
STATISTIQUES AU LYCÉE, vol. 1, CII statistique et probabilité, Brochure APMEP n° 156, juillet 2005.
● GIRARD Jean-Claude, HENRY Michel. Modélisation et simulation en classe. Page 147-159.
● PICHARD Jean-François. Expérimentation et simulation probabiliste. pages 161-180.
HENRY Michel (2011). Simulations d’expériences aléatoires en classe : Un enjeu didactique pour comprendre la notion de modèle probabiliste, un outil de résolution de problèmes. (Bulletin de l'APMEP. Num. 496. p. 536-550 et http://revue.sesamath.net/spip.php?article353).
HENRY Michel (coordinateur) (2001). Autour de la modélisation en probabilité. CII statistique et probabilité. Presses Universitaires Franc-Comtoises.
PARZYSZ Bernard (2009). Des expériences au modèle, via la simulation. Repères-IREM 74, 91-103.
Plus généralement► Lafaye De Micheaux Pierre, Drouilhet Remy, Liquet Benoit ; 2010 ; Le logiciel R, maîtriser le langage, effectuer des analyses statistiques ; Springer.
► Millot Gaël ; 2009 ; Comprendre et réaliser des tests statistiques à l'aide de R ; manuel pour les débutants ; De Boeck.
► François Husson ; Sébastien Lê ; Jérôme Pagès ; 2009 ; Analyse de données avec R ; P U De Rennes.
► Pierre-André Cornillon ; 2010 ; Régression avec R ; Springer.► Pierre-André Cornillon, Arnaud Guyader, François Husson et al. ; 2010 ; Statistique avec R (2e édition) ; P U De Rennes.
► http://pbil.univ-lyon1.fr/R/enseignement.html► http://rug.mnhn.fr/semin-r/
1/2
SIMULATIONS, ALGORITHMES EN PROBABILITÉS
DE LA DOC., DES LIVRES, DES COURS, SUR R ... ? … EN FRANÇAIS ??
À FOISON SUR LES SITES DES ÉCOLES, DES UNIVERSITÉS, DES INSTITUTS ..., DES LIBRAIRIES ...
► Pierre-André Cornillon, & Eric Matzner-Løber ; Atouts et faiblesses de R en enseignement, recherche et industrie.
► Deepayan Sarkar ; 2008 ; Lattice, Multivariate Data Visualization with R ; Springer.
► Frédéric Bertrand ; 2010 ; Initiation aux statistiques avec R ; cours, exemples, exercices et problèmes corrigés ; Licence 3, Master 1, écoles d'ingénieur ; Dunod.
► Yadolah Dodge ; 2008 ; Premiers pas en simulation ; Springer Verlag.► Christian P. Robert, George Casella ; 2011 ; Méthodes de Monte-Carlo avec R ;
Springer Verlag....
Quelques références
2/2