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: 1. 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:
-1 2 3 4
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)-Documents:Générateurs de loi uniforme et de de lois discrètes -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)-Documents:Générateurs de loi uniforme et de de lois discrètes (version complète) -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é ½ de donner un garçon. 1. Modéliser ce problème. 2. 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. 1. Calculer le taux de masculinité observé et conclure. Regarder
également le taux de renouvellement. 1. 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. -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: - http://rpubs.com/alegrand/39469 et les sources Rmd -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%C3%A9partition), 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 mais mean, 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 simple ceiling(runif(1)*M)
car vous devez générer 1:M.
Q2
Quelques remarques:
total1jusqu'à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 utiliser
floor ou ceiling.
- 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 Xn 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 Yi 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 Yi par une probabilité.
Yi 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é.
Q3
Et vous supposez que les Xi 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 des
while quand vous voulez dire for ?
- 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é…
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: ¶
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 que
setequal(c(1,2),c(2,1) valait TRUE…
- Attention, vous ne vouliez pas faire floor((M+1)*runif(1)) mais
1+floor(M*runif(1))… De temps en temps vous obteniez un 0 pour
vign et vous tapiez en dehors du tableau. Votre calcul de mT est
donc faux… :(
Q2
- Votre xM n'est pas forcéement le même dans la fonction moyAchat et
à l'extérieur. C'est dangereux…
- c(1:N), c'est la même chose que 1: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.
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: ¶
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 de taille 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.
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ètre x.
- 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…
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.
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 (genre plot=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.
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 les
1/(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.intplutôt qu'une boucle. - Pourquoi
Tetvsont 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 sur M=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 que ceiling 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 fonction PANINI ??
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/TArrayplutô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.
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: file: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 mettre
M et pas 300… Du coup, tout le reste part complètement en vrille.
C'est dommage, j'aimais bien le tab[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.
1 | |
If r-cran-ggplot2 or r-cran-reshape could not be installed for some
reason, you can also install it through R by doing:
1 2 | |
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, [[http://www.cs.wustl.edu/~jain/books/perfbook.htm][The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling]], Wiley- Interscience, New York, NY, April 1991.