RICM4: Probabilité et Simulation

Table of Contents

Sitemap

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

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)
  • 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).
  • 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.
        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.
        3. Calculer le taux de masculinité observé et conclure. Regarder également le taux de renouvellement.
        4. 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 en R
  • 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:
  • 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:
  • 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 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 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é.
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 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: ./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 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: ./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 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.int plutôt qu'une boucle.
  • Pourquoi T et v 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 écrivez 1/(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 de ceiling.
  • 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.
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 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.

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:

  1. Lab notebook (with everything you try and that is meant mainly for yourself)
  2. Experimental report (selected results and explanations with enough details to discuss with your advisor)
  3. 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