RICM4: Probabilité et Simulation
Table of Contents
- Informations Générales
- Programme du cours
- Devoirs
- DM 1 : Panini
- DONE Mesnier,Hamdani,Fotsing:
- DONE EUDES, ROSSI:
- DONE Zominy, Torck:
- DONE Christophe Adam, Zhengmeng Zhang:
- DONE Hugo RODRIGUES, QIAN Xueyong:
- DONE BODARD Christelle:
- DONE Malek MAMMAR, Alexandre LE JEAN:
- DONE Anthony Léonard, Jérémy Hammerer:
- DONE Michel, Klipffel:
- DONE Marie Darrigol, Ophélie Pelloux-Prayer:
- DONE Libralesso, Viallet:
- DONE Guo Kai, Yaolong Fei:
- DONE Codazzi, Aissanou, Blondet:
- DONE Saussac, Toussaint:
- DONE DAMOTTE, BADAMO-BARTHELEMY:
- DONE Mulac, Soldano :
- DM 1 : Panini
- À propos de l'utilisation de R
- Bibliographie
Sitemap
Informations Générales
Jean-Marc Vincent est chargé des cours et Arnaud Legrand s'occupe des TDs.
Le planning avec les salles de cours est disponible là pour les cours à Polytech et là pour les cours à l'UJF.
La page de l'an dernier est ici.
Programme du cours
16 Septembre 2014 (10:15 - 11:45): Cours (JMV)
Documents:
Présentation des objectifs, Analyse de résultats expérimentaux.References:
Virtual Laboratories in Probability and Statistics, SmelÀ faire pour la prochaine fois
: Simulez dans le langage de votre choix la situation suivante.Monsieur et madame Martin ont 2 enfants dont une fille. Quelle est la probabilité que l'autre soit un garçon ?
22 Septembre 2014 (10:15 - 11:45): TD (AL)
Prise en main de R. Pour cela, voir la section "Installation de R et Rstudio" un peu plus bas ou bien les conseils d'installation donnés ici (probablement un peu plus à jour).- Documents: La description de ce qu'on a fait en TD sur rpubs. Voici également le Rmd correspondant au cas où.
References:
- http://www.rpubs.com/
- http://www.rstudio.com/
- http://www.r-bloggers.com/
- http://swirlstats.com/students.html
- R for Beginners (French version).
- A good online lecture providing an introduction to R and to data analysis: https://www.coursera.org/course/compdata
À faire pour la prochaine fois
:- Finir la séance de TD. Un "corrigé" sera bientôt disponible sur rpubs mais ce qui compte c'est que vous preniez R et Rstudio en main et que vous vous rendiez compte de ce que c'est que gérer du hasard.
Pour bien prendre R en main, vous allez apprendre less bases par vous même avec l'"environnement d'apprentissage interactif" swirl. Pour la prochaine fois, il faut que vous ayiez au moins fait les étapes 1 à 3 (Basic Building Blocks, Sequences of Numbers, Vectors) et si possible 4 à 6 du cours "R programming". Pour celà, il se peut que vous ayiez à installer ce cours:
install.packages("swirl") library(swirl) install_from_swirl("R Programming") # cette étape n'est pas nécessaire. Elle sera faite automatiquement par swirl au premier lancement. swirl()
13 Septembre 2014 (8:00 - 9:30): Cours (JMV)
26 Septembre 2014 (11:30 - 13:00): TD (AL)
TD1: générateurs pseudo-aléatoires.À faire pour la prochaine fois
: Finir la séance de TD et tester un peu les différents générateurs proposés. N'hésitez pas à faire les calculs à la main pour les petites valeurs. C'est comme ça que l'on comprend comment ça marche et qu'on développe des intuitions. fois Le code nécessaire est disponible sur "Rpubs". Voici également le Rmd correspondant au cas où.
30 Septembre 2014 (10:15 - 11:45): Cours (JMV)
7 Octobre 2014 (10:15 - 11:45): TD (AL)
:- Programme de la séance:
- Fin du td précédent (décalage de registre). Cherchez le problème par vous-même et nous le corrigerons ensemble prochainement.
- Une politique de régulation des naissances préconise que chaque
couple en âge de procréer n'ait qu'un seul enfant. Toutefois, en
raison d'une préférence significative de la population pour les
enfants de sexe masculin, les autorités accordent généralement aux
parents d'une fille un second et dernier essai. L'exercice vise à
déterminer l'influence de cette politique sur le taux de
masculinité de la population pour cette nouvelle génération, en
supposant qu'une naissance ait une probabilité 1/2 de donner un
garçon.
- Modéliser ce problème.
- Programmer en R la génération de la descendance de \(n\) couples (\(n ∈ \{100, 1000\}\) par exemple). On utilisera des data-frames pour retourner les résultats.
- Calculer le taux de masculinité observé et conclure. Regarder également le taux de renouvellement.
On peut généraliser le problème de plein de façons:
- en laissant les couples avoir plusieurs chances d'essayer d'enfanter un garçon, sans limite particulière;
- en prenant en compte le fait que certains couples ne veulent pas d'enfants;
- en laissant les couples avec jusqu'à \(m\) enfants et avec probabilités d'avoir des filles et des garçons non identiques;
- …
Pour chacun de ces exemples, essayer de faire le modèle (le graphe avec les probabilités) correspondant.
- Voici la correction sur rpubs et le Rmd correspondant.
À faire pour la prochaine fois
: Finir la séance de TD précédente et en particulier faites le problème. Pour la prochaine fois, revoyez bien tout ce qu'on a vu aujourd'hui et faites les leçons sur les data.frame dans swirl histoire de bien comprendre comment ça marche.
- Programme de la séance:
21 Octobre 2014 (10:15 - 11:45): TD (AL)
: Génération d'abres.À faire pour la prochaine fois
: Établir la relation de récurrence \(C_{n+1}=\sum_{q=0}^n C_qC_{n-q}\) où \(C_n\) est le nombre d'arbres à \(n\) sommets. Il se trouve que ces nombres sont plus connus sous le nom de nombres de Catalan… Déduire de cette relation de récurrence une façon simple de générer ces nombres et une façon simple d'avoir une algorithme de génération aléatoire d'arbres uniforme. Implémenter cet algorithme enR
…
7 Novembre 2014 (11:30 - 13:00): TD (AL)
: Illustration de la loi des grands nombres:14 Novembre 2014 (11:30 - 13:00): TD (AL)
: Apprivoiser la loi normale:- Rappel de ce que c'est qu'une variable aléatoire continue, fonction de répartition, une densité de probabilité (http://fr.wikipedia.org/wiki/Fonction_de_répartition), l'inverse de la fonction de répartition…
- http://rpubs.com/alegrand/10381.
- Voici aussi un lien qui explique comment superposer une densité sur un histogramme.
28 Novembre 2014 (11:30 - 13:00): TD (AL)
: Correction du DM et illustration de la génération par inversion de la fonction de répartition et par méthode du rejet (génération de lois triangulaires).5 Décembre 2014 (11:30 - 13:00): TD (AL)
: Encore la méthode du rejet, histoire que ça soit bien clair. Pas clair que mes explications aient été très convaincantes donc voici une réexplication, j'espère plus claire.
Devoirs
DM 1 : Panini
Voici le sujet. Votre travail est à rendre sur Rpubs pour le 6 novembre à minuit. Voici ma "correction". Voici maintenant les retours des étudiants avec un mini commentaire.
DONE Mesnier,Hamdani,Fotsing: http://rpubs.com/mesnierv/39121
Pas de set.seed. C'est mal. Vous devriez mettre un set.seed
au
début de façon à ce que quelqu'un d'autre puisse reproduire vos
résultats.
- Q1
- Quelle drôle d'idée te tester la terminaison sur
mean(album)
.sum
à la rigueur, j'aurais compris maismean
, c'est un peu "tordu". D'autre part, quel besoin de recalculer la somme à chaque fois ? D'autre part,sample(1:M,1)
est également une drôle de façon de faire ça. C'est p-e plus clair mais a priori plus coûteux qu'un simpleceiling(runif(1)*M)
car vous devez générer1:M
. - Q2
- Quelques remarques:
total1
jusqu'àtotal12
?!? Sans rire ? Et bien, heureusement que je ne vous avais pas demandé de faire ça pour 100 échantillons…- Mettez un titre à vos graphes, c'est plus lisible…
- L'initialisation de
nbVignettes
à 0 ne sert à rien puisque vous l'utilisez comme un tableau après. Enfin, vous utilisez un tableau de taille 200 pour stoquer 12 valeurs. J'ai déjà vu plus des codes plus sales mais qu'à trois aucun de vous n'ai eu d'idée pour faire ça plus proprement, ça me laisse rêveur… - Pas un mot sur la variance de vos échantillons. Calculer une moyenne comme ça sans même regarder vos valeurs, c'est mal.
- Ah, par contre, que vous arriviez comme ça à "remarquer" que la courbe est de forme \(M.\log(M)\), c'est "impressionnant". :) C'est limite magique en fait une telle intuition… ;) Sérieusement, on voit quelque chose de relativement linéaire mais quand on essaye d'y coller une droite on s'apperçoit que ça n'est pas tout à fait linéaire.
- Q3 et Q4
- Les calculs sont corrects. Assez illisibles (essayez de mettre des dollars autours de vos formules pour passer en mode maths) mais bon…
- Q5
- Euh… en quoi les courbes que vous tracez permettent de vérifier une quelconque cohérence avec vos calculs ? Il fallait les comparer avec ce que vous aviez précédemment obtenu par simulation.
- Q6
- Bonne idée d'utiliser la formule plutôt que de faire une simulation, à ceci près que ça ne vous permet pas d'avoir l'espérance du nombre de paquets à acheter. Cette espérance n'a aucune raison d'être un nombre entier. Là vous calculez l'espérance du nombre de cartes dont vous avez besoin, ce que vous transformez en nombre de paquet. Ce n'est pas la même chose.
- Q7
- Aouch, quelle façon bizarre de calculer votre vecteur de
probabilités. Par contre, votre utilisation de sample est
plutôt une bonne idée là. Moins efficace mais plus lisible
que ma version.
- Cette fois, vous avez regardé vos échantillons et fait une remarque sur la variance. J'aurai aimé voir ce genre de choses dès le début.
- Par contre, vous ne répondez pas à la question puisque vous ne donnez rien sur la dépendance de l'espérence T en fonction de M.
- Q8
- Pas de réponse
DONE EUDES, ROSSI: http://rpubs.com/Eudesr/39099
- Q1
round
ne fait pas ce que vous croyez… Vous auriez du utiliserfloor
ouceiling
.- Mais pourquoi conserver tout l'historique des vignettes obtenues ? Ça vous oblige à le reparcourir à chaque fois. Ça marche mais c'est vraiment étrange (et inefficace) comme façon de programmer.
- Q2
- J'avais demandé entre 100 et 1000 échantillons pour chaque valeur de M choisies…
- Vous regardez l'histogramme de 10 réalisations de T(M) avec M tiré uniformément dans [10,200]. Ça ne veut pas dire grand chose… Se fixer un M donné et regarder ensuite la distribution de T(M) (pour M fixé!), ça aurait déjà plus de sens….
- De même pourquoi regardez vous les couples (T[M[i]],T[M[i-1]]) ? On fait ça quand on veut vérifier si les tirages sont bien indépendants les uns des autres. Pourquoi pas pour vérifier que vous n'avez pas fait une énorme annerie dans votre générateur mais bon, là, ça ne me parait pas super utile. Dans tous les cas, que vous le faisiez pour vous, pourquoi pas (encore faut-il une interprétation propre de ce que vous observez) mais ça n'a rien à faire dans le rapport final.
- Q3
- Et surtout, les X_n sont indépendants les uns des autres…
- Q4
- Vous écrivez " P(Yi) = (M - ( i-1 )) / M", ça ne veut rien dire. C'est \(P(Y_i=1)\), la probabilité qu'une variable vaille une certaine valeur.
- Non, l'espérence de Y_i n'est pas "Somme ( Yi * P(Yi=k)) ( pour k de 1 à 300)". Il n'y a aucune raison de s'arrêter à 300 et vous ne pouvez pas multiplier Y_i par une probabilité. Y_i est une variable aléatoire, pas une "vraie valeur". C'est \(E(Y_i)=\sum_{k=1}^{\infty} k*P(Y_i=k)\)
- Du coup, vous ne concluez pas. Je demandais de calculer E(T) et Var(T)
- Q5
- Pas de réponse…
- Q6
- Le calcul est presque correct (il manque un ceiling) mais…
- 25 échantillons pour calculer votre estimation de l'espérence ? C'est bien trop peu.
- Q7
- Quel calcul bizarre. En quoi multiplier tous les nombres par 1E6 va-t-il aider à quoi que ce soit ?
- Vous ne répondez pas à la question. Vous me faites une simulation alors que ce qui m'intéresse, c'est une estimation de E(T(M)) et sa dépendance en M…
- Et avec des probas en \(1/i^2\), par chance (ou par erreur), vous arrivez à un nombre de cartes plus petite, pour une simulation et vous en déduisez que c'est tout le temps comme ça? Et ça vous parait logique en plus. Désolé, mais c'est n'importe quoi là.
- Q8
- Je pense que vos normalisations bizarres ont fait n'importe quoi. Cette simulation n'a aucune chance de terminer.
DONE Zominy, Torck: http://rpubs.com/LaurentZ/39138
- Q1
- pour initialiser un tableau, faites plutôt
tab = rep.int(0,M)
. - Q2
- Pourquoi ce
round(moy/nb_ech)
? Il n'y aucune raison pour que E(T(M)) soit entier… - Pourquoi calculer votre estimateur pour toutes les valeurs de M ? Ça a du vous prendre un temps fou.
- Mettez un titre à vos graphes, c'est plus lisible…
- "On peut voir que le resultat semble évoluer de façon linéaire." Ça OK.
- "Ainsi on peut en conclure que la loi est linéaire et
uniforme." Argh!!! Non, certainement pas. J'espère après mes
explications en TD que vous avez compris pourquoi ça n'a aucun
sens. Ce qu'il aurait fallu faire, c'est regarder
l'histogramme de 100 appels à
panini
pour un M fixé.
- Pourquoi ce
- Q3
- Et vous supposez que les X_i sont indépendants!
- Q4
- "On pose N ayant valeur dans R+*" ??? Dans tout ce qui suit il faut faire tendre N vers l'infini…
- "Nous voyons donc bien ici que Yi suis une loi géometrique car E(X)=1/p". Non, certainement pas "car". "Donc" à la rigueur et ça vous économise alors tous les calculs de dérivations de séries entières (même s'il est très bien que vous sachiez les refaire).
- Et alors, mon E(T) et mon Var(T), je n'ai pas droit à un équivalent quand M est grand ?
- Q5
- J'aurais aimé voir les deux courbes (celle de la formule et celle des simulations) au moins en vis à vis. Effectivement, celle des simulations est moins lisse. Vous auriez également pu remarquer qu'elle était de moins en moins "lisse" au fur et à mesure que M grandissait…
- Q6
- Aucune raison d'arrondi, et comme je vous l'ai expliqué en TD, l'espérence du nombre de paquets n'est pas le nombre de paquets de l'espérence du nombre de cartes.
- Q7
- En codant de la sorte, le coût d'un appel à NeoProba1 est O(M) au lieu de O(1) car vous recalculez la normalisation à chaque fois…
- Le
replace=T
ne sert pas à grand chose puisque vous ne tirez qu'un vignette et que l'ensemble de vignette est redonné à chaque appel mais bon… - Ce que je demandais, c'était "la dépendance de T par rapport à M"… Vous ne répondez pas à la question.
- Q8
- C'est bon.
DONE Christophe Adam, Zhengmeng Zhang: http://rpubs.com/Christophe/DM1PS
- Q1
- Vous devriez mettre un
set.seed
au début de façon à ce que quelqu'un d'autre puisse reproduire vos résultats. Rien à dire sur le reste. - Q2
- Bonne idée de faciliter la lecture de votre graphique en
annotant les points. Tirer M uniformément dans
10:200
n'est pas forcément très utile pour des simulations de ce type. Vous auriez pu les prendre régulièrement espacé. L'analyse est justifié. Idéalement, vous auriez du regarder pour un M fixé les échantillons correspondants aux appels àpanini
mais ça me va. - Q3
- Euh… oui, une probabilité c'est en général inférieur
à 1. Ici, l'énoncé suggère que les \(X_i\) sont identiquement
distribués selon une loi uniforme sur
1:M
et indépendants. - Q4
- OK, pour les calculs de \(E(Y_i)\) et de \(Var(Y_i)\) mais ce que je voulais, c'était \(E(T)\) et \(Var(T)\).
- Q5
- Hein ?!? Où voyez vous une quelconque cohérence graphique avec ce que vous avez fait avant?
- Q6
- OK, le calcul de l'estimation est correcte. J'aurais aimé voir quelques mots sur la variabilité de la chose qui justifie que 1000 échantillons suffise.
- Q7
- pas de réponse
- Q8
- pas de réponse
DONE Hugo RODRIGUES, QIAN Xueyong: http://rpubs.com/xuey90/39142
- Q1
- Nickel. Seul conseil, mettez des valeurs par défaut aux arguments de vos fonctions
- Q2
- Evitez de faire
table[i*10]
car ça crée un tableau où seulement un élément sur 10 est utilisé. Utilisez deux vecteurs ou mieux, une data frame. L'analyse sur la linéarité est justifié. Idéalement, vous auriez avant dû regarder pour un M fixé la distribution des échantillons correspondants aux appels àpanini
afin de savoir si échantillonner à 1000 suffisait ou pas ça me va. - Q3
- Et elles sont indépendantes!
- Q4
- OK pour le calcul de \(E(Y_i)\).
- Par contre, les \(Y_i\) sont bien indépendants les uns des autres. Sinon, vous ne pourriez pas sortir la somme de la variance comme vous le faites…
- Et mon équivalent de \(E(T)\) et de \(Var(T)\) ?
- Q5
- je ne vois pas le rapport avec la question. Enfin, si, je
vois mais ce n'est pas ce que je vous demandais. Ce qui
m'intéressait, c'était la comparaison entre votre calcul
de E(T) et votre estimation. D'autre part
++num
ne fait absolument pas ce que vous croyez… - Q6
- Argh, seulement un échantillon pour estimer votre espérance ?!?
- Q7
- Mais d'où sort ce
(1/i[1:max(which(i<=N))
? Et pourquoi faire deswhile
quand vous voulez direfor
? - Vous ne calculez que la moyenne de 10 échantillons ?
- OK, il faut acheter plus de cartes qu'avant mais c'est un peu léger. Ça manque d'analyse et dommage que vous ne disiez rien sur la variabilité…
- Mais d'où sort ce
- Q8
- OK. J'aurais aimé une estimation de la probabilité de tirer la dernière carte pour expliquer que la simulation n'avait aucune chance de terminer…
DONE BODARD Christelle: ./dm1/DM1_BODARD_Christelle.html
- Q1
- Vous devriez mettre un
set.seed
au début de façon à ce que quelqu'un d'autre puisse reproduire vos résultats. - J'ai appris l'existence de la fonction
setequal
dont l'utilisation dans ce contexte est non seulement overkill mais un peu dangereuse. Je ne suis pas sûr que vous aviez conscience quesetequal(c(1,2),c(2,1)
valaitTRUE
… - Attention, vous ne vouliez pas faire
floor((M+1)*runif(1))
mais1+floor(M*runif(1))
… De temps en temps vous obteniez un0
pourvign
et vous tapiez en dehors du tableau. Votre calcul demT
est donc faux… :(
- Vous devriez mettre un
- Q2
- Votre
xM
n'est pas forcéement le même dans la fonctionmoyAchat
et à l'extérieur. C'est dangereux… c(1:N)
, c'est la même chose que1:N
en moins lisible.- Erm, ça ne vous a pas dérangé que
xM
comporte des nombres non entiers ? - Mettez un vrai titre à vos graphes, c'est plus lisible…
- C'est léger comme analyse mais bon.
- Votre
- Q3
- Indépendamment de l'honnêteté du marchand, ce qui m'intéresse, c'est que les \(X_n\) sont indépendants les uns des autres.
- Q4
- Rien à redire si ce n'est que pour le calcul de la variance, vous n'avez pas mené le calcul jusqu'au bout et que quand vous avez sorti la somme de la variance, vous avez utilisé l'indépendance des \(Y_i\) sans le mentionner…
- Q5
- Bonne idée des mettre les deux courbes en vis à vis.
- Q6
- Et non…
- Q7
- "On observe que la courbe obtenue est moins linéaire". Argh! C'est "juste" que 100 échantillons ne suffisent plus car la variance est bien plus importante… J'aurais aimé que vous réalisiez ce qu'il se passait.
- C'est curieux, vos deux courbes sont identiques… Vous avez du vous planter quelque part. En fait, c'est certain, car qu'il faille acheter de l'ordre de 300 vignettes pour compléter un album de 300 places, c'est un peu faible… Ça aurait du vous mettre la puce à l'oreille. En réexécutant votre code, il arrive que "nbAchat2(300)" renvoie "163"…
- Q8
- pas de réponse
DONE Malek MAMMAR, Alexandre LE JEAN: ./dm1/DM1_MAMMAR_LEJEAN.html
- Q1
- Drôle de façon d'initialiser un tableau à
0
mais ok. - Q2
- Je ne suis pas sûr qu'utiliser
barplot
soit une bonne idée. La taille est un nombre, pas un facteur. Ici, ce n'est pas trop grave car les valeurs detaille
sont équi-réparties. - Vous avez de la chance que 100 échantillons suffisent ici. J'aurais aimé voir quelque chose sur la variance de vos échantillons.
- Je ne suis pas sûr qu'utiliser
- Q3
- Nickel.
- Q4
- Nickel jusqu'au moment où vous calculez un équivalent pour \(E(T)\) et \(Var(T)\). La somme des \(1/k\) est équivalente à \(log(M)\) et la somme des \(1/k^2\) tend vers une limite finie égale à \(\pi^2/6\). Il vous fallait remplacer votre 1/p par sa valeur en fonction de \(i\) et calculer un équivalent.
- Q5
- Euh… vous n'avez pas compris ce que c'est qu'un \(o\). Venez me voir.
- Q6
- Bonne idée d'essayer de réutiliser les calculs précédents mais l'espérance du nombre de paquets à acheter ne peut se déduire directement de l'espérance du nombre de cartes.
- Q7
- Pourquoi seulement 25 échantillons ? Il n'est pas clair que ça augmente de façon "exponentielle".
- Q8
- C'est très mal formulé mais l'intuition est bonne. La probabilité \(p_i\) tendait également vers 0 avant…
DONE Anthony Léonard, Jérémy Hammerer: http://rpubs.com/leonaran/39145
- Q1
- la fonction
tirer_vignette
n'utilise pas son paramètrex
. floor(runif(1)*(m+1))
vous donne un nombre entre 0 et m alors que vous vouliez un nombre entre 1 et m.- la condition d'arrêt
0 %in% album
est correcte mais potentiellement un peu coûteuse…
- la fonction
- Q2
- très bien mais de faire
tab_moy[m]
car ça crée un tableau où seulement un élément sur 20 est utilisé… Utilisez deux vecteurs ou mieux, une data frame. - j'aurais aimé en savoir plus sur la variabilité des échantillons car c'est ce qui permet de justifier que 300 échantillons suffisent à avoir une "bonne" approximation
- Vous voyez que ce n'est pas linéaire. OK.
- très bien mais de faire
- Q3
- OK. Indépendantes et uniformes dans
1:M
. - Q4
- Nickel
- Q5
- J'aurais voulu voir cette courbe en vis à vis (ou bien superposée) avec la précédente pour qu'on puisse mieux les comparer.
- Q6
- Bonne idée d'essayer de réutiliser les calculs précédents mais l'espérance du nombre de paquets à acheter ne peut se déduire directement de l'espérance du nombre de cartes.
- Q7
- OK pour réduire le nombre de valeurs de M et le nombre d'échantillons mais il faut alors justifier que votre estimation reste raisonnable… Il aurait été bien de comparer avec les valeurs précédentes. En fait, avec une représentation si basique, vous passez à coté d'informations importantes.
- Q8
- On peut surtout supposer que ces simulations ne termineront jamais…
DONE Michel, Klipffel: http://rpubs.com/teiroy/39161
- Q1
- votre
while(i<=n &(P>((i+1)/n)))
est pour le mois étrange… - Q2
- À propos de la fonction
nb_carte_moy
. Si vous avez une fonction qui fait la même chose qu'une autre sans un appel, rajoutez donc un argument avec une valeur par défaut (genreplot=F
) à la première pour décider s'il faut faire l'appel ou pas… - Vous étudiez de façon systématique l'ensemble de vos
échantillons. C'est bien même si fait de façon un peu verbeuse
là (en particulier le lag plot avec les
(x[i-1],x[i])
n'est vraiment pas nécessaire là). Par contre, ça vous permet de voir que 100 échantillons, c'est insuffisant pour avoir une bonne approximation. - Par contre, vous avez l'air de vous attendre à ce que \(E(T)\) soit entier alors qu'il n'y a aucune raison pour que ça le soit…
- "On déduit de ces résultats que pour M=200 le nombre de
vignettes à acheter est 1150". Cette conclusion ne correspond
pas aux valeurs que vous venez de calculer (1173 et
1166). C'est certainement au fait que vous n'avez pas fait un
set.seed
au tout début de votre code… - OK, pour ce qui est de la linéarité. Dommage que vous ne l'ayez pas illustré avec un graphique.
- À propos de la fonction
- Q3
- OK
- Q4
- Pas facile à lire vos formules (genre
P(Yi=k) Ek-1*Rk
qui doit se lire \(P(Yi=k)=E^{k-1}*R^{k}\). Passez en mode maths (entre dollars) pour que ça soit plus lisible. Mais les calculs sont corrects. - Q5
- Erm… légèrement courbée ??? Vous avez de bons yeux. Et je ne vois pas en quoi vous comparez à vos estimations précédentes.
- Q6
- Bonne idée d'essayer de réutiliser les calculs précédents mais l'espérance du nombre de paquets à acheter ne peut se déduire directement de l'espérance du nombre de cartes.
- Q7
- La réponse s'arrête en plein milieu. Votre condition
d'arrêt
(P>(i+1)/(alpha*(i+1)
n'est pas bonne. Il faut que vous sommiez les1/(alpha*i)
… Dommage.
DONE Marie Darrigol, Ophélie Pelloux-Prayer: http://rpubs.com/MarieOphelie/39200
- Q1
- OK.
- Ça fait beaucoup de copies de tableau mais bon…
- Pensez à initialiser vos tableaux avec un
rep.int
plutôt qu'une boucle. - Pourquoi
T
etv
sont ils des tableaux ?
- Q2
- Bon réflexe de regarder vos échantillons pour une petite valeur de M.
n=album_echantillion(300,100)
. Drôle de nom pour un tableau…- Le commentaire "1839.02 pour 300 et 100 lancers" ne correspond
pas au résultat précédent car vous n'avez pas mis un
set.seed
au tout début de votre code… - Euh… Votre façon de regarder les différentes moyennes (à 100, 250, …, 1000 échantillons) ne veut vraiment rien dire. Venez me voir si vous ne voyez pas pourquoi.
- Vous ne répondez pas à la question car ce que je voulais c'est \(E(T)\) en fonction de \(M\).
- Q3
- Oui, et les tirages sont indépendants.
- Q4
- Passez en mode maths (dollars)
- Ouh là, c'est bien compliqué et hors sujet ce que vous me racontez avec vos 5 vignettes.
- Quand vous écrivez
E(Yi)=1/p
, on est d'accord mais quand vous écrivez1/(M-(i-1)/(M^k)
, il ne devrait plus y avoir de k… Vous vous êtes perdues dans vos calculs. - Je voulais un équivalent de E(T) et de Var(T).
- Q5
- Aïe, pareil, vous êtes à coté de la question. Je comprends ce que vous faites en lisant votre code mais ce qui m'intéresse, c'est la dépendance en \(M\)…
- Q6
- Argh. Vous avez conscience que ce
T=1839.02
est une estimation et qu'en refaisant la simulation plus tard, vous aviez obtenu 1921.66… Il faut - Q7
- Wow, j'ai relu trois fois votre fonction d'aliasing. C'est clair que ça permet une génération en O(1) sans re-parcours de tableau mais c'est vraiment "overkill" là.
- Encore une fois, les valeurs dans vos commentaires ("8539.17
pour M = 300 et E = 100") ne correspondent pas aux résultats
des calculs (
3308.34
). J'ai d'abord cru que c'était un problème de non déterminisme mais c'était trop important. J'ai fini par comprendre que c'est parceque le calcul portait surM=150
. Un peu de texte ne ferait pas de mal… - Ah, là vous étudiez enfin la dépendance en T. Je vois hélas beaucoup de calcul mais très très d'analyse… Si vous aviez fait une représentation graphique de l'évolution de E(T) en fonction de M, vous y auriez vu plus clair.
- Q8
- "T va augmenter beaucoup plus rapidement" \(\to\) OK
DONE Libralesso, Viallet: http://rpubs.com/librallu/dm1-proba
- Q1
- Vérifier que
runif
est bien uniforme, c'est de la parano… :) Sauf si vous vouliez vérifier queceiling
fonctionnait bien comme vous pensiez. - Q2
- Très bon réflexe de regarder T(M)/M. Et du coup, très bien vu pour le log.
- Q3
- Nickel
- Q4
- Nickel. Pour calculer \(Var(T)\), remplacer \(k/(M-k)^2\) par \((k-M+M)/(M-k)^2\) pour faire apparaître deux sommes, l'une équivalente à un log et l'autre à une valeur finie. On retrouve alors une variance en \(M^2\pi^2/6\) qui correspond très bien à votre graphique.
- Q5
- Nickel.
- Q6
- Pas tout à fait car l'espérance ne commute pas avec ceiling.
- Q6 bis
- Mmmh, non, \(T\) ne suit pas une loi normale car \(T\) ne peux pas être symétrique (on a forcément \(T\geq M\)). Vous l'avez vu puisque vous y faites attention mais ça veut dire que la forme est différente et que vous ne pouvez pas vraiment calculer le risque de cette façon. Il faudrait regarder la distribution de plus près et l'approximer ou la majorer par une distribution dont vous connaissez les quantiles, comme vous avez fait, mais pas avec la loi normale.
- Q7
- OK.
- Q8
- OK.
DONE Guo Kai, Yaolong Fei: http://rpubs.com/GUOKAI/38582
- Q1
- À quoi peut donc bien servir le paramètre
T
de la fonctionPANINI
?? - Q2
- OK. Bonne idée de faire une régression linéaire.
- Pas la peine de refaire un
set.seed
à chaque fois. - Dans
TArray[j]=ceiling(somme/times)
, il ne faut pas deceiling
. - Je ne pense pas qu'échantillonner M ait été une bonne idée. Il
aurait mieux valu utiliser un
seq
. - Pourquoi vous intéresser à
100*test/TArray
plutôt qu'àTarray/test
? Ce n'est pas du tout lié à \(P(X_i=i)\). - J'aurais aimé un commentaire qui explique pourquoi vous faites 50 échantillons puis 100.
- Pas la peine de refaire un
- Q3
- Les \(X_n\) sont indépendantes et de loi uniforme sur
1:M
- Q4
- J'aurai voulu un équivalent de E(T). Et pareil pour Var(T).
- Q5
- Ce n'est pas ce que je vous demandais. C'est beaucoup trop compliqué. Regardez la correction.
- Q6
- Ce n'est pas ce que je vous demandais. C'est beaucoup trop compliqué. Regardez la correction.
- Q7
- Non achevé donc difficile d'évaluer. Ça m'a eu l'air correct même si plutôt compliqué.
DONE Codazzi, Aissanou, Blondet: dm1/DM_Codazzi_Aissanou_Blondet.html
- Q1
- Curieuse utilisation de
setequal
mais OK. - Q2
- Nickel.
- Q3
- Nickel.
- Q4
- Nickel. Majoration un peu brutale pour la variance mais sans grande conséquence.
- Q5
- OK. Pas clair que tout ces graphes montrent vraiment en quoi c'est cohérent avec les simulations précédentes. Mettre le résultat de vos simulations en vis à vis de vos calcul aurait été plus explicite.
- Q6
- Pas tout à fait. L'espérance ne commute pas avec ceiling.
- Q7
- OK. J'aurais aimé un graphique comme en Q3 mais si c'était trop lent, je comprends, même si une heure, ça me surprend. La seule différence visible entre mon code et le votre, c'est le setequal et le sample.
- Q8
- OK. Et votre simulation n'a vraiment aucune chance de terminer…
DONE Saussac, Toussaint: http://rpubs.com/ToussaintSaussac
- Q1
- Curieuse utilisation du
min
mais OK. - Q2
- OK. Sauf que je ne suis pas sûr de savoir ce que veut dire "loi linéaire uniforme"….
- Q3
- OK.
- Q4
- Bizarrement rédigé (super verbeux au début) mais OK.
- Je ne sais pas ce que c'est que ce "délire" avec
P_Yi_Eqls_K
. - "Quand M devient très grand nous pouvons utilisé une linéarité de l’espérence". Hein ?!?
- Pourquoi il y a un 300 et un M qui trainent dans la même formule ? C'est bizarre ce genre d'erreur. Ça me fait craindre que ça soit des choses que vous ne maîtrisez en fait pas bien. Venez me voir si vous avez des doutes.
- Q5
- Ce qui m'importait, c'est surtout la vérification de la cohérence avec les simulations. J'aurai aimé voir ces courbes en vis à vis avec les résultats des simulations.
- Q6
- Pas tout à fait car
ceiling
et espérance ne commutent pas. - Q7
- OK. J'aurais aimé voir la dépendance en T…
- Q8
- OK.
DONE DAMOTTE, BADAMO-BARTHELEMY: http://rpubs.com/Patator/39089
- Q1
- OK mais quelle idée de reparcourir l'album à chaque fois.
- Q2
- OK. Pourquoi 100 échantillons ? Est-ce suffisant ?
- Q3
- OK.
- Q4
- OK.
- Q5
- OK. Seule la comparaison à E(T) m'intéraissait vraiment mais c'est bien d'avoir tout vérifié.
- Q6
- Pas tout à fait car l'espérance ne commute pas à avec la partie entière mais il y a effectivement peu de différences. La solution proposée pour ne pas ruiner ses parents parait raisonnable…
- Q7
- OK.
- Q8
- OK.
DONE Mulac, Soldano : https://rpubs.com/Theprobe/39166
Bravo, vous avez réussi à m'envoyer le lien vers le DM d'un autre binôme (https://rpubs.com/leonaran/39145) au lieu du votre… C'est fort. D'habitude, les gens essaient de le dissimuler. :D
- Q1
- Comme c'est n'importe quoi dans Q2, j'ai creusé 5 minutes
car l'erreur ne me sautait pas aux yeux. Mais en
réexécutant votre code, j'ai trouvé
l'erreur.
tab[sample.int(300,1,replace=TRUE)]<-1
. Vous vouliez mettreM
et pas300
… Du coup, tout le reste part complètement en vrille. C'est dommage, j'aimais bien letab[sample.int()]
qui a l'avantage de permettre de simplement gérer le cas de paquets de vignettes où toutes les vignettes d'un même paquet sont différentes. - Q2
- Ah ben non, effectivement, à la différence de ce que vos collègues obtenaient, ça n'est pas linéaire. Vous auriez du vous douter qu'il y avait un problème et le résoudre…
- Q3
- suit une loi uniforme "et donc" que les tirages sont indépendants ? Ben non, le donc est vraiment de trop là.
- Q4
- ok.
- Q5
- Q6
- Pas tout à fait car la partie entière et l'espérance ne commutent pas mais ça donne une approximation.
- Q7
- Vous ne répondez absolument pas à la question posée.
- Q8
- Tout à fait, ça serait très long.
À propos de l'utilisation de R
Dans ce cours, nous illustrerons l'intégralité de nos exemples et de nos études avec R. Voici donc quelques informations à toutes fins utiles…
Installation de R et de Rstudio
For windows or Mac: just read this: http://swirlstats.com/students.html
Here is how to proceed on debian-based distributions:
sudo apt-get install r-base r-cran-ggplot2 r-cran-reshape
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.
wget http://download1.rstudio.org/rstudio-0.98.1062-amd64.deb sudo dpkg -i rstudio-0.98.1062-amd64.deb sudo apt-get -f install # to fix possibly missing dependencies
You will also need to install knitr. To this end, you should simply run R (or Rstudio) and use the following command.
install.packages("knitr")
If r-cran-ggplot2
or r-cran-reshape
could not be installed for
some reason, you can also install it through R by doing:
install.packages("ggplot2") install.packages("reshape")
Producing documents
The easiest way to go is probably to use R+Markdown (Rmd files) in Rstudio and to export them via Rpubs to make available whatever you want.
We can roughly distinguish between three kinds of documents:
- Lab notebook (with everything you try and that is meant mainly for yourself)
- Experimental report (selected results and explanations with enough details to discuss with your advisor)
- Result description (rather short with only the main point and, which could be embedded in an article)
We expect you to provide us the last two ones and to make them publicly available so as to allow others to comment on them.
Documentation
For a quick start, you may want to look at R for Beginners (French version). A probably more entertaining way to go is to follow a good online lecture providing an introduction to R and to data analysis such as this one: https://www.coursera.org/course/compdata
Bibliographie
- P. Brémaud, Initiation aux Probabilités
- R. Jain, The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling, Wiley- Interscience, New York, NY, April 1991.