94
SIMULATIONS, ALGORITHMES EN PROBABILITÉS ET 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 … · SIMULATIONS, ALGORITHMES EN PROBABILITÉS Ce que ne précisent pas les programmes ni les documents d'accompagnement actuels : Qu'est-ce

  • Upload
    hacong

  • View
    224

  • 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

QUE DISENT LES PROGRAMMES ?

I-INTRODUCTION

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 I-INTRODUCTION

QU' EST-CE QUE LA SIMULATION ?

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 I-INTRODUCTION

R : POURQUOI ET COMMENT ?

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:

SIMULATIONS, ALGORITHMES EN PROBABILITÉS I-INTRODUCTION

ALGORITHMES ET PROGRAMMESDANS LES MANUELS

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

CONCLUSIONS

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