RICM4: Probabilité et Simulation

Table of Contents

Sitemap

---> misc
| ---> 2016
| ---> 2015
| ---> 2014
| ---> 2013
| ---> 2012
`--> Agenda

Informations Générales

Florence Perronnin est chargée des cours. Arnaud Legrand et Florence Perronnin s'occupent des TDs.

Le pad du cours est ici: https://tinyurl.com/RICM4-2018 Le planning avec les salles de cours est disponible ici.

Voici les annales des quicks des années précédentes et ceux de 2017 (RICM4_Quick2017.11.07.pdf et RICM4_Quick2017.12.04.pdf).

Programme du cours

Machines perso obligatoires en TD.

  • 5 Septembre 2018 (8:00 - 9:30): Cours (FP)
    • Documents: Présentation des objectifs du cours (slides).
    • À faire pour vendredi:
      1. Installer Rstudio sur votre portable. Pour cela, voir la section sur Rstudio un peu plus bas.
      2. Préparez le TD en suivant ce tutorial. Il y en a pour 40-45 minutes de lecture mais c'est très progressif et il y a 10 minutes de petits exercices pour vérifier que vous avez bien compris.
  • 7 Septembre 2018 (9:45 - 13:00): TD (AL) Au programme:
    • Évaluation de votre autonomie (Rstudio installé, tuto essayé, …)
    • Prise en main de R et de RStudio, premiers documents avec Rmarkdown.
    • Début de simulation d'un A/B test. Voici les notes prises pendant le premier TD et les sources en Rmd.
  • 14 Septembre 2018 (9:45 - 13:00): TD (FP)
    • Préparation du TD:
      • Préparez le TD en suivant ce tutorial. Il y en a pour 40-45 minutes de lecture. Il présente les principaux types et structures de données en R et permettre de démystifier un certain nombre de choses. C'est très progressif mais ne brulez pas les étapes pour bien tout comprendre. Les exercices sont faciles. Si vous rencontrez des difficultés, n'hésitez pas à (re)faire le tutorial proposé pour la séance précédente.
      • Objectifs de la séance: Modéliser et simuler des situations simples mais assez fréquentes. Faire le lien entre la modélisation mathématique et le code de la simulation. Apprivoiser certaines lois classiques (Bernouilli, géométrique, …)
    • Voici notes prises pendant le second TD au format Rmd et les sources au format Rmd.
  • 18 Septembre 2018 (8:00 - 9:30): Cours (FP)
  • 25 Septembre 2018 (8:00 - 9:30): Cours (FP)
    • Documents: Une variable aléatoire, c'est quoi ? (slides).
  • 2 Octobre 2018 (8:00 - 9:30): Cours (FP)
  • 5 Octobre 2018 (9:45 - 13:00): TD (AL) Générateurs aléatoires.
    • Préparation du TD:
      • Se souvenir de ce que c'est qu'un modulo (%% en R).
      • Repartir de la syntaxe de base en R (les TDs précédents sont loin mais relisez vos notes et les tutos d'introduction à R). Je rappellerai l'essentiel ici au fil du TD (n'hésitez pas à m'aider d'ailleurs…): https://tinyurl.com/RICM4-2018
    • Fiche de TD: Dans l'ordre et adapté en fonction des besoins des uns et des autres.
      1. Génération de nombres aléatoires
      2. Simulation de lois uniformes.
  • 8 Octobre 2018 (8:00 - 9:30): Cours (FP)
    • Documents: Génération de lois discrètes (slides)
  • 12 Octobre 2018 (9:45 - 13:00): TD (FP) Générateurs aléatoires.
  • 15 Octobre 2018 (8:00 - 9:30): Cours (FP)
    • Documents: Génération de lois continues (slides)
  • 11 Octobre 2018 (9:45 - 13:00): TD (FP) Génération de lois continues (inverse de la CDF, rejet)
  • 23 Octobre 2018 (10:15 - 12:15): Cours (FP+AL) Quick plus cours de R moderne (https://dplyr.tidyverse.org/ et https://ggplot2.tidyverse.org/)
  • 6 Novembre 2018 (8:00 - 9:30): Cours (FP) correction du Quick
  • 9 novembre 2018 (9:45 - 13:00): TD (AL) Rappels d'intégration, de manipulation de séries, de probas.
  • 13 Novembre 2018 (8:00 - 9:30): Cours (FP) pas de cours (journée polytech pro)
  • 16 Novembre 2018 (9:45 - 13:00): TD (AL)
    • Documents: La loi normale, stabilité par opération linéaire
    • Rappel sur la notion de convolution et son lien avec les probabilités.
    • Méthode du rejet sous la densité pour une loi non bornée, application à la loi normale (voir la feuille Inverse de la CDF et rejet)
  • 19 Novembre 2018 (8:00 - 9:30): Cours (AL) En quoi la moyenne empirique est-elle un estimateur de l'espérence: loi des grands nombres (Chebyshev) et théorème central limite, notion d'intervale de confiance.
  • 23 Novembre 2018 (9:45 - 13:00): TD (AL) TD intervalles de confiance
  • 27 Novembre 2018 (10:15 - 11:45): Cours (AL)
    1. Questions intervalles de confiance?
    2. On vous donne les mesures suivantes:

           set.seed(11)
           A = 10+rnorm(20,mean=1,sd=1)
           B = 10+rnorm(20,mean=1.7,sd=1.5)
           print("A")
           print(A)
           print("B")
           print(B)
      
      [1] "A"
       [1] 10.408969 11.026594  9.483447  9.637347 12.178489 10.065849 12.323606
       [8] 11.624918 10.954277  9.995879 10.171567 10.651648  9.461707 10.744435
      [15]  9.850055 11.012327 10.777030 11.887772 10.407845 10.344282
      [1] "B"
       [1] 10.676224 11.676213 11.036093 12.228836 11.809756 11.710738 11.418600
       [8] 10.551449 11.368415 10.224617 10.043574 10.292775 12.717936  9.333753
      [15] 10.395092 12.427016 11.420921 14.018332 10.782930 11.178365
      
      
           library(ggplot2)
           ggplot(data.frame(x=c(rep(x="A",times=length(A)), rep(x="B",times=length(B))),
                             y=c(A,B))) + geom_jitter(aes(x=x,y=y),width=.1)
      

      AB.png

      Voici la moyenne et l'écart type de A, la moyenne et l'écart type de B.

           print("A: mean, sd, sd/sqrt(len)")
           print(c(mean(A), sd(A), sd(A)/sqrt(length(A))))
           print("B: mean, sd, sd/sqrt(len)")
           print(c(mean(B), sd(B), sd(B)/sqrt(length(B))))
      
      [1] "A: mean, sd, sd/sqrt(len)"
      [1] 10.6504021  0.8478142  0.1895770
      [1] "B: mean, sd, sd/sqrt(len)"
      [1] 11.2655817  1.0723391  0.2397823
      
      
      • Peut-on conclure que \(E[A] > 10\) à 95% de confiance ?
      • Peut-on conclure que \(E[B] > 10.6\) à 95% de confiance ?
      • Peut-on conclure que \(E[A] < E[B]\) avec 95% ?
      • Quelle est la probabilité que \(E[A]\) < \(S_20^A/20+\sigma_A/sqrt(20)\) ?
      • Quelle est la probabilité que \(E[B]\) > \(S_20^B/20-\sigma_B/sqrt(20)\) ?
      • Déduire des deux tests précédents une borne inférieure sur la probabilité que \(E[A] < E[B]\).
      • Où est la principale erreur dans les raisonnements précédents ?
    3. Correction du dernier exo du 2ème Quick de l'an dernier (β π)

           generateur=function(N){
               ifelse(runif(N,0,1)**2+runif(N,0,1)**2<1,4,0)
           }
      
           ## Autrement dit: 
           ##   X=random()
           ##   Y=random()
           ##   if Xˆ2 + Yˆ2 <= 1 then Z=1 else Z=0
           ##   return 4*Z
      
      • Donner la loi de la variable aléatoire simulée par cet algorithme (Indication : faire un dessin).
      • En déduire sa moyenne et sa variance.
      • Proposer un algorithme de simulation qui permettre le calcul approché de π.
      • Quelle est la taille de l’échantillon nécessaire pour avoir une précision de l'ordre de \(10^-2\) avec une confiance de 95% ?
    4. Estimation du maximum.
      • On tire n nombres \(U_1, ...., U_n\) dans \(U(0,a)\) et on cherche à estimer \(a\).
      • On note \(M = \max_i U_i\). A-t-on \(E[M] = a\) ?
      • Calculer pour \(t\) fixé \(P(u_1 \le t et ... et u_N \le t)\)
      • En déduire \(F_M(t)\) puis \(f_M(t)\).
      • En déduire \(E[M]\)
      • Comment débiaiser \(M\) ?
    5. Estimation d'un évènement "rare". On dispose d'une variable aléatoire \(X\) et on cherche à estimer \(p = P[X>t]\) avec \(t\) tel que cette probabilité \(p\) est très faible. On suppose que l'on sait faire des tirages sur \(X\) et qu'on a accès à \(f_X\) (par exemple \(X\) suit une loi normale de variance 1 et centrée en 0 mais il faut imaginer une loi bien plus compliquée).
      • \(Y=1_{(X>t)}\) suit une loi de bernouilli de paramètre \(p\). Mettons qu'on souhaite approchez \(p\) à \(95%\) avec une précision relative \(\delta\) (i.e., on veut une valeur à \(\delta.p\) près). Avec le théorème centrale limite, quel est l'ordre de grandeur du nombre de simulations à effectuer ?
      • On a \(p = E[Y] = \int 1_{[x>t]} f_X(x) dx\). On considère \(Z\) une v.a. suivant une loi exponentielle/normale/… décalée de t. Remarquons que \(E[Y] = \int (1_{[z>t]} f_X(z)/ f_Z(z)) f_Z(z) dz\). En déduire un algorithme pour calculer \(E[Y]\).
      • Expliquer intuitivement pourquoi le second algorithme est bien meilleur que le premier.
  • 30 Novembre 2018 (9:45 - 13:00): TD (AL) TD intervalles de confiance
    • Estimation du maximum (voir ce qui avait été demandé de faire au cours précédente.
    • Au choix:
      • Coupon collector a.k.a. Panini (Q1 et Q6 pour ceux qui veulent s'entrainer à programer; Q2 à Q5 pour ceux qui veulent s'entraîner à de petits calculs de probas)
      • Génération de structures pour bien comprendre la difficulté de l'uniformité et que ça ne va pas de soi.
  • 2 Décembre (9:45 - 11:15): Cours (AL) La loi du χ^2: notion de test et amélioration du calcul d'intervalles de confiance (plus slides 20 à 22 de l'intro aux stats).
  • 30 Novembre 2018 (9:45 - 13:00): TD (AL) Test χ^2
  • 11 Décembre (9:45 - 11:15): Cours (AL) Open bar niveau questions.

Technical references

Installing R and Rstudio

Virtual Machine

Les anneés précédentes, je préparais une VM avec une debian récente, toute bien installée mais ça n'a pas eu l'air d'aider tant que ça les gens donc débrouillez vous, et installez le en natif, ça sera formateur! ;)

Mac OSX

Je crains que ça soit un peu outdated mais a few years ago, a nice RICM4 student, Remi Gattaz, has taken the time to explain how to install a bunch of useful stuff. Here it is. In particular he gave many tips for MacOSX…

Linux

Here is how to proceed on debian-based distributions:

sudo apt-get install r-base r-cran-ggplot2 r-cran-reshape r-cran-knitr r-cran-dplyr

Make sure you have a recent (>= 3.2.0) version or R. For example, here is what I have on my machine:

R --version
R version 3.5.1 (2018-07-02) -- "Feather Spray"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
http://www.gnu.org/licenses/.

If it's not the case, it may be because you're running debian stable or a LTD ubuntu. In such case, you may want to include testing packages… Ask your local linux guru or run a VM (see previous section) if you're affraid to break your OS. For the braves, let's keep going!

Rstudio and knitr are unfortunately not packaged within debian so the easiest is to download the corresponding debian package on the Rstudio webpage and then to install it manually (depending on when you do this, you can obviously change the version number).

cd /tmp/
wget https://download1.rstudio.org/rstudio-xenial-1.1.453-amd64.deb
sudo dpkg -i rstudio-xenial-1.1.453-amd64.deb
sudo apt-get update ; sudo apt-get -f install # to fix possibly missing dependencies

You may have trouble when installing some R packages. If so, try to install these ones:

sudo apt-get install libcurl4-openssl-dev libssl-dev

Bibliographie