RICM4: Probabilité et Simulation

Table of Contents

Sitemap

Remarques générales

  • Si certain m'ont clairement annoncé au début avec qui ils ont travaillé, d'autres ne l'ont pas fait et c'est vraiment désagréable de retrouver les mêmes âneries avec les mêmes notations d'un devoir sur l'autre.
  • J'hallucine par exemple sur le nombre de personnes qui initialisent les tableaux à 0 en faisant tab = sample(0, N, replace = TRUE). Tirer N fois une valeur au hasard dans l'ensemble \(\{0\}\)… Vous avez des idées franchement tordues et que vous ne cherchiez pas une façon "plus élégante" montre votre manque de curiosité.
  • Un certain nombre d'entre vous codes "comme des cochons" avec des variables globales dans tous les sens, initialisées parfois après, parfois avant les fonctions qui les utilisent en interne. Si vous avez déjà eu un cours de sémantique ou de compilation, vous devriez savoir que ce genre de chose a des significations très différentes d'un langage à l'autre. Je vous invite à méditer ce petit exemple:

      x=-1;
      y=-1;
      f=function(x) {
          print(c(x,y))
          x=1;
          y=1;
          print(c(x,y))
      }
      g=function(x,y=0) {
          print(c(x,y))
          x<-1;
          y<<-1;
          print(c(x,y))
      }
      print(c(x,y));
      f(x=2);
      print(c(x,y));
      g(x=2);
      print(c(x,y));
    
    
      [1] -1 -1
    
      [1]  2 -1
      [1] 1 1
    
      [1] -1 -1
    
      [1] 2 0
      [1] 1 0
    
      [1] -1  1
    
  • Dans la Q1.1, de nombreuses personnes n'ont pas compris ce que je voulais dire par "corriger \(M\)". Comme vous l'avez vite vu, \(M\) est un estimateur de \(a\), c'est à dire que \(E[M]\approx a\). Seulement, c'est un estimateur biaisé puisque si on fait le calcul (ou qu'on intuite la formule), on trouve \(E[M]=\frac{a.n}{n+1}\). Pour corriger (débiaiser) l'estimateur et en faire un vrai estimateur de \(a\), il faut considérer \(\frac{n+1}{n}M\) dont l'espérance est exactement \(a\). C'est la seule façon de faire. Certains m'ont proposé de rajouter \(\frac{a}{n+1}\) à \(M\) pour le débiaiser mais ce n'est pas possible puisqu'on cherche justement à estimer \(a\) que l'on ne connaît pas…
  • C'est assez incroyable le nombre de personnes qui m'ont dit pour la Q1.1 "oui, on trouve facilement grâce à la formule de la variance que \(Var[M] = E[M^2]-E[M]^2 =\frac{na^2}{n+2} - \left(\frac{na}{n+1}\right)^2\)". Mais d'où est-ce que c'est sorti ?!? Ça n'a rien d'évident et ça fait vraiment tentative d'arnaque. Il est clair que de nombreuses personnes ont recopié un truc qu'ils ont trouvé sur Internet, le DM d'un copain, ou une correction de l'an dernier sans comprendre de quoi il était question. Sincèrement, évitez ce genre de chose. Ça ne trompe personne et ça fait juste malhonnête.
  • Au final, dans Q1.2, \(M'\) est un estimateur non biaisé, ce qui est un avantage par rapport à \(M\). Cependant, \(M\) est facilement corrigible et sa variance est bien plus faible que celle de \(M'\). \(\frac{n+1}{n}M\) est donc un excellent estimateur de \(a\)…
  • Dans la Q2.4, la plupart d'entre vous on bien réalisé que quand \(M=0.5\), la valeur de \(A\) la plus probable est \(0.5\). Ce n'est cependant évidemment pas ce que Bob a intérêt à répondre puisque le gain associé est nul! Il faut prendre en compte le gain associé et on trouve alors que la réponse optimale est \(0.7\)…
  • Une majorité de personnes ont répondu à la 3.6 et 3.7 alors que je les avais indiquées comme bonus. Vous avez dans l'ensemble tous trouvé que la stratégie qui consistait à répondre "OK" quand Alice renvoyait une valeur supérieure à \(1/2\) était une stratégie permettant d'obtenir un gain strictement supérieur à \(0.5\). Ceci dit, pour certains, le gain est de \(0.666\) alors que pour d'autres, le gain est de \(0.75\). C'est dû à deux interprétations différentes de ce que signifie tirer uniformément deux nombres tels que \(0\le A_1\le A_2 \le 1\). Je vous invite à méditer ceci:

      N=100000;A1=runif(N);A2=runif(N); mean(abs(A2-A1))
      N=100000;A1=runif(N);A2=runif(N, max=A1); mean(abs(A2-A1))
    
    [1] 0.3308798
    [1] 0.2501022
    

Remarques spécifiques

Adrien Artaud (B/B-)

  • Q1.1
    • D'où sortent ce Eth et Vth ? Vous n'expliquez aucun de vos calculs. Quand vous dites "après plusieurs variations de n et de a", vous aurais pu (dû) illustrer vos recherches par un graphique car avec ce que vous montrez, on n'a aucun moyen de savoir d'où ça sort.
    • Vous expliquez comment calculer l'espérance de \(M\) et le calcul est correct mais vous n'expliquez pas comment la corriger pour estimer \(a\). En effet, rajouter \(a/(n+1)\) à \(M\) n'aide pas puisqu'on ne connaît pas \(a\)…
  • Q1.2
    • Quand vous écrivez "On voit ensuite que la variance semble beaucoup plus grande que dans la question précédente", où le voit on ? Il n'y a aucune estimation dans ce que vous me donnez.
  • Q2.3
    • C'est un jeu où il n'y a pas beaucoup de marge de manoœuvre. Le fait que le gain de Bob soit faible dans l'absolu ne signifie pas que sa stratégie n'est pas optimale…
    • Drôle de façon d'initialiser un tableau: gains=sample(0,N,replace=TRUE). Utilise plutôt rep(x=0, size=N).
  • Q2.4
    • La simulation de l'estimation des probabilités est correcte. Néanmoins, le choix de la valeur à proposer est faux. En effet, si vous proposez 0.5 quand M vaut 0.5, votre gain sera nul.
  • Q2.5: votre interprétation est intéressante mais il n'y a aucune étude
  • Q3.6: ok
  • Q3.7: ok

Alan Guivarch (B-)

Quelques erreurs de programmations mais surtout, vous n'avez pas traité plusieurs questions.

  • Q1.1:
    • Très bien votre code qui montre à quelle vitesse \(M\) converge vers a.
    • "D'après les observations et les calculs on obtient V(M) =". Erm, quelle intuition, elles ont bon dos les observations.
  • Q1.2: "D’après les observations et les calculs on obtient:"… une variance plus élevée. M' est donc un moins bon estimateur.
  • Q2.3: Plusieurs erreurs dans votre code le rendent faux.
    1. A n'est tiré au hasard qu'une seule fois alors qu'on s'intéresse à l'espérance de gain alors que \(A\) (et \(M\)) varient.
    2. Vous multipliez par 1.2 au lieu de 1.1
    3. Vous utilisez a qui a été défini dans les questions précédentes.
  • Q2.4: pas de réponse
  • Q2.5: pas de réponse
  • Q3.6: ok
  • Q3.7: ok.

Alexandra Chaton (B-)

  • Q1.1:
    • Votre façon de programmer manque de rigueur et va vous conduire à faire des erreurs. Il faut que vous appreniez à programmer de façon défensive.

      • Par exemple, dans la fonction generator, pourquoi ce test (a >= 0 && n >=2) ? Et pourquoi renvoyer -1 ? Il me memble que n=1 est une valeur valide et que le -1 n'a aucun sens particulier (sinon, pourquoi pas -10?). Si des paramètres sont invalides, il vaut bien mieux lever une véritable erreur/exception plutôt que de renvoyer une valeur absurde, que vous ne vérifierez jamais, mais sur laquelle vous pouvez faire des calculs valides.
      • En R, on peut nommer les paramètres des fonctions. generator(a=100, n=10) est donc bien plus lisible que generator(100, 10).
      • Quand on initialise un tableau, il faut toujours l'initialiser avec des valeurs valides ou bien avec des valeurs qui indiquent que l'initialisation n'a pas été faite. Par exemple, au lieu de tabmax = c(1:nbexp), il vaut bien mieux faire tabmax = rep(x=0, length=nbexp) ou tabmax = rep(x=NA, length=nbexp).
      • Le copier coller est votre ennemi. En nommant vos variables tabmax0, tabmax1, … vous perdez complètement le lien avec les valeurs utilisées pour leur initialisation (tabmax0[i] = max(generator(a2, n0)) et tous ses petits copains). Au passage, tabmax3 et tabmax4 sont initialisés de la même façon et on se demande bien pourquoi…

      De manière plus générale, je pense que vous avez essayé plein de choses, interactivement, mais que vous ne programmez pas assez bien (ou vous pensez ne pas assez bien programmer) pour présenter une trace d'une exploration systématique. Il faut vous y mettre.

    • Vous dites qu'en faisant un "histogramme où on peut y voir que plus le n est grand plus les valeurs tirées ont de chance d’être proche de a", ce serait plus clair. Je ne vois pas bien de l'histogramme de quelle variable on parle mais vous auriez dû me montrer cette figure si elle a guidé votre réponse aux questions.
    • Tout ceci étant dit, vous avez raison, \(E[M]\) est proportionnelle à \(a\) et l'écart à \(a\) à peu près en \(1/n\). Et votre façon de corriger \(M\) est bonne. C'est bien.
    • Alors, quand vous dites: "Donc si on applique la formule de E(M) trouvée précédemment on obtient : \[Var(M) =\frac{a^{2} \cdot n}{n+2} \cdot (\frac{a \cdot n}{n+1})^{2}\]", je ne suis pas d'accord. Comment avez-vous trouvé que \(E[M^2]=a^2.n/(n+2)\) ? Ça n'a rien d'évident et il ne suffit pas de mettre des "donc" et des "si" pour donner l'illusion d'un raisonnement rigoureux.
    • Vous dites "Cette formule empirique a été vérifiée par le calcul." Comment ? Ce n'est pas une formule empirique, elle est issue d'un calcul de probabilités, pas d'une simulation.
  • Q1.2: ok. Autant calculer la variance de \(M\) n'était pas forcément simple. Autant calculer la variance de \(M'\) est facile et vous devriez être capable de le faire.
  • Q2.3:
    • Quand vous dits que "le gain est d'au mieux 1 centime d'euro si M = 1", c'est faux puisque pour M=1, la réponse 1.1 est forcément supérieure à A≤1 et le gain est donc nul.
    • Le fait que la stratégie ne rapporte pas grand chose ne signifie pas que la stratégie soit mauvaise. En effet, c'est un jeu très contraint où l'espérance de gain est très faible.
    • Vous n'avez pas compris ce que l'on demandait. Dans le jeu, A est tiré au hasard et quand on s'intéresse à l'espérance du gain, c'est pour un A aléatoire, pas pour un A fixe (même arbitraire).
  • Q2.4:
    • Il manque le cas a=1.0
    • 1000 échantillons pour un espace de dimension 66, c'est un peu juste.
    • Je demandais d'estimer P[A = a|M = 0.5]. Vous ne l'avez pas fait.
    • Oui, si on nous donne m=0.5, forcément a est supérieur à m et il vaut mieux répondre quelque chose de supérieur à 0.5… J'attendais une analyse un peu plus profonde, en particulier que vous déterminiez quelle est la valeur optimale, c'est-à-dire celle ayant non pas la probabilité la plus élevée mais celle ayant la meilleur espérance de gain.
  • Q2.5:
    • Vous dites pouvoir espérer un gain d'un euro, ce qui se produit si on vous donne \(M=0\), que vous répondez 1 et que \(1\le A\), ce qui arrive avec une probabilité nulle. Gagner plus avec une probabilité nulle n'est pas vraiment un argument en faveur de cette stratégie. Je ne vois pas en quoi, d'après vos explications, cette deuxième stratégie serait particulièrement pertinente.
    • Votre simulation est correcte et vous avez bien identifié que \(\alpha=0.5\) conduit à de meilleurs gains que \(\alpha=0.3\) ou \(\alpha=0.7\). À la question "Arrivez vous à trouver un meilleur α en dehors de ces valeurs ?", vous auriez pu répondre un peu plus que "Je ne pense pas que l'on puisse trouver de meilleur alpha". C'était quand même facile de tester pour pas mal d'autres valeurs et de montrer qu'on n'arrive pas à trouver mieux.
    • Quand vous dites "Pour n = 10 on obtient la même conclusion. Toutefois je pense que la variance va être plus importante.", je ne vois pas de la variance de quoi vous parlez.
  • Q3.6: ok
  • Q3.7: ok

Alexandre Salmon (C-)

Travail bâclé. Vos intuitions sont justes, vous savez programmer mais avez répondu à moins de la moitié des questions…

  • Q1.1:
    • Vos intuitions sont claires et justes.
    • Votre code ne correspond pars à ce que je proposais puisqu'Alice doit tirer ses valeurs dans l'intervalle \([0,a]\), pas dans l'ensemble discret \(\{0,1,\dots,a\}\). D'autre part, pensez vous que 100 répétitions soit suffisant pour estimer votre probabilité ?
    • Vous n'avez pas cherché à débiaiser \(M\), ce qui était demandé.
  • Q1.2:
    • Vous ne comparez pas la variance de M avec celle de M'…
  • Q2.3:
    • Comment pouvez vous savoir que 1+1/n est une bonne stratégie si vous n'avez pas débiaisé \(M\) ? Notez que le 1.1 est proposé dans l'énoncé justement pour \(n=10\)…
    • Votre code est correct.
  • Q2.4: pas de réponse…
  • Q2.5: pas de réponse…
  • Q3.6: ok
  • Q3.7: ok

Alexis Rollin (A-)

Bon travail.

  • Q1.1: Très bien votre étude pour trouver une formule de l'espérance. Par contre, pour la variance, vous n'avez pas moyen de savoir si c'est 1/n ou 1/n^2 ou autre chose… Votre \(1/12n\) n'est pas justifié.
    • Attention, quand vous dites "On peut corriger E[M] en lui ajoutant a/n"… Non, puisque vous ne connaissez pas \(a\). Par contre, comme vous connaissez \(n\), il suffit de multiplier \(M\) par \((n+1)/n\) pour le corriger.
  • Q1.2:
    • La variance de \(X\) est bien de \(1/12\) donc celle de \(M'\) est bien de$ \(1/(12n)\) mais votre formule pour la variance de \(M\) est incorrecte et il y a donc bien plus qu'un facteur \(4\) entre les variances de \(M\) et de \(M'\).
  • Q2.3: ok. La stratégie de bob n'est pas très efficace mais il n'y a pas grand chose à gagner dans ce jeu…
  • Q2.4: les simulations sont correctes. Par contre, quand vous dites "La plus forte probabilité est celle qui correspond à P(A=0.5|M=0.5).On en déduit que, si Alice nous indique que M=0.5, il vaut mieux proposer A=0.5.", vous gagnerez au mieux \(r(M)-M=0.5-0.5=0\). Répondre le A le plus probable n'a pas d'intérêt, il faut pondérer par le gain associé…
  • Q2.5: vos interprétations sont correctes. Dommage que vous n'ayez pas étudié d'autres valeurs de \(\alpha\)
  • Q3.6: ok
  • Q3.7: ok

Ali El Mufti (C)

Vous n'avez pas compris l'intérêt du Rmd. Le but, ce n'est pas de commenter du code, mais de produire une analyse avec les morceaux de codes permettant de produire votre étude. Là, je suis sensé deviner ce que sont a1, a2, n1, n2, p1, p2, etc ? Et quand vous commentez, attention à certains termes pas toujours très pertinents ("grotesque", "fioriture", …). Non pas qu'un langage soutenu soit à bannir mais il faut l'utiliser à bon escient. Enfin, vous ne traitez que la moitié des questions posées.

  • Q1.1: je demandais de retrouver une formule pour \(E[M]\), ce que vous n'avez pas cherché à faire. Vous savez programmer, vous écrivez un code qui permet de simuler mais vous n'étudiez/n'analysez rien.
  • Q1.2: vous finissez par comparer les variances mais pour des valeurs différentes de a et de n… ce qui n'a aucun sens.
  • Q2.3:
    • Gains = sample(0, N, replace = T) Mais qu'est-ce que c'est que cette façon saugrenue d'initialiser un tableau ?
    • Votre code est correct ceci dit, même si 100 tirages, c'est trop faible. Si vous l'av(i)ez lancé plusieurs fois, vous avez (auriez) dû vous rendre compte que le 0.011 est parfois 0.017, parfois 0.021, etc.
  • Q2.4:
    • Normalement, i et j sont dans 0:10.
    • Vous ne répondez pas à la question posée à savoir si Alice vous indique 0.5, qu'avez-vous intérêt à répondre.
  • Q2.5:
    • Bof. Quand vous écrivez "D'après les résultats que j'ai obtenu, alpha = 0,5 est le meilleur #alpha que l'on peut avoir", pensez vous vraiment raisonnable de conclure avec une étude si restreinte?
  • Q3.6: ok
  • Q3.7: non traité

Antoine Saget (A+)

Très bon travail. Juste un truc dommage en 2.4 où vous êtes passé à côté de la question.

  • Q1.1: Bonne étude. Par contre, le \(n/(n+1).a\) sort complètement du chapeau.
    • La correction de \(M\) en rajoutant \(a/(n+1)\) n'aide pas puisqu'on ne connaît pas \(a\)… Il vaut mieux multiplier \(M\) par \((n+1)/n\).
    • Mais d'où sort ce "Donc" avant votre formule de variance ? C'est de la pure science fiction. Le fait que \(E[M^2]=a^2.n/(n+2)\) n'a rien d'évident.
  • Q1.2: Bonne analyse.
  • Q2.3: Très bien. Bravo.
  • Q2.4: Nickel. Par contre, La probabilité même si quand \(M=0.5\), \(0.5\) est la valeur de \(A\) la plus probable, le gain associé est nul et on n'a aucun intérêt à répondre ça.
  • Q2.5: Parfait.
  • Q3.6: OK
  • Q3.7: Parfait.

Baptiste Boleat (B-)

  • Q1.1:
    • le as.integer n'a pas lieu d'être puisqu'on tire dans \([0,a]\).
    • Je ne comprends pas vos affirmations ("On a besoin de soustraire à a un nombre qui décroit quand n devient grand", de quoi parlez-vous ?) ni ce qui les sous-tend ("on peut donc supposer que \(E[M]= a - \frac{a}{n}\)", mais d'où ça sort? qu'est-ce qui dans les calculs précédents vous permet d'affirmer ça ou même de le deviner?). Pareil pour ce que vous écrivez à propos de la variance que vous n'avez jamais estimée…
  • Q1.2: ok, mais ici, encore une fois, on était en continu dans \([0,a]\), pas en discret.
  • Q2.3: c'est bien d'avoir essayé de calculer formellement \(E[G]\) mais votre calcul est incorrect car \(A\) est une variable aléatoire et car Bob ne gagne \(r(M)-M\) que si \(r(M)\le A\) (ce que vous n'avez pas pris en compte dans vos calculs).
  • Q2.4: Vous comptiez vraiment estimer une soixantaine de probabilités avec 100 tirages ? Est-ce vraiment raisonnable dans ces conditions de conclure que la valeur la plus probable est 0.5 ? Et quand bien même, la meilleur valeur à répondre n'est pas 0.5 puisque le gain associé est nul…
  • Q2.5: Encore une fois, je ne comprends pas ce qui étaie vos affirmations (par exemple "C’est une meilleure stratégie que le facteur car elle permet d’approcher plus rapidement la valeur de A"… mais pourquoi ? d'où est-ce que ça sort ?).

    De même une fois plus chercher à conclure avec des estimations d'aussi piètre qualité (100 tirages, c'est faible, surtout pour comparer 10 valeurs les unes avec les autres).

    Par contre, c'est une bonne idée d'avoir représenté les deux stratégies sur la même courbe. Même si avec si peu de tirages, on ne voit franchement pas grand chose.

  • Q3.6:
  • Q3.7:

Claire Velut (A-)

Si je peux me permettre, attention aux typos et à l'accord des participes passés/infinitifs.

  • Q1.1:
    • mais, mais… vous ne faites qu'un seul tirage pour estimer E[M] ?!? Regardez comme votre deuxième figure est bruitée, impossible de conclure quoi que ce soit là dessus et certainement pas "On remarque que les points formes un fonction de la forme de la fonction log". Gloups.
    • Ah, ouf, ensuite, vous faites bien une moyenne. J'ai eu peur.
    • Vous n'avez pas compris ce que je voulais dire par "corriger \(M\)". \(M\) est un estimateur de \(a\), c'est à dire que \(E[M]\approx a\). Seulement, c'est un estimateur biaisé puisque si on fait le calcul (ou qu'on intuite la formule), on a \(E[M]=\frac{a.n}{n+1}\). Pour corriger (débiaiser) l'estimateur et en faire un bon estimateur de \(a\), il faut considérer \(\frac{n+1}{n}M\) dont l'espérance est exactement \(a\).
    • Je ne comprends absolument pas comment vous trouvez la formule de la variance. Comme pour beaucoup d'autres, ça sort complètent du chapeau.
  • Q1.2:
    • \(M'\) est un estimateur non biaisé, ce qui est un avantage par rapport à \(M\). Cependant, \(M\) est facilement corrigible et sa variance est bien plus faible que celle de \(M'\). \(\frac{n+1}{n}M\) est donc un excellent estimateur de \(a\)…
  • Q2.3:
    • Votre analyse de la stratégie est tout à fait juste.
  • Q2.4:
    • Votre code pour calculer \(P[A=a|M=m]\) est juste, c'est très bien.
    • Par contre, si quand \(M=0.5\), la valeur de \(A\) la plus probable est \(0.5\), ce n'est pas ce qu'il faut répondre puisque le gain associé est nul.
  • Q2.5: ok, très bien
  • Q3.6: ok
  • Q3.7: ok

Dima Assi (C-)

Travail bâclé. Code mal indenté, aucune analyse. Vous ne vous êtes même pas rendue compte qu'il restait le template Rmd (summary(cars), plot) à la fin de votre devoir…

  • Q1.1: Votre calcul et votre raisonnement est tout à fait juste mais je voulais que vous le simuliez, en particulier pour vous rendre compte de la variance et de la qualité de l'estimateur.
  • Q1.2: non traité
  • Q2.3: je ne demande pas de calculer la probabilité de gagner mais l'espérance du gain
  • Q2.4: C'est à moi de lancer votre code pour regarder le contenu des variables ? Vous ne répondez pas aux questions que je pose.
  • Q2.5: "Cette methode semble bonne car M^alpha est plus grande que alpha alors on aura des valeurs meilleurs". Cette phrase ne veut rien dire.
  • Q3.6: "En utilisant cette méthode la probabilité de gain est de 0.63 alors elle est mieux que la methode de Bob". Ce n'est plus le même jeu…
  • Q3.7:

Elisa Beaugrand (A-)

Très bien rédigé. Bravo.

  • Q1.1: Votre démarche pour trouver une formule est très bien expliquée. C'est parfait. Pareil pour la formule de la variance, c'est assez convaincant même si vous aviez certainement une idée de la réponse pour essayer quelque chose en \(n+2\). Au passage, quand vous concluez "Le graphe correspond à celui de la variance", ça me parait impossible à dire à l'œuil nu. Il aurait fallu superposer les deux graphes pour bien faire.

    Pour la correction de \(M\), je vous invite à lire les remarques générales pour clarifier la chose. Et effectivement \(\frac{n+1}{n}M\) est du coup, parfois supérieur à \(a\) et parfois inférieur (sinon, on aurait du mal à avoir une espérance de \(a\)).

  • Q1.2: L'espérance de \(M'\) ne "tend pas" vers a lorsque n tend vers l'infini. C'est carrément égal à \(a\) pour tout \(n\). L'estimateur de la variance se calcule facilement. Regardez le corrigé.
  • Q2.3: Attention, \(A\) doit être retiré à chaque fois! Pas juste une fois pour toute à l'extérieur de la boucle.
  • Q2.4: votre code est bien compliqué. Je vous invite à regarder la correction ou bien le code de Saget par exemple. Sinon très bien votre calcul de \(P[A=a|M=0.5]\). Par contre, même si \(0.5\) est la valeur la plus probable, comme le gain est nul, aucun intérêt à répondre ça…
  • Q2.5: Les gains ont l'air assez aléatoires car vous ne faites que 100 tirages là où 100 à 1000 fois plus serait nécessaire pour faire une estimation potable.
  • Q3.6: ok
  • Q3.7: ok

Gabriel Manissadjian

"Publish Document – Step 1 of 2". Sérieusement…

Gaetan Rival (B-/C)

Des efforts mais travail à revoir sérieusement. Code mal indenté, bourré d'effets de bord avec des variables globales définies après coup, en plein milieu, sans parler des copier-coller. Berk. Ça vous jouera des tours. Regardez bien le corrigé, au delà du "style" de programmation, vous êtes passé à côté de beaucoup de choses.

  • Q1.1: Mais pourquoi tirer \(n\) au hasard ? À part si vous craigniez qu'il ne se passe de choses étranges pour des valeurs particulières de \(n\), je ne vois pas l'intérêt. Au passage, regarder \(M-a\) en fonction de \(n\) alors que \(a\) varie n'a pas de sens car ça dépend de \(a\) mais vous n'avez pas moyen de vous en rendre compte graphiquement. Pas moyen de distinguer la variabilité intrinsèque de \(M\) avec celle imputable à \(A\)…

    En fait, vous ne savez pas vraiment où vous allez et c'est dû à un problème d'abstraction, de compréhension du problème, plus qu'à un problème de programmation. Du coup, vous essayez d'expliquer mais vous vous perdez dans des détails sans insister pas au bons endroits. Par exemple quand vous écrivez "Pour caculer l’esperance de M en fonction de a et n, nous obtenons la formule suivante : E[M]=((n-1)/n)*a". Mais d'où est-ce que ça sort ? Aucun des résultats numériques précédents ne permet d'obtenir cette intuition. En plus, la formule est fausse ? Pareil pour la variance, votre "Sachant que …" n'a aucun lien logique avec ce qui suit.

  • Q1.2: Le calcul est correct mais l'analyse non cohérente. En effet, vous écrivez "Nous pouvons relever que l’esperance de cet estimateur M' est plus éloigné de la valeur de a que l'estimateur M." alors que d'après vos résultats: a = 956; mean(M)=938; var(M)=331; mean(M')=947; var(M')5719.
  • Q2.3:
    • Le calcul du gain est correct.
    • Encore une fois, il y a des problèmes de "logique" dans vos arguments. Le fait que l'espérance du gain est proche de 0 ne signifie pas que la probabilité de gagner est faible. Le fait que l'espérance de gain soit faible ne vous permet pas de déduire que la stratégie n'est pas optimale (puisque ce jeu est très contraint).
  • Q2.4:
    • La fonction round ne vous permet pas d'avoir un échantillonnage uniforme de l'intervalle discret.
    • L'initialisation de \(M\) ne sert à rien.
    • Attention, c'est dangereux d'utiliser un rbind entre une dataframe et un vecteur dont les "colonnes" ne sont pas nommés. Accéder au contenu de la dataframe via des indices de colonnes est aussi une très mauvaise idée. Enfin, la première ligne de tabAM, ajoutée lors de son initialisation, n'a aucun sens (enfin, elle n'en aurait pas si vous aviez fait \(a=0\) au lieu de \(a=5\)).
    • Au delà du problème du round, votre code est peut-être correct. Ou pas … Regardez le corrigé et les interprétations.
  • Q2.5: Code toujours OK sur le principe même si le copier coller me file des boutons.
    • Vous écrivez "Dans la majorité des cas, l'alpha le plus interessant est 0.6 avec une esperance de gain la plus importante" alors que dans vos résultats numériques, le gain le plus élevé est atteint pour \(\alpha=0.7\). Soit vous avez mal lu, soit les nombres ne sont pas fiables et il aurait fallu tirer plus d'échantillons.
  • Q3.6: ok
  • Q3.7: ok

Robin Delbos (B/B+)

Travail correct.

  • Q1.1:
    • Code correct.
    • Calculs à peu près corrects même si j'ai du mal à croire qu'ils soient complètement de vous vu les typos qui émaillent vos formules.
    • j'aurais aimé une étude empirique. Vous ne pouvez pas corriger \(M\) en rajoutant \(a/(n+1)\).
  • Q1.2: ok. Regardez quand même le corrigé.
  • Q2.3: ok
  • Q2.4:
    • "Pour cette question, je suppose qu'il y a une erreur dans l'énoncé et que les Xi sont tirés dans {0,…,A} et pas dans {0,…,M}." Effectivement, mais ça ne vous dispensait pas de traiter la question… Regardez le corrigé.
  • Q2.5: ok
    • Vous recopiez les valeurs que vous avez obtenues. Comment savoir si vous ne vous êtes pas trompés. Pourquoi ne pas me mettre les appels de fonction correspondant et leur résultat ? C'est quand même bien à ça que ça sert de faire du Rmd…
  • Q3.6: ok
  • Q3.7: ok

Houda El-Aji (A-/A)

  • Q1.1: ok. Analyse bien expliquée, rien à redire. Par contre on ne peut pas corriger \(M\) juste en rajoutant \(a/(n+1)\) puisqu'on ne connaît pas \(a\) a priori..
  • Q1.2: ok.
  • Q2.3: ok.
  • Q2.4: Attention, vous évaluez \(P[M=0.5|A=a]\) au lieu de \(P[A=a|M=0.5]\). C'est bien proportionnel (formule de Bayes) mais il faut renormaliser. D'autre part, même si la valeur de \(A\) la plus probable quand \(M=0.5\) est bien \(0.5\), ce n'est pas ce qu'il faut répondre puisque le gain associé est nul.
  • Q2.5: Votre code semble correct mais les valeurs de votre matrices varient trop car il n'y a pas assez d'échantillon pour estimer correctement vos gains. Difficile de conclure dans ces conditions.
  • Q3.6: ok
  • Q3.7:

Idriss Sajide (C)

Devoir superficiel et lacunaire. L'intérêt du Rmd, ce n'est pas de faire de la mise en page propre avec à la fois du texte et du code, mais de pouvoir avoir dans le même document le résultat du code exécuté et qui sous-tend l'analyse que vous faites. Écrire ces formules n'a aucun intérêt si vous ne regardez pas leur valeurs.

  • Q1.1:
    • Vous écrivez ces formules mathématiques comme si c'était une évidence mais vous sautez toutes les parties "difficiles". C'est \(P[M\le x]\) et pas \(P[M\le X]\) qu'il faut écrire. D'autre part, qu'est-ce que ce \(k\) ? Comment passez vous de "E(M²) - E(M)² (Formule du cours)" à "(n/n+2))(a²)-((n/(n+1))a)²" ?
  • Q1.2: code correct mais pas d'analyse
  • Q2.3: Vous annoncez un gain de \(0.015\) alors que votre code indique =0.0078$. C'est signe que vous n'avez pas assez d'échantillons (1000 ici, 100 pour la question d'après…) pour faire une estimation correcte…
  • Q2.4: Vous me parlez du contenu de la matrice mais vous ne me la montrez pas. Répondre 0.5 quand Alice annonce 0.5 n'est pas une bonne idée puisque le gain associé est nul. Regardez le corrigé.
  • Q2.5: non traité
  • Q3.6: ok
  • Q3.7: ok

Killian Pareilleux (C)

À revoir. Même si le code est souvent:

  • Q1.1: Que représente \(k\) dans "f(x)=(n/a**n)*k**(n-1)"? Vous ne pouvez pas corriger \(M\) en utilisant \(a\). Regardez le corrigé.
  • Q1.2: Que vous n'arriviez pas à démontrer que \(E[M']=a\) alors que vous arrivez à calculer la densité de \(M\) (ce qui est bien plus difficile) est très étonnant. Il y a visiblement des choses que vous n'avez pas comprises. Regardez le corrigé.
  • Q2.3: ok
  • Q2.4: ok. Vous calculez \(P[A,M]\) mais pas \(P[A|M]\). D'autre part répondre \(0.5\) quand Alice vous indique \(0.5\) n'a aucun intérêt puisque le gain associé est nul.
  • Q2.5: non traité
  • Q3.6: ok
  • Q3.7: ok

Leila Michelard (B-)

Vous prenez soin d'expliquer votre raisonnement, ce qui est bien mais vous faites trop peu d'estimations pour pouvoir raisonnablement conclure et vous avez fait plusieurs contresens. Regardez bien le corrigé.

  • Q1.1:
    • Mais d'où sort ce as.integer ? On s'intéresse à un jeu continu, pas discret.
    • OK. Par contre, d'où sort votre formule de l'espérance ? Pourquoi rajouter \(a/n\) ? Ce n'est pas vos simulations qui vous permettent de le dire. Regardez bien le corrigé et comparez à vos réponses. Votre formule de l'espérance est incorrecte et celle de la variance aussi (il y a des carrés, la variance, ce n'est pas l'écart à la moyenne…).
  • Q1.2: Votre calcul sur \(E[M']\) est correct mais celui sur la variance est tout faux car l'espérance d'un carré n'est pas le carré de l'espérance.
  • Q2.3: Votre code est correct mais vous ne pouvez pas faire d'estimation correcte avec aussi peu d'échantillons. Reexécutez donc votre code avec une autre seed et vous verrez. L'espérance de gain est plutôt au alentours de \(0.16\) que de \(0.08\).
  • Q2.4:
    • Quand vous écrivez "je trouve ça plus clair de ne tester que les fois où \(A = a\) et compter pour chaque M le nombre de fois qu’il apparaît.", pourquoi pas ? Mais vous estimerez \(P[M=m|A=.5]\) alors qu'on souhaite \(P[A=a|M=.5]\).
    • Au passage, je ne comprends pas pourquoi vous tirez \(A\) au hasard si après, vous ne conservez que ceux où \(A=a\)…
    • Au final, vous regardez pour un \(a\) donné, la distribution de \(M\) alors que c'est l'inverse qui vous intéresse.
    • Votre dernier code estime (avec très peu de tirages) \(P[A=0.5 et M=0.5]\). Ça ne vous permet pas de savoir ce qu'il faut répondre quand Alice indique \(M=0.5\)
  • Q2.5: Encore une fois 100 échantillons, c'est largement insuffisant pour obtenir une estimation correcte (votre code indique 0…). C'est presque un coup de chance que vous ayez distingué correctement que \(\alpha=0.5\) est une meilleure stratégie que \(\alpha=0.3\) ou \(\alpha=0.7\).
  • Q3.6: non traité
  • Q3.7: non traité

Louis De-gaudenzi (A+)

  • Q1.1:
    • Démarche logique et bien expliquée. Par contre, vous avez calculé, pas estimé, la variance alors que ça n'était pas très difficile à faire.
  • Q1.2:
    • Bien mais attention quand vous dites "plus la valeur de \(a\) est grande, plus l’espérance de \(M'\) se rapproche de la valeur \(a\) qu’on cherche." L'espérance de \(M'\) est constante égale à \(a\). C'est la variabilité de votre estimateur qui diminue.
    • J'avoue que j'ai du mal à comprendre que vous soyez capables de calculer la variance de \(M'\) et que vous n'arriviez pas à calculer celle de \(M\) alors que c'est bien bien plus simple.
  • Q2.3: ok
  • Q2.4:
    • Votre estimation de \(P[A,M]\) est correcte. Vous avez compris qu'en regardant la ligne \(M=0.5\), que vous obteniez quelque chose de proportionnel à \(P[A|M=0.5]\) mais qu'il fallait normaliser car la somme ne fait pas \(1\).
    • En répondant \(0.5\), vous maximisez vos chances de gagner mais vous ne gagnez rien… Ce n'est donc pas ça qu'il faut répondre.
  • Q2.5: très bien.
  • Q3.6: ok
  • Q3.7: ok

Luis-filipe Velasco-da-silva (A/A+)

  • Q1.1: ok, vous avez compris.
  • Q1.2: ok.
  • Q2.3:
    • Au début, vous évaluez la probabilité de gain, pas l'espérance du gain qui est de l'ordre de \(0.016\). Il aurait fallu regarder sum(X[1.1*X <= a] * 0.1)/length(X). D'autre part, 100 tirages, ce n'est pas suffisant pour obtenir une bonne estimation.
  • Q2.4:
    • Votre code est un peu difficile à lire mais vous comprenez ce que vous faites. J'en veux pour preuve que vous êtes un des rares à avoir compris que quand Alice indiquait \(M=0.5\), la réponse optimale était \(0.7\)! Ouf! Merci, je désespérais. :)
    • Vous écrivez "à suivre, à gauche, il y a les valeurs de M. à droite, les r(M) optimales, découvert en utilisant le code de la question précédent". Je comprends que vous ayez utilisé votre code interactivement pour faire votre étude et c'est très bien. Cependant, ça vaut le coup de résumer votre recherche par un programme qui fait l'ensemble de vos explorations et vous permet de conclure.
  • Q2.5:
    • C'est une bonne idée de comparer cette stratégie à la stratégie optimale du cas discret mais je ne comprends pas ce à quoi correspond votre vecteur \(x\).
    • Vous faites un contresens, on ne cherche pas à estimer une erreur dans cette question et on est revenu au jeu continu où \(a\) est uniforme dans $[0,1] et \(X\) est uniforme dans \([0,a]\).
  • Q3.6: non traité
  • Q3.7: non traité

Manon Chaix (B-)

Regardez les commentaires pour Leila Michelard puisque vos rendus sont identiques.

Maxime Vernet (C/C-)

Que du code, aucun commentaire \(\Rightarrow\) aucun intérêt. Le code est parfois correct (en 2.4). Il est faux en 2.3 et 2.5 car \(a\) doit être tiré au hasard. Il est faux en 2.5 car une espérance de gain négative sur un jeu où le gain ne peut être que positif…

Mica Murphy (A-/B+)

  • Q1.1:
    • C'est bien de remarquer que si \(n=1\), on a \(E[M] =a/2\), mais de là à en déduire que \(E[M] = a\frac{n}{n + 1}\). C'est un peu rapide.
    • Vous avez compris comment corriger \(M\), très bien.
  • Q1.2: ok. Vous avez compris mais regardez quand même le corrigé.
  • Q2.3: ok. Je n'ai pas trouvé où était défini \(N\), le nombre de tirages… Avez vous caché certain blocs ?
  • Q2.4:
    • C'est res[6,], pas res[6], que vous vouliez écrire je pense. Ce que vous avez dans ce tableau, par contre, c'est \(P[A=a,M=m]\) et la 6ème colonne n'est pas \(P[A=a|M=0.5]\) puisque la somme ne vaut pas 1. C'est proportionnel par contre.
    • Vous ne m'indiquez pas quel réponse donner quand Alice renvoie \(M=0.5\).
  • Q2.5:
    • ok. Notez qu'il y a une "erreur" (sans conséquence grave ici) dans votre code. Regardez le moment où votre fonction afficheGains affiche des valeurs puis où vous affichez le max du tableau Gains. Curieusement la valeur affichée (0.09028741) n'est pas dans la liste des valeurs affichée par afficheGains. C'est un problème de portées de variables. Dans afficheGains, la variable Gains est une variable locale et pas globale. Pour faire référence à la variable globale (celle de l'environnement englobant en fait), il faut utiliser l'opérateur <<- au lieu de l'opérateur <-. Le 0.09028741 est une valeur qui date de quelques questions auparavant.
  • Q3.6: ok
  • Q3.7: ok

Morgan Crociati (A/A+)

Travail soigné. (graphiques, légendes, analyses,…).

  • Q1.1: ok. Regardez quand même le corrigé et comment "corriger" \(M\) (ça ne se fait pas en augmentant \(n\)).
  • Q1.2: ok. Attention quand vous écrivez: "Mais je remarque aussi que la précision de la réponse n'augmente pas avec n, elle reste plutôt constante peut importe la valeur n". Vous n'avez visiblement pas fait attention à l'échelle sur l'axe des y. En fait, la précision augmente bien avec \(n\).
  • Q2.3: OK. Votre estimation du gain moyen est "amusante" car elle couple une discrétisation de \(a\) avec un échantillonnage de \(M\) là où la plupart des gens ont échantillonné à la fois \(A\) et \(M\). C'est tout à fait correct (voire futé) mais le contrôle de la convergence de votre estimateur est un peu plus difficile car il faut prendre en compte les deux paramètres (le 100 de la discrétisation et le 1000 de l'échantillonnage). Bonne analyse du jeu.
  • Q2.4: Code correct même si vous n'avez pas calculé \(P[A|M=0.5]\) et que la réponse optimale à \(M=0.5\) n'est pas 0.5 car le gain associé est nul.
  • Q2.5: ok. Votre code et vos conclusions sont justes. Dommage que vous n'ayez pas conservé une trace (sous forme de code et de valeur numérique) de vos recherches.
  • Q3.6: ok
  • Q3.7: ok

Myriam Lombard (B)

En Markdown, il faut mettre un espace après les # qui indiquent un titre de (sous-)section. Sinon, ça fait juste moche à l'export… Le début de votre DM est assez confus mais le reste de vos analyses est tout à fait pertinent.

  • Q1.1:
    • Était-il bien raisonnable de m'afficher cette grosse matrice et ses \(160\times160=25600\) valeurs pour conclure ? Votre code est correct mais pas besoin de regardez dans le détail tant de valeurs différentes. Par contre, 100 échantillons pour chaque estimation, c'est plutôt faible.
    • Votre utilisation des dataframe comme une matrice n'est pas vraiment adaptée. Vous pouvez considérer une dataframe comme une table de mini base de donnée. En général, les colonnes ont des noms qui correspondent à des paramètres d'entrée (\(a\), \(n\) par exemple) et à des sorties (la moyenne et la variance empirique de \(M\) par exemple) alors que chaque ligne correspond à une configuration différente. C'est d'ailleurs ce que vous avez fait en Q2.3.
    • Je vous invite à bien lire le corrigé car vous n'avez pas les idées claires. Par exemple:
      • "Je pense qu’au plus n est supérieur à a, au plus la probabilité que la valeur M soit égale à a est élevée." On est sur un espace continu et la probabilité que \(M\) soit égale à \(a\) est nulle, et ce même quand \(n\) est grand.
      • "Une formule pour \(E[M]\) en fonction de \(a\) et \(n\) où \(M = max_i X_i\) est \(E[M] = \sum_{i=0}^m \frac{X_i = a}{m}\)". Cette formule n'a pas de sens. Qu'est ce que \(m\), que vaut il ? À gauche du signe \(=\) on a un nombre réel (l'espérance d'une variable aléatoire) et à droite on a une somme de variables aléatoires. Quand vous écrivez \(X_i = a\), je ne sais pas si vous parlez d'un évènement et de sa probabilité (auquel cas il faudrait écrire \(P[X_i=a]\)).
      • "La valeur de cette espérance s'explique de cette façon : soit \(n\) le nombre d'essais avant d'obtenir la valeur \(a\), \(X_n\) est donc égal à a$." Je comprends ce que vous voulez dire mais comme je l'expliquais précédemment, la probabilité d'obtenir \(a\) est nulle.
  • Q1.2: ok. Ce que vous dites est juste mais relisez le corrigé.
  • Q2.3: Code presque juste. Il est faux car une seule valeur aléatoire de \(A\) est tirée… Vous ne vous en êtes pas rendue compte à cause de la façon dont vous écrivez votre code. En particulier écrire avec des boucles est vraiment inadaptée en R. Quand j'exécute votre code (une fois le tirage de \(A\) corrigé), voilà le temps que ça prend:

      n = 10
      Myriam = function(N= 1000) {
         #On tire les valeurs de X_i uniformément dans l'intervalle [0, A]
          A = runif(N,0,1)
          M <- c(replicate(N, max(runif(n, 0, A))))
          reponse = c(1:N)
          EcartAvecA = c(1:N)
          Gain = c(1:N)
          dm23test = data.frame(numEssai = c(1:N), M, reponse, EcartAvecA, Gain)
          #Calcul de r(M) que va annoncer Bob
          #ici, r(M) est modélisé par reponse
          for(i in 1:N) {
              dm23test[i, 3] = 1.1*dm23test[i, 2]
          }
      
          #Calcul de l'écart avec A
          for(j in 1:N) {
              dm23test[j, "EcartAvecA"] = A[j] - dm23test[j, 3]
          }
      
          #Calcul des gains de Bob : en effet, soit il gagne de l'argent, soit il ne gagne rien
          for(k in 1:N) {
              dm23test[k, 5] = 0
              if(dm23test[k, "EcartAvecA"] >= 0) {
                  dm23test[k, 5] = dm23test[k, "EcartAvecA"]
              }
          }
          return(mean(dm23test$Gain))
      }
      system.time(print(Myriam(40000)))
    
    [1] 0.01836113
       user  system elapsed 
      9.985   0.144  10.130
    

    Quand je le réécris sans boucles, voilà ce que ça donne:

      n = 10
      Arnaud = function(N= 1000) {
         #On tire les valeurs de X_i uniformément dans l'intervalle [0, A]
          A = runif(N,0,1);
          M <- c(replicate(N, max(runif(n, 0, A))));
          reponse = 1.1*M;
          EcartAvecA = A - reponse;
          Gain = ifelse(EcartAvecA>0, reponse - M ,0)
          return(mean(Gain))
      }
      system.time(print(Arnaud(40000)))
    
    [1] 0.01548697
       user  system elapsed 
      0.117   0.000   0.117
    

    J'ai gardé vos notations mais j'espère que vous admettrez que cette version est plus courte et plus lisible. Après, vous avez le droit de dire "tout ça pour ça". En fait, c'est important parce que mon code 100 fois plus rapide (au moins…) me permet de faire une estimation plus précise en tirant 1000 fois plus d'échantillons.

      system.time(print(Arnaud(1000000)))
    
    [1] 0.0153981
       user  system elapsed 
      3.257   0.000   3.257
    

    Si j'ai repéré ces problèmes, c'est parceque votre valeur de 0.031 me paraissait étrange. En relançant votre code, je me suis rendu compte que c'était très variable comme valeur mais impossible d'augmenter le nombre de tirages sans que ça prenne des plombes. Et dès que j'ai voulu enlever les boucles, le fait que A était de taille 1 a posé problème… Plutôt fragile comme code du coup.

  • Q2.4: C'est bien vous avez réalisé que sample(x = (0:10)/10, 1, T) ne donnait pas la même chose que as.integer(runif(1, 0, 10))/10. Votre code est juste même si 1000 tirages, c'est trop peu. Par contre, vous avez bien compris ces histoires de probabilités conditionnelles. C'est bien, vous êtes une des rares à avoir correctement fait ce calcul. Par contre, vous n'avez pas réalisé que lorsqu'Alice répond \(M=0.5\), si la valeur la plus probable est \(A=0.5\) (cette fois on est sur un espace discret) mais comme elle ne rapporte aucun gain, il vaut mieux répondre autre chose (\(0.7\) en l'occurence).
  • Q2.5: Tiens, cette fois, vous avez écrit une fonction. C'est tellement plus pratique… Vos analyses sont correctes.
  • Q3.6: ok
  • Q3.7: non traité

Gloria Nguena (D)

Travail bâclé. Il n'y a aucun résultat numérique! Le but du Rmd, c'est de garder une trace de ses recherches exploitable par d'autres. Du coup, quand vous me dites "D'ou E(M) = a * (n/n+1)", je n'ai aucun moyen de savoir si vous l'avez pompé sur quelqu'un d'autre où si c'est vraiment le fruit d'une analyse de votre part.

Lisez le corrigé.

  • Q1.1:
  • Q1.2:
  • Q2.3: Votre code est faux car vous ne tirez qu'un seul nombre aléatoire \(A\).
  • Q2.4: inutilisable.
  • Q2.5: non fait.
  • Q3.6: ok
  • Q3.7: ok

Nhat-quang Ho (C/C-)

Il n'y a quasiment aucune explication et vous avez laissé traîner des bouts de codes qui n'ont rien à voir avec ce que je vous demandais (le code de la fonction set.seed, le summary(cars) et le plot du template Rmd à la fin…). J'avais pourtant expliqué que ce n'était pas un devoir de programmation mais un devoir d'analyse…

  • Q1.1:
    • Normalement, \(x\) n'est pas un entier mais un réel tiré uniformément dans \([0,a]\).
    • Bon, j'ai lu votre code. Il y a des chose justes et des choses fausses mais c'est trop long de tout pointer. Lisez le corrigé.
  • Q1.2:
  • Q2.3: l'estimation de la probabilité de gagner est correcte mais il fallait estimer l'espérance du gain.
  • Q2.4:
  • Q2.5:
  • Q3.6:
  • Q3.7: Vous avez écrit a2=runif(2) au lieu de a2=runif(1).

Nicolas Labbe (A/A-)

Bon travail. Code simple qui va a l'essentiel et analyses sensées.

  • Q1.1: Très bien. Effectivement, \(E[M]\) vaut à peu près \(a-a/n\). En fait, \(a-a/(n+1)\) mais au moins vous n'avez pas sorti le \(n+1\) du chapeau. Bien vu pour la variance en \(a^2/n^2\), c'est effectivement le bon ordre de grandeur. Par contre, en ce qui concerne la qualité de l'estimation, la comparaison de \(a\) avec \(n\) n'est pas très importante. Ce qui compte, c'est \(M\) par rapport à \(a\), pas dans l'absolu mais en pourcentage.
  • Q1.2: Très bien.
  • Q2.3: Très bien.
  • Q2.4: Euh… vous avez vraiment écrit:

      for (j in 1:11){
        for (k in 1:11){
          if (a == v[j]) if (m == v[k]) res[j,k] = res[j,k] + 1
        }
      }
    

    Berk. Et sinon v[runif(n,1,ia)], vous êtes sûr ? Parce que runif renvoie un float.

    Votre code est faux, même si je ne sais pas trop où car sa logique m'échappe. Il est faux car quand vous calculez \(P[A|M=0.5]\), en faisant res[,6]/sum(res[,6]) (très bonne façon de faire d'ailleurs) le pic est atteint pour \(a=0.6\) au lieu de \(a=0.5\).

    Du coup, votre analyse est fausse mais elle était sensée.

  • Q2.5: ok. Regardez quand même le corrigé qui va un peu plus loin car d'autres valeurs de \(\alpha\) sont envisagées.
  • Q3.6: ok
  • Q3.7: ok

Otba Zeramdini (A)

Très bon travail. Par contre Vous auriez du sortir tous vos commentaires du code pour qu'ils soient en Markdown. Ça aurait été bien plus agréable à relire et ça ne m'a pas facilité la tâche pour trouver les erreurs. "Heureusement" que j'ai lu celui d'Audin juste après, les (mêmes) problèmes étaient plus apparents.

  • Q1.1: ok. Nickel. Par contre, la courbe de la variance empirique et de la variance théorique sont assez différentes. C'est parce que vous avez écrit return((n*a^2)/((n+2)*(n+1^2))) au lieu de return((n*a^2)/((n+2)*(n+1)^2)).
  • Q1.2: Je ne comprends pas pourquoi vous vous lancez dans ce calcul du risque quadratique. C'est de la variance dont il s'agit, tout simplement, non ? Enfin, OK, non puisque \(M\) est biaisé mais je ne demandais rien d'aussi compliqué. Il suffit de débiaiser \(M\) en le multipliant par \((n+1)/n\) et de voir que la variance de \(M\) est alors bien plus faible que celle de \(M\).
  • Q2.3: très bonne idée d'avoir regardé ce que ça donnait pour d'autres valeurs de \(q\). Ça ne vous choque pas d'avoir une espérance de gain négatif ? Le gain est toujours positif car Bob doit répondre une valeur supérieure à \(M\) et donc \(q\le1\) n'a aucun sens. Et en regardant de plus près, je me suis rendu compte que votre

      a=runif(1)# a correspond au nombre a choisi secrètement et uniformément par Alice dans l'intervalle [0,1].  
    

    était à l'extérieur de la fonction qui calcule l'espérance de gain alors qu'Alice tire un \(a\) au hasard à chaque fois. Là, vous avez juste le gain pour un \(a\) particulier.

  • Q2.4: ok. Par contre, comme répondre \(0.5\) lorsqu'Alice indique \(M=0.5\) ne rapporte aucun gain, ce n'est pas ce qu'il fallait répondre.
  • Q2.5: On ne peut normalement pas répondre de valeur inférieure à \(M\) et regarder \(\alpha\ge 1\) n'a donc aucun sens. Même problème qu'en 2.3 avec le \(a\) qui n'est tiré qu'une seule fois au hasard. Il se trouve que les conclusions générales tiennent toujours mais "c'est un coup de chance".
  • Q3.6: ok
  • Q3.7: non traité

Raphael Audin (A-)

  • Q1.1: ok. Attention pour estimer la variance, il y a bien plus simple (et plus précis):

      fe1<-function(a){
        M=replicate(m2,(max(runif(n)*a)))
        return (var(M))
      }
    
    • Vous comparez la variance empirique pour a=7 avec la variance théorique pour a=5. Normal que ça ne corresponde pas bien alors que les deux devraient être identiques.
    • Je ne demandais pas un calcul compliqué du risque empirique. À partir du moment où deux estimateurs sont non biaisés, on dira que l'un est meilleur que l'autre si sa variance est plus faible et ici la variance de \(M\) est significativement plus faible que celle de \(M'\).
  • Q1.2: OK.
  • Q2.3: Comme pour Zeramdini, bonne idée d'avoir regardé ce qu'il se passait pour différentes valeurs de cstR. Par contre, le gain ne peut être négatif car Bob ne répondra jamais une valeur inférieure \(M\). Regarder ce qu'il se passe pour cstR \(\le1\) n'a aucun sens et ça vous empêche de voir le détail pour les valeurs qui en ont.

    Attention, comme Zeramdini, votre code est faux car vous tirez un seul \(a\) au hasard au début, en dehors de la fonction EG alors qu'Alice tire un nouvel \(a\) à chaque fois.

  • Q2.4: "Erreur dans le sujet". Et alors ? La typo était assez évidente, ce n'était pas une raison pour ne pas traiter cette question.
  • Q2.5: Mêmes problèmes qu'en 2.3:
    • Regarder des valeurs de \(\alpha\ge1\) n'a pas de sens car Bob ne répondra jamais une valeur inférieure à \(M\).
    • Votre code est faux car vous tirez un seul \(a\) au hasard au début, en dehors de la fonction EG2 alors qu'Alice tire un nouvel \(a\) à chaque fois.
  • Q3.6: ok
  • Q3.7: ouh là, c'est pas clair votre truc. Bob ne peut pas répondre en fonction du résultat du lancer de pièce d'Alice.

Rim El Jraidi (C-/D)

Travail bâclé même si les codes que vous écrivez sont justes. Regardez le corrigé.

Remy Palomo (A-)

  • Q1.1:
    • Mais d'où sort ce as.integer ? On s'intéresse à un jeu continu, pas discret.
    • "Empiriquement, on observe que E[M] = a - (a/n)". Ah ? Où ça ?
    • vous ne pouvez pas corriger \(M\) en rajoutant \((a/n)\) puisque justement le but est d'estimer \(a\) que vous ne connaissez pas. Regardez le corrigé.
  • Q1.2:
    • Vous avez fait sauter un \(1/n\) dans le calcul de la variance au tout début (dans \(E[M'²] = (2/n)*sum(E[Xi²])\), vous auriez du écrire \(E[M'²] = (2^2/n^2)*sum(E[Xi²])\). Et le fait que que l'espérance du carré de la somme soit la somme des espérances des carrés n'est pas si évident… C'est dû au fait que les \(X_i\) sont indépendants les uns des autres.
    • Le fait que \(M\) est une variance qui ne diminue pas avec le nombre de \(X_i\) aurait dû vous poser problème (c'est une très mauvaise propriété) et à choisir entre deux estimateurs, je préférerai toujours celui avec la variance la plus faible…
  • Q2.3: ok.
  • Q2.4: le code est correct par contre, si quand \(M=0.5\), la valeur de \(A\) la plus probable est \(0.5\), ce n'est pas ce qu'il faut répondre puisque le gain associé est nul.
  • Q2.5: ok.
    • "Après plusieurs tests, on observe encore une symétrie pour E[G]". Vous êtes sûr ? Une symétrie par rapport à quoi ?
    • Effectivement, le jeu n'est rentable que si peu de \(X_i\) sont tirés. C'est parce qu'il y a alors beaucoup d'incertitude que l'on peut alors exploiter.
  • Q3.6: ok
  • Q3.7: non traité

Remy Ruzafa (B+)

  • Q1.1: ok
    • Quand vous écrivez Eemp= (10/11)*1000, vous confondez empirique et théorique. Celui-ci est théorique.
    • Vous auriez mieux fait de faire une fonction car vous vous êtes trompé parfois:

          E4 = mean(replicate(10000, max(runif(2,0,1000))))
          Eemp4 = (1/2)*1000
      

      Alors que c'est \(2/3\) et pas \(1/2\).

    • Vous dites "Pour la variance selon a et n j'ai d'abord calculé [..]". Où est-ce ?
  • Q1.2: ok.
  • Q2.3: ok.
  • Q2.4: ok.
    • Ceci dit, avec votre façon de faire, la somme des probabilités estimées ne vaut pas 1. Contrairement à ce que vous dites, vous n'avez du coup pas du tout une "estimation de P[A=a|M=0.5]".
    • "et que la valeur la plus optimale de a pour m=0.5 est bien 0.5." Ben non, c'est la plus probable mais pas la plus optimale. En effet, répondre \(0.5\) lorsqu'Alice indique \(M=0.5\) ne rapporte aucun gain.
  • Q2.5: ok
  • Q3.6: ok
  • Q3.7: ok

Romain Pasdeloup (B-)

Vos codes sont corrects mais il y a des concepts que vous n'avez visiblement pas compris. Lisez le corrigé.

  • Q1.1:
    • Quand vous écrivez "E(M)=∑Ni=1max(Xi)N→a", c'est du grand n'importe quoi. Pareil quand vous écrivez "on obtient une approche empirique de la variance" ou "Après calcul de E(M2)E(M2) grâce à la formule de l'intégrale". La "formule de l'intégrale" ? Ça ne veut rien dire.
  • Q1.2: Encore une fois, vos équations, c'est du grand n'importe quoi. Du coup, quand vous dites prétendez avoir obtenu l'expression de la variance de \(M\), vous n'êtes absolument pas crédible.
  • Q2.3: Je voulais une estimation l'espérance de gain sur l'ensemble du jeu, pas une estimation de l'espérance du gain pour différentes réalisations de \(A\).
  • Q2.4: non traité
  • Q2.5: Comme 2.3. D'autre part, il n'y a pas d'analyse.
  • Q3.6: ok
  • Q3.7: ok

Sacha Guyot (A-)

  • Q1.1: ok
    • Très bien d'avoir regardé l'évolution de \(M(n+1)/n\) en fonction de \(n\).
    • Que la variance de \(M\) soit proportionnelle à \(a^2\), c'est évident. Par contre, ce qui est intéressant, c'est la dépendance en \(n\) (\(1/n\)? \(1/n^2\)?).
  • Q1.2:
    • Vous avez inversé vos deux boucles. Du coup, vous ne calculez pas la variance de \(M\) pour un \(n\) donné (ce qui nous intéressait), mais la variance de \(M\) quand $n est choisi uniformément dans \(1:100\).
    • La variance est en \(1/n\).
  • Q2.3:
    • La probabilité de gagner est effectivement très faible quand \(n\) est grand mais comme \(n\) est fixé (à \(10\)), on s'en fiche.
    • Je ne demandais pas de calculer la probabilité de gagner mais l'espérance du gain. Regardez le corrigé.
  • Q2.4:
    • Très bien votre façon de calculez les probabilités (en tous cas, plus efficace que ce que bien d'autres personnes ont fait).
    • En plus vous avez bien normalisé comme il fallait. Nickel.
    • Super votre calcul et représentation du gain. Vous avez bien compris comment ça marchait (vous n'êtes que 2 à l'avoir fait correctement…).
  • Q2.5: parfait.
  • Q3.6: non traité
  • Q3.7: non traité

Samuel Courthial (A/A-)

  • Q1.1: ok mais attention, ce n'est pas comme ça qu'on corrige \(M\) puisqu'on ne connaît pas \(a\).
  • Q1.2: ok. Attention quand vous écrivez "On n’observe pas de réelle corrélation entre E(M') et n". On parle de corrélation entre deux variables aléatoires, pas entre une variable aléatoire et un "paramètre".
  • Q2.3: ok. Très bien.
  • Q2.4: ok. Par contre, pourquoi multipliez vous par 10 dans P2[2,i] = P[i,6] * 10 ? Enfin, même si la \(A=0.5\) est la valeur la plus probable, ce n'est pas la plus optimale puisque ça ne rapporte aucun gain lorsqu'Alice indique \(M=0.5\).
  • Q2.5: ok. Très bien.
  • Q3.6: non traité
  • Q3.7: non traité.

Sebastian Fougere (A/A+)

Bon travail.

  • Q1.1: ok. Très bien. J'aurais bien aimé une évaluation empirique de la variance tant qu'on y était.
  • Q1.2: ok. Très bien. Par contre, la variance n'est évidemment pas nulle puisque vous observez de la variabilité. L'espérance du carré n'est pas le carré de l'espérance…
  • Q2.3: ok.
  • Q2.4: ok. Par contre, si pour \(M=0.5\), la valeur de \(A\) la plus probable est bien \(0.5\), ce n'est pas la plus optimale puisque ça ne rapporte aucun gain.
  • Q2.5: ok
  • Q3.6: ok
  • Q3.7: ok

William Nelson (B-/C)

Code correct mais travail un peu bâclé.

  • Q1.1: Vous dites "Je n’ai pas su trouver empiriquement une formule de l’espérance." Pourquoi ne m'expliquez-vous pas ce que vous avez essayé ? Au delà de pouvoir tout simplement vous aider, mettez vous à ma place. Comment savoir si vous y avez passé deux heures à essayer plein de choses ou si vous avez passé 5 minutes et fait juste "boarf, tant pis" ?
  • Q1.2: Pareil
  • Q2.3: Code correct mais pas assez d'échantillons pour avoir une estimation de qualité.
  • Q2.4: Code correct. Par contre, vous n'avez pas calculé \(P[A|M=0.5]\) mais $P[A,M]. Vous n'avez pas non plus calculé le gain associé et du coup, même si \(A=0.5\) est la valeur la plus probable lorsqu'Alice indique \(M=0.5\), ce n'est pas la réponse optimale puisque ça ne rapporte aucun gain.
  • Q2.5: non traité
  • Q3.6: ok
  • Q3.7: non traité

Tom Graugnard (B-)

Moyen. Revoyez le corrigé.

  • Q1.1
    • Pas de légende sur vos figures, heureusement qu'il y a le code pour comprendre mais ça n'excuse rien.
    • C'est quoi ce mean2[a] = sum(M)*(2/n) ? Vous n'avez pas du tout compris ce que je demandais. Ça ne veut rien dire. \(M'\) est calculé à partir des \(X_i\), pas à partir de \(M\).
    • Les formules de variance sortent du chapeau. Tadaaa!
  • Q1.2: vous n'avez pas compris ce que je demandais.
  • Q2.3: ok, mais pensez-vous vraiment que 100 tirage, ça suffit pour avoir une estimation potable ?
  • Q2.4: code correct mais que calculez vous exactement ? Pas $P[A|M=0.5] visiblement sinon la somme ferait \(1\)… D'autre part, même si \(A=0.5\) est la valeur la plus probable lorsqu'Alice indique \(M=0.5\), ce n'est pas la réponse optimale puisque ça ne rapporte aucun gain.
  • Q2.5: Si vous trouvez que \(0.4\) est une meilleur valeur que \(0.5\), c'est certainement parce que vos estimateurs sont de piètre qualité. Pas moyen pour moi de le savoir car je n'ai pas de trace de ce qui vous a amené à cette conclusion.
  • Q3.6: ok
  • Q3.7: ok