previous up next_inactive
Up: Return to previous menu

Ensait - E1 - Stats/Probas

Corrigé de l'évaluation du 2008-01-23
durée : deux heures

tous documents autorisés
le sujet comporte deux pages

Descriptif du travail demandé

  1. Le document remis se composera de :
    1. Un compte-rendu mathématique, manuscrit, mettant en valeur les résultats obtenus et indiquant les méthodes utilisées.
    2. Ce compte-rendu sera appuyé par des documents imprimés : graphes, listing (scipad), exécutions (scilex). Sur chacun de ces documents, le nom de l'étudiant sera imprimé.
    3. Le document complet sera agrafé et paginé.
  2. Chaque étudiant travaillera de façon isolée (avec le libre accès à ses propres documents). Les feuilles de calcul qui auraient été réalisées en binôme lors d'une séance de TP devront avoir été dupliquées dans les répertoires personnels des étudiants concernés.
  3. Une bonne gestion du temps fait partie des compétences évaluées. Prévoir le temps nécessaire pour les impressions. Imprimer les graphiques au fur et à mesure. Ne pas oublier les sauvegardes en cours de travail.
  4. Il va de soi que tous les problèmes de compte informatique (mots de passe, comptes périmés ou autres problèmes) devront avoir été résolus largement avant l'évaluation.
  5. Mention spéciale pour les étudiants utilisant leur portable personnel pour composer : en cas de problèmes réseau spécifiques aux portables, ces étudiants pourront remettre leurs documents sous forme électronique.
  6. L'attention des étudiants est attirée sur le fait que le trafic réseau de leur ordinateur est susceptible d'être enregistré pendant la durée de l'évaluation.

Remarques du correcteur

  1. Un compte-rendu mathématique manuscrit était demandé. Il semble qu'un certain nombre d'étudiants ont rencontré un problème pour configurer leur stylo à bille.
  2. Un document est destiné à être lu. Si vous pensez que vos résultats ne valent pas la peine d'être rédigés, attendez vous à ce que votre lecteur vous fasse confiance à ce sujet.
  3. Trier les documents remis par question et paginer le tout, améliore le confort du lecteur. Il est bien possible que cela améliore aussi l'évaluation. Ne pas hésiter à faire des couper-coller avec des ciseaux et de la colle.
  4. Utilisez le format NOM Prénom pour identifier votre copie. Imprimez votre nom sur chaque sortie d'ordinateur, en particulier les graphiques.
  5. Ceux qui intitulent leur manuscrit "DS de Scilab" au lieu de "DS de Statistiques" sont assez souvent ceux qui ne savent pas se servir de l'outil scilab (ou d'un autre) pour traiter les questions posées.
  6. Trouvé sur une copie : "Je n'ai pas de calculatrice". Signalons que les boites métalliques posées sur les tables et qui font des bruits de ventilateur ne sont pas seulement des appareils de chauffage.
  7. Enfin, il est anormal d'obtenir un écart-type négatif ou une variance négative et ne pas s'en étonner.
Les notes attribuées vont de 3 à 20, avec une moyenne de 12.5 et un écart-type de 4.

1 Regroupement de deux populations

  1. Copier/coller et exécuter sous scilab les commandes suivantes, en remplaçant ddmmaa par les valeurs telles que dd/mm/19aa soit votre date de naissance :
    grand('setsd', ddmmaa)  
    N1= grand(1,'uin',30,40), N2= grand(1,'uin',40,50)  
    m1= grand(1,'uin',20,24), m2= grand(1,'uin',15,19) 
    s1= grand(1,'uin',10,14), s2= grand(1,'uin',5,9) 
    Ces valeurs sont à utiliser dans la question suivante.
    1. ddmmaa=123456; grand('setsd', ddmmaa); ...  
      printf('N1= %d, m1= %d, s1= %d; N2= %d, m2= %d, s2= %d\n',.. 
      .  N1,m1,s1,N2,m2,s2); 
      donne : 
      N1= 36, m1= 20, s1= 13; N2= 44, m2= 18, s2= 7
    2. Les étudiants utilisant (par exemple) ddmmaa=10041987 sont-ils réellement nés au 192 ème millénaire (de l'Empire Galactique ?).
  2. On mélange deux populations disjointes. L'une se compose de $N_{1}$ individus, ayant une moyenne $m_{1}$ et un écart-type $s_{1}$ et l'autre se compose de $N_{2}$ individus, ayant une moyenne $m_{2}$ et un écart-type $s_{2}$. Déterminer la moyenne et l'écart-type de la population totale.
    1. On passe par l'intermédiaire des grandeurs $\sum x$ et $\sum x^{2}$ qui sont associatives.
      N=N1+N2; 
      m=(N1*m1+N2*m2)/N;  
      tmp=N1*(m1^2+s1^2)+N2*(m2^2+s2^2); s=sqrt(tmp/N-m^2); 
      printf('\n N= %d, m= %f, s= %f\n',N,m,s); 
      donne : 
      N= 80, m= 18.900000, s= 10.197549

2 Usage des tables de la loi normale

Selon la méthode choisie, on indiquera comment utiliser les tables données dans le polycopié ou bien comment utiliser la fonction cdfnor.
  1. Les durées d'un ensemble de processus sont approximativement distribués suivant la loi $Norm\left(90, 12\right)$. Quel est le pourcentage de processus ayant une durée : (a) supérieure à $95$ ; ( b) inférieure à $100$ ; (c) comprise entre $80$ et $110$ ?
    1. On décrit la loi utilisée
      [m,s]=(90,12)
    2. Puis on utilise cdfnor pour obtenir les $Pr\left(X<x\right)$
      x=95; printf('la proportion des x >%3d est: %f\n',.. 
      .   x, 1-cdfnor('PQ',x,m,s))  
      x=100; printf('la proportion des x <%3d est: %f\n',.. 
      .   x, cdfnor('PQ',x,m,s)) 
      x=80; y=110; printf('la prop. des %3d< x <%3d est: %f\n',.. 
      .   x, y, cdfnor('PQ',y,m,s)-cdfnor('PQ',x,m,s)).
    3. On obtient :
      la proportion des x > 95 est: 0.338461  
      la proportion des x <100 est: 0.797672  
      la prop. des 80 < x <110 est: 0.749881
    4. D'où les réponses 34%, 80%, 75%.
    5. Imprimer [p,q]=cdfnor(qsp) ne va pas, sauf à indiquer lequel des deux nombres donne la réponse voulue.
  2. Pour la distribution précédente, trouver $a,  b$, placés symétriquement autour de la moyenne, tels que $Pr\left(x\in\left[a,  b\right]\right)=1/2$.
    1. Cela revient à dire que $Pr\left(X<b\right)=0.75$
    2. a= 81.906123, b= 98.093877
  3. On sait que la variable $X$ suit une loi normale et que $Pr\left(X<9\right)=0.34$ et $Pr\left(16<X\right)=0.47$. Déterminer $\mu$ et $\sigma$.
    1. On en déduit les valeurs réduites
      $z_{1}=IGauss(0.34)\approx-0.4124631$ et $z_{2}=IGauss\left(0.53\right)\approx0.0752699$.
    2. On résoud $\left\{ 9=\mu-0.4125\sigma, 16=\mu+0.0753\sigma\right\} $
    3. Il vient $\sigma\approx14.35$ et $\mu\approx14.92$
    4. Pour ceux qui ont voulu utiliser des matrices :
      prob= [0.34; 1-0.47], mb=[10; 17] 
      z=cdfnor('X', zeros(prob), ones(prob), prob, 1-prob);  
      ma=[z; ones(z)]; tmp=inv(ma)*mb 
      printf('z= [%f, %f], mea= %f, sig=%f\n\n', z(1), z(2), tmp(2), tmp(1))

3 Somme de variables

Le nombre ddmmaa ci-dessous est à personnaliser, de sorte que dd/mm/19yy soit votre date de naissance. On considère deux variables aléatoires indépendantes $X$ et $Y$ distribuées respectivement selon les lois gamma réduites : $Gamma\left(a_{1}=2.2,  b_{1}=1\right)$ et $Gamma\left(a_{2}=2.8,  b_{2}=1\right)$. On s'intéresse à la distribution de la variable $Z=X+Y$.
  1. Rappeler quels sont les paramètres de dispersion d'une variable distribuée selon une loi $Gamma\left(a,  b\right)$.
    1. Les paramètres de dispersion d'une distribution sont la moyenne (espérance) et l'écart-type.
    2. On a $\mathrm{E}\left(X\right)=a  b$ et $\mathrm{var}\left(X\right)=a  b^{2}$
  2. Au cas où $Z$ serait une variable $Gamma\left(a,  b\right)$, déterminer les paramètres correspondants.
    1. On a $\mathrm{E}\left(Z\right)=\mathrm{E}\left(X\right)+\mathrm{E}\left(Y\right)=5.0$ (toujours)
      et $\mathrm{var}\left(Z\right)=\mathrm{var}\left(X\right)+\mathrm{var}\left(Y\right)=5.0$ (indépendance)
    2. Au cas où $Z$ serait une variable gamma, on a nécessairement $a=5.0$ et $b=1$.
    3. D'ailleurs, le cours montre que la somme de deux variables gamma réduites est une variable gamma réduite.
  3. Initialiser à nouveau le générateur aléatoire par la commande
    grand('setsd', ddmmaa) 
    Engendrer $N=1200$ instanciations de $X$, puis $N$ instanciations de $Y$ (consulter l'aide en ligne de grand pour les détails de syntaxe, et utiliser 'gam' avec : shape=$a$, scale=$1/b$). L'aide en ligne indique :
    Y= grand(m,n,'gam',shape,scale) generates random variates from the gamma  
    distribution with parameters shape (real > 0) and scale (real > 0)
  4. Pour chacune des variables $X,  Y,  Z$, tracer l'histogramme des valeurs obtenues (utiliser une répartition en 10 classes). Représenter la moyenne et l'écart-type de ces valeurs.
    1. On réutilise le programme contenu dans stats.sce : 
      curfig=scf(1); clf(); histplot(10, lesx); 
      xtitle(sprintf('X : %d instanciations, loi gamma (%4.2f,1)', N,aa)) 
      curax=gca(); curax.title.font_size=4; curax.sub_ticks=[0,0];
    2. De même pour $Y$ et $Z$.
  5. Sur chacun des graphes, représenter la densité de probabilité de la loi $Gamma\left(a, 1\right)$ correspondante.
    1. Ne pas utiliser la distribution normale (l'exercice a changé...).
    2. deff('y=gax(x)', sprintf('y=x^%f .* exp(-x)*%f', aa-1, 1/gamma(aa) )); 
      xxx=0:0.1:max(lesx); plot2d(xxx, gax(xxx), 5);
    3. On obtient la Figure 1.
    Figure 1: Les X et les Y
    \includegraphics[width=80mm]{lesx-sav} \includegraphics[width=80mm]{lesy-sav}

  6. Utiliser cdfgam (cf. l'aide en ligne) pour déterminer les nombres $z_{0}=0,  z_{1}, \cdots,  z_{9},  z_{10}=+\infty$ tels que $Pr\left(Z\in\left[z_{i},  z_{i+1}\right]\right)=1/10$, avec $\forall i :  z_{i}<z_{i+1}$. Sur un nouveau graphique, tracer l'histogramme théorique de la loi de $Gamma\left(a,  b\right)$ correspondant aux classes $\left[z_{i},  z_{i+1}\right]$ (remplacer $z_{10}$ par une valeur "raisonnable"). Sur ce graphique, superposer l'histogramme des données expérimentales (pour les mêmes classes).

4 Droite de régression affine

  1. Télécharger le fichier http://www.douillet.info/~douillet/cours/stats/datas/football.txt et lire les lignes de ce fichier sous Scilab.
    1. Il faut commencer par indiquer où se trouve le fichier :
      repert='~/docs/Ensait/stats/datas/' 
      fich=repert+"football.txt"
    2. Puis on lit tout en bloc. Ne pas mélanger lecture et interprétation :
      hndl=mopen(fich,'r'); brut=mgetl(hndl); mclose(hndl);
  2. Récupérer les valeurs numériques (attention aux virgules et autres "drames de syntaxe"). Sélectionner les colonnes ht (height=taille) et wt (weight=poids). En cas de "drame non résolu", il est toujours possible de retravailler le fichier de données avec un traitement de texte.
    1. Stratégie générale : remplacer les virgules par des séparateurs.
      tmp=strsubst(brut,',',' '); 
      datas=msscanf(-1, brut(2:$), "%d%s%d%d%s")
    2. Stratégie de repli : procéder aux remplacements dans un traitement de texte avant lecture sous scilab.
    3. Stratégie "glorieuse" : en lisant la doc, on trouvait :
      datas=msscanf(-1, brut(2:$), "%d,%[A-Za-z\-],%d,%d,%[A-Z]")
    4. Autre statégie possible : lire ligne par ligne, en faisant une boucle.
    5. Sélection des bonnes colonnes :
      ht=datas(:,3); wt=datas(:,4);
  3. Calculer les 6 paramètres de dispersion de la distribution $\left(ht,  wt\right)$. Représenter ces points, représenter les moyennes et les écarts-type.
    1. Version élémentaire (celle demandée) : 
      N=size(ht,'*'); mht=mean(ht); vht=mean(ht .^2)-mht^2; 
      mwt=mean(wt); vwt=mean(wt .^2)-mwt^2;  
      cov=mean(ht .* wt) - mwt*mht;  
      printf('N=%d, mht=%f, vht=%f, mwt=%f, vwt=%f, cov=%f\n\n', 
      .   N,mht,vht,mwt,vwt,cov);
    2. Version matricielle : 
      ma=datas(:,[3,4]); mc=center(ma, 'r'); mc'*mc/N 
      mw=wcenter(ma, 'r'); mw'*mw/(N-1)
    3. On trouve :
      N=92, mht=74.206522, vht=7.229088, mwt=231.195652, vwt=1785.657372  
      cov=76.307420
    4. On représente tout cela :
      scf(0); clf(); plot2d(ht,wt,-8) curax=gca(); 
      lesx=curax.data_bounds(:,1); 
      plot2d(lesx,[mwt-sqrt(vwt)*[1;1], mwt+sqrt(vwt)*[1;1]], [2,2]) 
      plot2d((mht-sqrt(vht))*[1,1], curax.data_bounds(:,2), 2) 
      plot2d((mht+sqrt(vht))*[1,1], curax.data_bounds(:,2), 2) 
      curax.sub_ticks=[0,0];
  4. Calculer la droite de régression et le FRV correspondant. Reporter le tout sur le dessin.
    1. La formule est :

      \begin{displaymath}
y_{prev}=\mathrm{E}\left(y\right)+\left(x-\mathrm{E}\left(x\right)\right)\times\frac{cov}{\mathrm{var}\left(x\right)}\end{displaymath}

    2. D'où les commandes :
      deff('y=fun(x)', sprintf('y=%f+(x-%f)*%f',mwt,mht,cov/vht)) 
      frv=1/(1-cov^2/vht/vwt) 
      plot2d(lesx, feval(lesx, fun)+sqrt(vwt/frv), 5) 
      plot2d(lesx, feval(lesx, fun)-sqrt(vwt/frv), 5) 
      xtitle(sprintf('wt versus ht, frv=%f', frv))
    3. On obtient la Figure 2
Figure 2: Football et regression
\includegraphics[height=120mm]{football-sav}


previous up next_inactive
Up: Return to previous menu


douillet@ensait.fr
2008-02-12