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
I-INTRODUCTION QUE DISENT LES PROGRAMMES?
I-INTRODUCTION 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 QU' EST-CE QUE LA SIMULATION?
I-INTRODUCTION Ce que ne précisent pas les programmes ni les documents d'accompagnement actuels : Qu'est-ce que la simulation? 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 simulation Modélisation expérience 1 (phénomène étudié) Représentation Validation expérience 2 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!
I-INTRODUCTION R : POURQUOI ET COMMENT?
I-INTRODUCTION R : POURQUOI ET COMMENT 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.
QUATRE DES INTERFACES DE R : I-NTRODUCTION 1 - Rcmdr : les menus à cliquer
I-INTRODUCTION QUATRE DES INTERFACES DE R: 2 - R-GUI : la console, l'éditeur de script...
I-INTRODUCTION QUATRE DES INTERFACES DE R : 3 -Tinn-R : coloration syntaxique, complétion, console intégrée...
QUATRE DES INTERFACES DE R: I-INTRODUCTION 4 -RStudio : coloration syntaxique, complétion, console intégrée, worskpace...
I-INTRODUCTION ALGORITHMES ET PROGRAMMES DANS LES MANUELS
I-INTRODUCTION 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? 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 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 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 pixi 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 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 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é?
II-UN OUTIL DU COURS DE PROBABILITÉ II-LA SIMULATION UN OUTIL DU COURS DE PROBABILITÉ
II-UN OUTIL DU COURS DE PROBABILITÉ II-LA SIMULATION UN OUTIL DU COURS DE PROBABILITÉ 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-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 valeurs la 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 L'aide sous R :?sample L'aide sous RStudio : touche tab sur sample (fonction contextuelle) L'apport de R?
II-UN OUTIL DU COURS DE PROBABILITÉ PROBLÈME HISTORIQUE DU GRAND DUC DE TOSCANE : JETER 3 FOIS UN DÉ** ALGORITHME A1_2 LIGNES 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) s <- sum(jeu) seriesomnbjets <- c(seriesomnbjets, s) #**** Affichage des résultats et des graphiques************* (tablefreqs <- table(seriesomnbjets) / nbsim) seriesomnbjets 3 4 5 6 7 8 9 10 0.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 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){ seriesomnbjets <- NULL ; de <- 1:6 for(i in 1:nbsim){ jeu <- sample(de, Nbjets, replace = TRUE) s <- sum(jeu) seriesomnbjets <- c(seriesomnbjets, s) tablefreqs <- table(seriesomnbjets) / nbsim #**** Affichage des résultats et des graphiques*********** cat("tableau des fréquences simulées:\n") print(tablefreqs) barplot(tablefreqs, xlab = "Valeurs de la variable somme", ylab = "Fréquences simulées", main = "Distribution simulée de la variable 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
II-UN OUTIL DU COURS DE PROBABILITÉ PROBLÈME HISTORIQUE DU GRAND DUC DE TOSCANE : JETER 3 FOIS UN DÉ** UNE STRATÉGIE POUR ÉVITER LES BOUCLES ALGORITHME A1_6 toscanea1_6 <- function(nbsim = 2000){ de <- 1:6 seriejets1 <- sample(de, nbsim, replace = T) seriejets2 <- sample(de, nbsim, replace = T) seriejets3 <- sample(de, nbsim, replace = T) seriesom3jets <- seriejets1 + seriejets2 + seriejets3 tablefreqs <- table(seriesom3jets) / nbsim #**** Affichage des résultats et des graphiques*********** print(tablefreqs) barplot(tablefreqs, xlab = "Valeurs de la variable somme", ylab = "Fréquences simulées", main = "Distribution simulée de la variable S") > 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 > 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
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){ seriesomnbjets <- NULL ; de <- 1:6 ; probafaces = de / 21 for(i in 1:nbsim){ jeu <- sample(de, Nbjets, prob = probafaces, replace = TRUE) s <- sum(jeu) seriesomnbjets <- c(seriesomnbjets, s) tablefreqs <- table(seriesomnbjets) / nbsim #**** Affichage des résultats et des graphiques*********** cat("tableau des fréquences simulées:\n") print(tablefreqs) barplot(tablefreqs, xlab = "Valeurs de la variable somme", ylab = "Fréquences simulées", main = "Diagramme en barres") > 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 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(){ s <- array(0, dim = c(6, 6, 6)) for(i in 1:6){ for(j in 1:6){ for(k in 1:6){s[i, j, k] <- i + j + k tabloprobas <- table(s) / 216 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 plot(probas3dea1_9(), col = "red", main = "Distribution de probabilité de S") L'apport de R?
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) 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)) points(barplot(3:18, plot = FALSE), DistribprobaS, pch = 21, col = "red", bg = "red") > 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
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) barplot(resultats / nbsim, ylab = "Fréquences simulées") > croixpilea2_1(nbsim = 5000) (DISTRIBUTION*) GagnéCoup1 GagnéCoup2 Perdu 0.4915 0.2565 0.2520 L'apport de R?
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 R qui 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. (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 ResExpe == 9 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE 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 0 sum(resexpe == 9) [1] 2 which(resexpe == 9) [1] 10 13 (r <- min(which(resexpe == 9))) [1] 10 4 TRUE FALSE FALSE
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 R rangpremiersuccesa3 <- 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 seriesimr <- c(seriesimr, r) tablefreqr <- table(seriesimr) / nbsim MoySerieR <- mean(seriesimr) #**** 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") > rangpremiersuccesa3() (DISTRIBUTION*) Tableau de distribution des fréquences simulées de la variable Rang du premier succès et moyenne de la série seriesimr 0 1 2 3 4 5 6 7 8 0.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 17 0.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 L'apport de R?
II-UN OUTIL DU COURS DE PROBABILITÉ ALGORITHME DE CALCUL DE PROBABILITÉS AVEC LA LOI GÉOMÉTRIQUE TRONQUÉE : ALGORITHME A3_1 Graphique des probabilités cumulées " Calcul de la probabilité d'événements divers L'apport de R? geotronka3_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) > 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))) [1] 2.9567 Variance 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 1/3 Comment gérer le fait que toutes les valeurs de la variable ne sont pas forcément atteintes. roulette <- 1:18 ; seriek <- NULL ; n <- 10 ; nbsim <- 30 tablo <- 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] <- tableeffk tableeffk tablo > tableeffk seriek 0 2 3 4 6 7 9 10 15 1 6 2 1 1 2 2 > tablo 0 1 2 15 0 1 3 6 4 2 5 0 6 1 7 1 8 0 9 10 2 2
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 2/3 Comment gérer le fait que toutes les valeurs de la variable ne sont pas forcément atteintes. 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) L'apport de R?
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 3/3 Comment gérer le fait que toutes les valeurs de la variable ne sont pas forcément atteintes. L'apport de R?
II-UN OUTIL DU COURS DE PROBABILITÉ SIMULER UN INTERVALLE DE FLUCTUATION D'UNE VARIABLE FRÉQUENCE X/n : ALGORITHME A5 La simulation de l'expérience des n épreuves est faite par la fonction 1/2 SimulXSucces()définie à l'intérieur de la fonction principale. 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 #**** 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") 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")
II-UN OUTIL DU COURS DE PROBABILITÉ SIMULER UN INTERVALLE DE FLUCTUATION D'UNE VARIABLE FRÉQUENCE X/n : ALGORITHME A5 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. > 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? 2/2
II-UN OUTIL DU COURS DE PROBABILITÉ CALCUL D'UN INTERVALLE DE FLUCTUATION D'UNE VARIABLE BINOMIALE X ET DE LA VARIABLE FRÉQUENCE CORRESPONDANTE X/n ALGORITHME A5_1 1/2 Un des modes de calcul faisant office de définition - du document ressource de première S L'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 Pas de boucle tant que, mise en œuvre directe de la définition de 1ère 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 #**** 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") 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")
II-UN OUTIL DU COURS DE PROBABILITÉ CALCUL D'UN INTERVALLE DE FLUCTUATION D'UNE VARIABLE BINOMIALE X ET DE LA VARIABLE FRÉQUENCE CORRESPONDANTE X/n ALGORITHME A5_1 2/2 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É EXPLORATION D'UN INTERVALLE DE FLUCTUATION ASYMPTOTIQUE D'UNE VARIABLE BINOMIALE : ALGORITHME A5_3bis 1/2 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. 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) #*****Affichage des graphiques*************** plot(0:n, y, cex =.5, ylim = c(.9, 1), 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")
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)
II-UN OUTIL DU COURS DE PROBABILITÉ EXPLORATION D'UN INTERVALLE DE FLUCTUATION ASYMPTOTIQUE D'UNE VARIABLE BINOMIALE : ALGORITHME A5_3 1/2 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. 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) #***************Affichage des graphiques****************** plot(0:n, y, cex =.4, ylim = c(.9, 1), 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")
II-UN OUTIL DU COURS DE PROBABILITÉ EXPLORATION D'UN INTERVALLE DE FLUCTUATION ASYMPTOTIQUE D'UNE VARIABLE BINOMIALE : ALGORITHME A5_3 2/2 Probabilité binomiale de l'if asymptotique de terminale p±1,96*racine(p(1-p)/n) pifasya5_3(n = 200, p =.5) L'apport de R? pifasya5_3(n = 2000, p =.5)
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME III-LA SIMULATION UN OUTIL DE RÉSOLUTION DE PROBLÈMES
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME III-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 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(). 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 personnes aient le même jour anniversaire dans une assemblée de 10 personnes vaut : 0.121 > simanivb1_1(n = 50) Une estimation de la probabilité qu'au moins deux personnes aient le même jour anniversaire dans une assemblée de 50 personnes vaut : 0.974
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME SIMULER LA MARCHE ALÉATOIRE DE LA PUCE : ALGORITHME B3 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 # Affichage des résultats et des graphiques print(posimoy) 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") > marchea(nbsaut = 30, p =.5, Nbsim = 100) [1] 0.2
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME SIMULER LA MARCHE ALÉATOIRE DE LA PUCE : ALGORITHME B3 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. > marchea(nbsaut = 30, p =.5, Nbsim = 100) [1] 0.2
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATION EXEMPLE 1 : 2012-S-Mars-Nouvelle Calédonie-Exercice 2 : un dé et deux urnes ALGORITHME C1 1/3
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATION EXEMPLE 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") 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 SIMULATION EXEMPLE 1 : ALGORITHME C1 NelleCaled2012C1() Estimation de la probabilité de tirer une boule noire : 0.3822 Fréquences* simulées cumulées décroissantes de la variable X seriegagne 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 SIMULATION EXEMPLE 3 # 2010-S-NovembreNouvelle-Calédonie Exercice 3 : urne boules, tirages # avec et sans remise ALGORITHMES C3 1/4
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATION EXEMPLE 3 : ALGORITHME C3_1 2/4 3_1 : L'expérience consiste à tirer deux boules simultanément 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") barplot(tablofreqx, xlab = "Nombre de vertes", ylab = "Fréquences* simulées", main = "Distribution* simulée de X") > 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
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATION EXEMPLE 3 : ALGORITHME C3_2 3_2 : L'expérience consiste à tirer deux boules successivement, avec remise de le première si elle est verte, sans remise sinon 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/4
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME RÉSOLUTION* DE PROBLÈMES DE BAC S PAR SIMULATION EXEMPLE 3 : ALGORITHME C3_2 3_2 : L'expérience consiste à tirer deux boules successivement, avec remise de le première si elle est verte, sans remise sinon > 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 = 0.3085 Estimation = 0.551 Estimation été tirée, de la probabilité de seule la première est verte de la probabilité de une seule verte de la probabilité que, sachant qu'une seule verte a ce soit la première = 0.5598911 4/4
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 Un peu de mécanique pour comprendre la fonction rle() de R > L = 6 ; piece = c("p", "F") ; tirages = 20 ; SerieLmax <- NULL > (experience <- sample(piece, tirages, replace = T)) [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)) [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... > (tablelmax <- table(serielmax)) SerieLmax 2 3 4 5 6 1 16 28 21 14 7 5 8 3 9 2 (tablelmax[length(tablelmax):1]) SerieLmax 9 8 7 6 5 4 3 2 3 5 14 21 28 16 2 1 > names(tablelmax) "2" "3" "4" "5" "6" "7" "8" "9" > as.numeric(names(tablelmax)) >= L [1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME LA FONCTION R DES "CHAÎNES" DE LONGUEUR 6 : ALGORITHME D1 1/2 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. 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) 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")
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îne de longueur 6 ou plus vaut : 0.969 [1] "Distribution* simulée de la chaîne de longueur maximale" 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? 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 1/5 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. 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) # 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 LES URNES DE POLYA, ÉVOLUTION DE LA PROPORTION DE BOULES BLANCHES AU COURS DES n TIRAGES : ALGORITHME D5_1 2/5
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 3/5
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME LES URNES DE POLYA, DISTRIBUTION DE LA PROPORTION DE BOULES BLANCHES AU BOUT DES n TIRAGES : ALGORITHME D5_2 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. 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) # 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") 4/5
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME LES URNES DE POLYA, DISTRIBUTION DE LA PROPORTION X/M DE BOULES BLANCHES AU BOUT DES n TIRAGES : ALGORITHME D5_2 > polya2d5_2(b = 1, r = 1) > polya2d5_2(b = 1, r = 2) 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 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 > 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
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME 1/2 LE JEU DE DÉS DE JEANNE : ALGORITHME D7 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. 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 #**** 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) 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 LE JEU DE DÉS DE JEANNE : ALGORITHME D7 > 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 2/2 Il n'a pas grand chose à changer pour que l'on puisse prendre le nombre de dés comme paramètre :
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME LE FRANC-CARREAU DE BUFFON (1733) : ALGORITHME E1 # 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 <- 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") 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 1/2
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME LE FRANC-CARREAU DE BUFFON (1733) : ALGORITHME E1 # 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 2/2
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME L'AIGUILLE DE BUFFON (1733) : ALGORITHME E2 # 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 <- 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") 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 1/4
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME L'AIGUILLE DE BUFFON (1733) : ALGORITHME E2 # 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 2/4
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME GRANDEURS MESURÉES GRANDEURS CALCULÉES 1/4 QUELLES DISTRIBUTIONS? : ALGORITHME E3_1 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. 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))
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME GRANDEURS MESURÉES GRANDEURS CALCULÉES QUELLES 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) graphics.off() hist(seriemmol, breaks = BMmol, right = dev.new() hist(seriemasse, breaks = Bmasse, right dev.new() hist(serievolum, breaks = BVolum, right dev.new() hist(seriepress, breaks = BPress, right dev.new() hist(serieconc, breaks = BConc, right = FALSE, freq = FALSE) = FALSE, freq = FALSE) = FALSE, freq = FALSE) = FALSE, freq = FALSE) FALSE, freq = FALSE) > 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 2/4
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME GRANDEURS MESURÉES GRANDEURS CALCULÉES QUELLES DISTRIBUTIONS? : ALGORITHME E3_1 3/4
III-UN OUTIL DU RÉSOLUTION DE PROBLÈME GRANDEURS MESURÉES GRANDEURS CALCULÉES QUELLES DISTRIBUTIONS? : ALGORITHME E3_1 4/4
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE IV-EXPLOITER ET PROLONGER UNE EXPÉRIENCE ALÉATOIRE
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE IV-EXPLOITER ET PROLONGER UNE EXPÉRIENCE ALÉATOIRE METTRE EN OEUVRE UN PROTOCOLE D'EXPÉRIENCE Ré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 R Utiliser 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
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES MISE EN OEUVRE D'UN PROTOCOLE EXPÉRIMENTAL POUR ILLUSTRER 1/9 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 :
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE LES 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. 2/9
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES... Le fichiers.csv est importé dans R avec la fonction read.table(). Affichages pour contrôle : 3/9 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_100 1 BOUNAUDET ROUGE 0.3 0.40 0.38 0.32 2 DIACONO ROUGE 0.4 0.40 0.24 0.41 3 GILLES ROUGE 0.5 0.10 0.40 0.31 4 IGLESIAS BLEU 0.4 0.35 0.52 0.51 5 LABREZE BLEU 0.5 0.45 0.56 0.47 6 LATTIER ROUGE 0.2 0.25 0.28 0.32 7 LHUILLERY ROUGE 0.5 0.50 0.36 0.35 8 MARTROU ROUGE 0.3 0.35 0.36 0.35 9 NOVELLA ROUGE 0.2 0.25 0.30 0.32 10 VERGNE ROUGE 0.4 0.50 0.24 0.31 11 BARDET ROUGE 0.2 0.30 0.28 0.32 12 LUNA ROUGE 0.3 0.25 0.30 0.30 13 POADAE ROUGE 0.6 0.30 0.26 0.19 14 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 LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES... Pour introduire la taille d'échantillon comme variable, il faut modifier la structure des données en créant de nouvelles variables comme suit : 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 freq1ar 1 ROUGE 10 0.30 2 ROUGE 10 0.40 3 ROUGE 10 0.50 4 BLEU 10 0.40 5 BLEU 10 0.50 6 ROUGE 10 0.20 7 ROUGE 10 0.50 8 ROUGE 10 0.30 9 ROUGE 10 0.20 10 ROUGE 10 0.40 11 ROUGE 10 0.20 12 ROUGE 10 0.30 13 ROUGE 10 0.60 14 ROUGE 10 0.40 15 ROUGE 20 0.40 16 ROUGE 20 0.40 17 ROUGE 20 0.10 18 BLEU 20 0.35 19 BLEU 20 0.45 20 ROUGE 20 0.25............ plot(taillechant1, freq1ar, main = "Toutes bouteilles") 4/9
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES... On peut alors illustrer graphiquement les distributions des fréquences observées, sous différentes formes. Noter la polyvalence de plot. par(mfrow = c(1, 2)) plot(taillechant1, freq1ar, main = "Toutes bouteilles") plot(as.factor(taillechant1), freq1ar, main = "Toutes bouteilles") 5/9
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES... Mais où sont les bouchons bleus? Et si on enlève les bleus des boites? 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") 6/9
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES 7/9 QUE SE PASSE-T-IL LORSQUE n AUGMENTE ENCORE? COMMENT POURSUIVRE L'EXPÉRIENCE PAR DES SIMULATIONS NUMÉRIQUES ALGORITHME F1 (adapté de A4) 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 NOMBRES SIMULATIONS NUMÉRIQUES... 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. 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") dev.new() plot(as.factor(nechant), simfreqar, xlab = "Échantillons par tailles", ylab = "Fréquence des succès", main = "Résumé des distributions*") L'apport de R?
IV-EXPLOITER PROLONGER UNE EXPÉRIENCE LES DISTRIBUTIONS DANS LA LOI DES GRANDS NOMBRES 9/9
EXEMPLES COMPLÉMENTAIRES 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 syracn0g1_1 = function(u0 = 2919, n = 200){ k <- 0 ; u <- U0 ; vectu <- rep(0, n + 1) vectu[1] <- U0 ; names(vectu) <- 0:n for(i in 2:(n+1)){ if(u %% 2 == 0) {u <- u / 2 else {u <- 3 * u + 1 vectu[i] <- u maxun <- max(vectu) #*****Affichage des résultats et des graphiques***** cat("la valeur maximale de Un vaut :", maxun, "\n") print("vecteur des 10 premières valeurs de (un)") print(vectu[1:10]) 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)) > 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 2919 8758 4379 13138 6569 19708 9854 4927 14782 9 7391
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 syrg1_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 #************* 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
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")
EXEMPLES COMPLÉMENTAIRES REPRÉSENTATION GRAPHIQUE DES TRIANGLES DE SIERPINSKY ALGORITHME G2
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) : table() quantile() rle() unique() barplot() boxplot() hist() rbinom() sample() names() which() function() c() rep()?() [] : ;, par() plot() print() cat() dev.new() sum() cumsum() while() for() if()
CONCLUSIONS
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.
V-CONCLUSIONS 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.
Sur la modélisation et la simulation : Quelques références 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
Quelques références 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.... 2/2