Valid XHTML     Valid CSS2    

Listing du fichier intror4.php

 

00001     <?php
00002     #    (gH)   -_-  intror4.php  ;  TimeStamp (unix) : 19 Août 2013 vers 20:20
00003     
00004     error_reporting
(E_ALL E_NOTICE E_STRICT) ;
00005     include("std7.php"
) ;
00006     include("intror_inc.php"
) ;
00007     include_once("../../statuno.php"
) ;
00008     
00009     $numSerie 
;
00010     debutPageExoScr1
($numSerie) ;
00011     
00012     ## -------------------------------------------------------------------------------------------
00013     
00014     sdl
(3) ; echo cmt(' pour afficher toutes les solutions : intror4.php?solutions=1') ; sdl(3) ;
00015     
00016     ## -------------------------------------------------------------------------------------------
00017     
00018     p
("texte") ;
00019     echo "" 
;
00020     finp
() ;
00021     debutSection
("90%") ;
00022     
00023     $tableauDesRubriques 
= array() ;
00024     $idr 
;
00025     $idr
++; $tableauDesRubriques[$idr] = "Rappels sur les indicateurs (moyenne, médiane...) et leur usage " ;
00026     $idr
++; $tableauDesRubriques[$idr] = "Utilisation de $R$Rstudio$Rcmdr et $rkward;
00027     $idr
++; $tableauDesRubriques[$idr] = "Calculs statistiques par série " ;
00028     $idr
++; $tableauDesRubriques[$idr] = "Tris à plat et tris croisés " ;
00029     $idr
++; $tableauDesRubriques[$idr] = "Exemples de régressions (linéaire, logistique...) et d'analyse de variance " ;
00030     $idr
++; $tableauDesRubriques[$idr] = "Exemples de tests statistiques " ;
00031     $idr
++; $tableauDesRubriques[$idr] = "Analyse de données&nbsp;: ".b("ACP").", ".b("AFC")." et ".b("CAH") ;
00032     $idr
++; $tableauDesRubriques[$idr] = "Export de résultats en ".b("PDF")." avec $Sweave;
00033     $idr
++; $tableauDesRubriques[$idr] = "Non présentation (!) du package stats " ;
00034     $tdmCRLM 
= new tdm($tableauDesRubriques) ;
00035     $tdmCRLM
->titre() ;
00036     $tdmCRLM
->menu("oui","oui","nou") ;
00037     
00038     pvide
() ;
00039     
00040     p
() ;
00041      echo "Il est possible d'afficher toutes les solutions via "
.href("intror4.php?solutions=1","?solutions=1","bouton_fin jaune_pastel nou").". " ;
00042     finp
() ;
00043     
00044     finSection
() ;
00045     
00046     debutSection
("90%") ;
00047     $numExo 
;
00048     
00049     ## -------------------------------------------------------------------------------------------
00050     
00051     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # rappels sur les indicateurs (moyenne, médiane...) et leur usage ;
00052     
00053     ## -------------------------------------------------------------------------------------------
00054     
00055     blockquote
() ;
00056     
00057     blockquote
() ;
00058     
00059     p
("texte") ;
00060     echo "Pour calculer la moyenne d'une série de valeurs en 
$R, on utilise la fonction " ;
00061     echo b
("mean()") ;
00062     echo " et pour en calculer la médiane, la fonction " 
;
00063     echo b
("median()").". " ;
00064     echo "Quelle est la différence statistique entre ces deux indicateurs-résumés&nbsp;?" 
;
00065     echo " Pourquoi calcule-t-on en général pour des humains la moyenne de la taille et la médiane des poids&nbsp;?" 
;
00066     echo " Pourquoi le "
.b("minimum")." et le ".b("maximum")." ne sont-ils pas considérés comme des ".em("&laquo;bons&raquo;")." indicateurs statistiques&nbsp;?" ;
00067     finp
() ;
00068     
00069     p
("texte") ;
00070     echo "Comment faire s'il y a des valeurs "
.s_span("NA","grouge")." dans les données&nbsp;? " ;
00071     finp
() ;
00072     
00073     p
("texte") ;
00074     echo " On pourra utiliser comme jeu d'essai le vecteur défini par " 
;
00075     echo b
("v&nbsp;&lt;-&nbsp;c(5,1:8,2,NA,30:50,5)")." avant d'effectuer ces calculs sur des données plus importantes " ;
00076     echo " comme la longueur en résidus (acides aminés) des protéines du dossier " 
;
00077     echo href
("../../Datasets/lea.htm","LEA","grouge").". " ;
00078     finp
() ;
00079     
00080     p
("texte") ;
00081     echo "Y a-t-il des représentations graphiques associées&nbsp;?" 
;
00082     finp
() ;
00083     
00084     finblockquote
() ;
00085     
00086     solution
($numExo,$numSerie) ;
00087     
00088     p
("texte") ;
00089     echo hrrr
("mean","base","Moyenne")." et ".hrrr("median","stats","médiane")." sont des indicateurs-".b("résumés")." de " ;
00090     echo href
("http://fr.wikipedia.org/wiki/Tendance_centrale","tendance centrale","gbleuf nou")." (ou \"centre\"). " ;
00091     echo "La moyenne est sensible aux valeurs extr&ecirc;mes, pas la médiane. Par exemple, une moyenne de salaires est \"biaisée\" " 
;
00092     echo " s'il y a un très gros salaire. Il est conseillé d'utiliser la médiane dès lors que le rapport "
.b("maximum/minimum") ;
00093     echo " dépasse 2 ou 3 et surtout s'il y a un changement d'orde de grandeur. Il est possible de trouver quelqu'un qui fait deux fois " 
;
00094     echo " votre poids (m&ecirc;me si c'est peut &ecirc;tre rare), mais personne ne fait deux fois votre taille, ce qui explique " 
;
00095     echo " la moyenne de la taille et la médiane des poids. " 
;
00096     finp
() ;
00097     
00098     p
("texte") ;
00099     echo " De toutes façons, moyenne et médiane sont inadaptées " 
;
00100     echo " dès que la distribution n'est pas unimodale, comme on peut le voir ci-dessous." 
;
00101     finp
() ;
00102     
00103     entree_R
("bimodal.r") ;
00104     sortie_R
("bimodal_sor.txt") ;
00105     graphique_R_png
("bimodal1.png") ;
00106     graphique_R_png
("bimodal2.png") ;
00107     
00108     $url 
"http://fr.wikipedia.org/wiki/Moyenne#Moyenne_tronqu.C3.A9e_.28ou_.22r.C3.A9duite.22.29" ;
00109     p
("texte") ;
00110     echo "Le "
.b("minimum")." et le ".b("maximum")." ne sont pas robustes car ils ne représent que peu d'".b("individus")." au sens statistique du terme. " ;
00111     echo " Ce ne sont donc pas des bons résumés de l'ensemble des valeurs et une seule valeur très élevée ou très faible faussera la moyenne (donc l'écart-type). " 
;
00112     echo " C'est pourquoi on a parfois recours à la "
.href($url,"moyenne tronquée","grouge")."  obtenue sous R avec le paramètre ".b("trim").". ";
00113     finp
() ;
00114     
00115     p
("texte") ;
00116     echo "S'il y a des valeurs manquantes, on doit utiliser le paramètre "
.b("na.rm=TRUE").", car sinon moyenne et médianes valent aussi ".b("NA").".  ";
00117     echo " Pour enlever les valeurs manquantes, on peut utiliser "
.hrrr("na.fail","stats","na.omit()").". " ;
00118     finp
() ;
00119     
00120     entree_R
("na.r") ;
00121     sortie_R
("na_sor.txt") ;
00122     
00123     p
("texte") ;
00124     echo "Si on passe maintenant aux données proposées, à savoir les longueurs en acides aminés des protéines " 
;
00125     echo href
("http://en.wikipedia.org/wiki/Late_embryogenesis_abundant_proteins","LEA","gvertf") ;
00126     echo " de la base de données " 
;
00127     echo href
("http://forge.info.univ-angers.fr/~gh/Leadb/","LEAdb","gbleuf nou") ;
00128     echo ", un premier calcul aveugle aboutirait à une moyenne un peu surestimée. " 
;
00129     finp
() ;
00130     
00131     entree_R
("leadblng1.r") ;
00132     sortie_R
("leadblng1_sor.txt") ;
00133     graphique_R_png
("leadblng1.png") ;
00134     
00135     p
("texte") ;
00136     echo "Au vu de la distribution et surtout des grandes valeurs extr&ecirc;mes, nous avons décidé de filtrer les longueurs&nbsp;:" 
;
00137     finp
() ;
00138     
00139     entree_R
("leadblng2.r") ;
00140     sortie_R
("leadblng2_sor.txt") ;
00141     graphique_R_png
("leadblng2.png") ;
00142     
00143     p
("texte") ;
00144     echo "Au final, il y a de nombreuses protéines dont la longueur est inférieure à 234 (valeur de q"
.sub("3")."), mais pour savoir si " ;
00145     echo " des longueurs pareilles sont vraiment courantes, c'est une autre histoire&nbsp;!" 
;
00146     echo " Le lecteur ou la lectrice intéréssé(e) par la rédaction associée à ces valeurs pourra consulter la page " 
;
00147     echo href
("../../Bism/bismtd.php?n=1&amp;m=s#redaction","bism[...]redaction")."." ;
00148     finp
() ;
00149     
00150     graphique_R_png
("leadblng3.png") ;
00151     
00152     p
("texte") ;
00153     echo "Les représentations associées aux variables quantitatives en général sont le tracé direct des valeurs quand elles ne sont pas " 
;
00154     echo " trop nombreuses, le boxplot et l'histogramme des classes. Pour la distribution des données, on utilise aussi la droite de " 
;
00155     echo " Henry ou "
.hrrr("qqnorm","stats","qqplot")." qui fournit un test visuel de normalité. " ;
00156     finp
() ;
00157     
00158     finsolution
() ;
00159     
00160     finblockquote
() ;
00161     
00162     ## -------------------------------------------------------------------------------------------
00163     
00164     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Utilisation de R, Rstudio, Rcmdr et rkward
00165     
00166     ## -------------------------------------------------------------------------------------------
00167     
00168     blockquote
() ;
00169     
00170     blockquote
() ;
00171     
00172     p
("texte") ;
00173     echo "Réaliser les calculs et tracer les graphiques de l'exercice précédent avec les 4 interfaces 
$R$Rstudio$Rcmdr et $rkward  " ;
00174     echo " pour les données longueur des protéines dans la " 
;
00175     echo href
("http://forge.info.univ-angers.fr/~gh/Leadb/","LEAdb","gbleuf nou").". " ;
00176     echo " Pour la lecture des données, on pourra charger "
;
00177     echo href
("lea.Rdata").". " ;
00178     finp
() ;
00179     
00180     
00181     p
("texte") ;
00182     echo "Qu'en déduisez-vous sur ces interfaces&nbsp;?" 
;
00183     finp
() ;
00184     
00185     finblockquote
() ;
00186     
00187     solution
($numExo,$numSerie) ;
00188     
00189     h3
($numExo.".1 avec $R \"nu\" ") ;
00190     
00191     p
("texte") ;
00192     echo "L'interface de base 
$R est en général assez frustre, que ce soit avec " ;
00193     echo b
("rterm.exe")." ou ".b("rgui.exe")." sous Windows, " ;
00194     echo b
("R")." ou ".b("R&nbsp;-g&nbsp;Tk&nbsp;&amp;")." sous Linux. " ;
00195     echo " Sous windows, il y a bien des menus, mais aucun ne permet de lire des données autrement qu'en chargeant tout un " 
;
00196     echo " environnement de travail. Dans tous les cas, le plus simple est de taper la commande de chargement des données, à savoir " 
;
00197     echo b
("load(\"lea.Rdata\")")." à moins de préferer la lecture des données sous Internet, avec la fonction classique de R nommée " ;
00198     echo hrrr
("read.table","utils") ;
00199     echo " ou " 
;
00200     echo " notre fonction dédiée "
.href("../statghfns.php?lafns=lit.dar","lit.dar","grouge").". " ;
00201     finp
() ;
00202     
00203     $i1 
"rtermw.png" ;
00204     $i2 
"rgui2.png" ;
00205     $i3 
"rgui3.png" ;
00206     $i4 
"rubuntu3.png" ;
00207     $i5 
"rgtk4.png" ;
00208     table
(0,10) ;
00209      tr
() ;
00210        td
("C","valigntop") ; echo href($i1,img($i1,$i1,300)) ; fintd() ;
00211        td
() ; echo href($i2,img($i2,$i2,300)) ; fintd() ;
00212        td
() ; echo href($i3,img($i3,$i3,200)) ; fintd() ;
00213      fintr
() ;
00214     fintable
() ;
00215     
00216     table
(0,10) ;
00217      tr
() ;
00218        td
() ; echo href($i4,img($i4,$i4,400)) ; fintd() ;
00219        td
() ; nbsp(10) ; fintd() ;
00220        td
() ; echo href($i5,img($i5,$i5,400)) ; fintd() ;
00221      fintr
() ;
00222     fintable
() ;
00223     
00224     sortie_R
("litlea_sor.txt") ;
00225     
00226     p
("texte") ;
00227     echo "Avec "
.s_span("Rgui","grouge").", il est toutefois possible de gérer l'apparence de la fen&ecirc;tre et des menus, des sorties " ;
00228     echo " via le menu "
.b("Edition").", sous-menu ".b("Préférences")."&nbsp;:" ;
00229     finp
() ;
00230     
00231     $i1 
"rgui4.png" ;
00232     table
(0,20) ;
00233      tr
() ;
00234        td
() ; nbsp(7) ; fintd() ;
00235        td
() ; echo href($i1,img($i1,$i1,500)) ; fintd() ;
00236      fintr
() ;
00237     fintable
() ;
00238     
00239     
00240     p
("texte") ;
00241     echo "Ensuite, il faut taper toutes les commandes. Heureusement, la touche "
.b("Tabulation")." fait des merveilles. Ainsi appuyer sur cette touche " ;
00242     echo " juste après le point de "
.b("read.")." affiche toutes les commandes possibles en fonction des packages chargés, appuyer sur cette touche " ;
00243     echo " juste après la parenthèse dans "
.b("read.table(")." affiche tous les paramètres possibles. Merci $R&nbsp;!" ;
00244     finp
() ;
00245     
00246     pre_fichier
("readtab.txt","cadrejaune") ;
00247     
00248     h3
($numExo.".2 avec $Rstudio") ;
00249     
00250     p
("texte") ;
00251     echo "Avant la version 0.95, 
$Rstudio ne fournissait aucune commande pour lire des données, là encore, autrement qu'en chargement un espace de travail. " ;
00252     echo " Les versions récentes ont un menu "
.em("Import Dataset")." dans le panneau ".em("Environment")." qui gère quelques options... " ;
00253     echo " Rstudio fournit un environnement très complet pour taper des commandes et exécuter des programmes. Ainsi, la touche tabulation affiche non " 
;
00254     echo " seulement les commandes mais aussi les paramètres, 
$Rstudio sait fournir le nom des variables pour les listes et dataframes en notation \$. " ;
00255     sdl
() ;
00256     echo 
$Rstudio dispose aussi de nombreuses fen&ecirc;tres qui sont " ;
00257     echo " retaillables, il y a un panneau pour les packages, un explorateur de fichier simplifié, une liste des variables et des fonctions, " 
;
00258     echo " un panneau pour l'historique des commandes, on peut naviguer dans les pages d'aides consultées etc., bref " 
;
00259     echo " il s'agit d'un environnement très complet qui peut m&ecirc;me exécuter 
$Rcmdr." ;
00260     finp
() ;
00261     
00262     $i1 
"rstudio1.png" ;
00263     $i2 
"rstudio2.png" ;
00264     $i3 
"rstudio3.png" ;
00265     $i4 
"rstudio4.png" ;
00266     table
(0,20) ;
00267      tr
() ;
00268        td
() ; echo href($i1,img($i1,$i1,400)) ; fintd() ;
00269        td
() ; echo href($i2,img($i2,$i2,400)) ; fintd() ;
00270      fintr
() ;
00271      tr
() ;
00272        td
() ; echo href($i3,img($i3,$i3,400)) ; fintd() ;
00273        td
() ; echo href($i4,img($i4,$i4,400)) ; fintd() ;
00274      fintr
() ;
00275     fintable
() ;
00276     
00277     p
("texte") ;
00278     echo "Enfin, 
$Rstudio permet de naviguer d'un graphique à l'autre, fournir un zoom, des exports..." ;
00279     finp
() ;
00280     
00281     $i1 
"rstudio5.png" ;
00282     table
(0,20) ;
00283      tr
() ;
00284        td
() ; echo href($i1,img($i1,$i1,600)) ; fintd() ;
00285      fintr
() ;
00286     fintable
() ;
00287     
00288     h3
($numExo.".3 avec $Rcmdr") ;
00289     
00290     p
("texte") ;
00291     echo "Avant de pouvoir utiliser 
$Rcmdr, il faut l'installer via ".b("install.packages(\"Rcmdr\")").". " ;
00292     echo "Pour utiliser 
$Rcmdr, il faut passer par $R \"nu\" ou $Rstudio et là, taper ".b("library(Rcmdr)").". " ;
00293     echo " Dans l'interface qui apparait, on clique sur le menu "
.b("Données")." puis sur ".b("Charger un jeu de données").". " ;
00294     echo " Après avoir sélectionné ou saisi "
.b("lea.Rdata")." cliquer sur ".b("ouvrir")." active le jeu de données chargé." ;
00295     finp
() ;
00296     
00297     $i1 
"rcmd1.png" ;
00298     $i2 
"rcmd2.png" ;
00299     table
(0,20) ;
00300      tr
() ;
00301        td
() ; echo href($i1,img($i1,$i1,400)) ; fintd() ;
00302        td
() ; echo href($i2,img($i2,$i2,400)) ; fintd() ;
00303      fintr
() ;
00304     fintable
() ;
00305     
00306     p
("texte") ;
00307     echo "L'analyse statistique se fait via " 
;
00308     echo " le menu "
.b("Statistiques").", sous-menu ".b("Résumés").", " ;
00309     echo " sous-sous-menu "
.b("Statistiques descriptives").". Après avoir sélectionné ".b("length") ;
00310     echo " dans la liste des variables (onglet Données) et rajouté le coefficient de variation " 
;
00311     echo " (onglet Statistiques), il suffit de cliquer sur "
.b("Ok")." pour voir les indicateurs statistiques demandés dans la sortie courante de $R. " ;
00312     finp
() ;
00313     
00314     $i1 
"rcmd3.png" ;
00315     $i2 
"rcmd4.png" ;
00316     $i3 
"rcmd5.png" ;
00317     table
(0,20) ;
00318      tr
() ;
00319        td
() ; echo href($i1,img($i1,$i1,300)) ; fintd() ;
00320        td
() ; echo href($i2,img($i2,$i2,300)) ; fintd() ;
00321        td
() ; echo href($i3,img($i3,$i3,300)) ; fintd() ;
00322      fintr
() ;
00323     fintable
() ;
00324     
00325     p
("texte") ;
00326     echo "Pour tracer l'histogramme, le box plot (nommé ici "
.b("Boite de dispersion")."), il suffit de passer par le " ;
00327     echo " le menu "
.b("Graphes").". On en profitera pour regarder à chaque fois les ".b("options")." proposées." ;
00328     finp
() ;
00329     
00330     $i1 
"rcmd6.png" ;
00331     table
(0,20) ;
00332      tr
() ;
00333        td
() ; nbsp(7) ; fintd() ;
00334        td
() ; echo href($i1,img($i1,$i1,500)) ; fintd() ;
00335      fintr
() ;
00336     fintable
() ;
00337     
00338     p
("texte") ;
00339     echo "Une fois les calculs et graphiques effectués, on quitte Rcmdr via le menu "
.b("Fichier") ;
00340     echo " sous-menu "
.b("Sortir")."&nbsp;; il est alors possible de sauvegarder les commandes, les résultats... " ;
00341     finp
() ;
00342     
00343     $i1 
"rcmd7.png" ;
00344     $i2 
"rcmd8.png" ;
00345     table
(0,20) ;
00346      tr
() ;
00347        td
() ; echo href($i1,img($i1,$i1,400)) ; fintd() ;
00348        td
() ; echo href($i2,img($i2,$i2,400)) ; fintd() ;
00349      fintr
() ;
00350     fintable
() ;
00351     
00352     h3
($numExo.".4 avec $rkward") ;
00353     
00354     p
("texte") ;
00355     echo "Si 
$rkward est un exécutable qui s'exécute hors de $R ou de $Rstudio, " ;
00356     echo " son fonctionnement est assez similaire dans le principe à 
$Rcmdr. Pour charger le fichier " ;
00357     echo b
("lea.Rdata").", il faut passer par " ;
00358     echo " le menu "
.b("Fichier").", sous-menu ".b("Importer") ;
00359     echo ", sous-sous-menu "
.b("Load R datafile")." (tiens, un partie de menu non traduite&nbsp;!), pour réaliser l'analyse statistique, il faut " ;
00360     echo " utiliser le menu "
.b("Analysis").", sous-menu ".b("Descriptive Statistics").", on s'en serait douté..." ;
00361     finp
() ;
00362     
00363     $i1 
"rkward1.png" ;
00364     $i2 
"rkward2.png" ;
00365     $i3 
"rkward3.png" ;
00366     $i4 
"rkward4.png" ;
00367     $i5 
"rkward5.png" ;
00368     $i6 
"rkward6.png" ;
00369     table
(0,10) ;
00370      tr
() ;
00371        td
("C","valigntop") ; echo href($i1,img($i1,$i1,300)) ; fintd() ;
00372        td
("C") ; echo href($i2,img($i2,$i2,300)) ; fintd() ;
00373      fintr
() ;
00374      tr
() ;
00375        td
("C") ; echo href($i3,img($i3,$i3,200)) ; fintd() ;
00376        td
("C") ; echo href($i4,img($i4,$i4,400)) ; fintd() ;
00377      fintr
() ;
00378      tr
() ;
00379        td
("C") ; echo href($i5,img($i5,$i5,400)) ; fintd() ;
00380        td
("C") ; echo href($i6,img($i6,$i6,400)) ; fintd() ;
00381      fintr
() ;
00382     fintable
() ;
00383     
00384     h3
($numExo.".5 discussion des interfaces") ;
00385     
00386     p
("texte") ;
00387     echo "L'interface de 
$R est sans doute trop minimaliste pour convenir à une utilisation courante, sauf si on possède de grands écrans et si " ;
00388     echo " maitrise bien les commandes et fonctions de 
$R. " ;
00389     echo href
("http://www.rstudio.com/ide/docs/","Rstudio","gvert") ;
00390     echo " parait, à l'usage, sans doute le meilleur compromis entre le choix des commandes et l'aide aux " 
;
00391     echo " t&acirc;ches usuelles de visualisation, sauvegarde, mise en forme." 
;
00392     finp
() ;
00393     
00394     p
("texte") ;
00395     echo href
("http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/","Rcmdr","grouge") ;
00396     echo " est très intéressant "
.b("en initiation")." et pour découvrir des options, des commandes, une certaine façon de faire, notamment pour la " ;
00397     echo " modélisation. 
$Rcmdr dispose de nombreux " ;
00398     echo href
("http://www.rcommander.com/","plugins") ;
00399     echo ", mais 
$rkward est sans doute plus complet au niveau des menus et des possibilités. " ;
00400     echo " Malheureusement pour de nombreux utilisateurs français tout n'est pas traduit pour 
$rkward et, de plus, ce qui est source de difficulté, $rkward " ;
00401     echo" requiert une installation à part de 
$R." ;
00402     finp
() ;
00403     
00404     p
("texte") ;
00405     echo href
("http://socserv.mcmaster.ca/jfox/Misc/Rcmdr/","Rcmdr","grouge") ;
00406     echo " est suffisamment connu et utilisé pour qu'on trouve de nombreuses " 
;
00407     #echo href("http://www.wlu.ca/documents/42689/Introduction_to_R_and_R_Commander.pdf","aides")." sur le Web " ;
00408     echo 
href("https://cran.r-project.org/doc/contrib/Karp-Rcommander-intro.pdf","aides")." sur le Web " ;
00409     echo " y compris " 
;
00410     echo href
("http://cognition.ups-tlse.fr/_christian/poly/stats/TP-BS15M-Rcmdr.pdf","en français","gvert").", et il y a " ;
00411     echo " m&ecirc;me des " 
;
00412     echo href
("http://people.ysu.edu/~gchang/r/R_Instructions.htm","vidéos","gvert")." pour apprendre à s'en servir. " ;
00413     sdl
() ;
00414     echo " Par contre, en 2013, " 
;
00415     echo " le "
.href("http://en.wikipedia.org/wiki/R_Commander","wiki associé")." est presque vide. " ;
00416     echo " C'est aussi le cas pour le cas du "
.href("http://fr.wikipedia.org/wiki/RKWard","wiki de rkward","gvert").". " ;
00417     echo " A propos, que pensez-vous du "
.href("http://fr.wikipedia.org/wiki/R_%28logiciel%29","wiki français","grert")." pour $R " ;
00418     echo " par rapport au "
.href("http://en.wikipedia.org/wiki/R_%28programming_language%29","wiki anglais","grouge")."&nbsp;?" ;
00419     finp
() ;
00420     
00421     finsolution
() ;
00422     
00423     finblockquote
() ;
00424     
00425     ## -------------------------------------------------------------------------------------------
00426     
00427     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Calculs statistiques par série, par groupes
00428     
00429     ## -------------------------------------------------------------------------------------------
00430     
00431     blockquote
() ;
00432     
00433     blockquote
() ;
00434     
00435     p
("texte") ;
00436     echo "Comment calculer les moyennes des colonnes d'un "
.em("data frame")."&nbsp;? Et leurs médianes&nbsp;?" ;
00437     finp
() ;
00438     
00439     p
("texte") ;
00440     echo " Comment rajouter ces informations en bas du  "
.em("data frame")."&nbsp;?" ;
00441     finp
() ;
00442     
00443     p
("texte") ;
00444     echo "Comme données d'essai, on pourra utiliser les variables de "
.b("prix")." par année " ;
00445     echo " dans le dossier " 
;
00446     echo href
("../../Datasets/logement.htm","LOGEMENT","grouge").". " ;
00447     finp
() ;
00448     
00449     p
("texte") ;
00450     echo "Comment calculer des moyennes par classe, par exemple des moyennes d'ages par sexe " 
;
00451     echo " dans le dossier " 
;
00452     echo href
("../../Datasets/her.htm","HER","grouge") ;
00453     echo "&nbsp;?" 
;
00454     finp
() ;
00455     
00456     p
("texte") ;
00457     echo "Y a-t-il des représentations graphiques associées&nbsp;?" 
;
00458     finp
() ;
00459     
00460     finblockquote
() ;
00461     
00462     solution
($numExo,$numSerie) ;
00463     
00464     p
("texte") ;
00465     echo "Il est très facile de calculer les moyennes par colonne puisqu'il existe en 
$R une fonction " ;
00466     echo hrrr
("colSums","base","colMeans()").". Par contre, et c'est à peine plus difficile, il faut passer " ;
00467     echo " par "
.hrrr("apply")." pour calculer les médianes par colonne. Ensuite, on utilise " ;
00468     echo hrrr
("cbind","base","rbind()")." pour ajouter ces informations comme lignes supplémentaires des données." ;
00469     finp
() ;
00470     
00471     entree_R
("calcpcol.r") ;
00472     sortie_R
("calcpcol_sor.txt") ;
00473     
00474     p
("texte") ;
00475     echo "On associe classiquement les boxplots aux calculs pour des variables quantitatives." 
;
00476     finp
() ;
00477     
00478     entree_R
("loge.r") ;
00479     graphique_R_png
("loge.png",600) ;
00480     
00481     p
("texte") ;
00482     echo "Il est beaucoup moins fréquent (et non prévu par 
$R) d'afficher les moyennes et leurs intervalles de confiance, mais " ;
00483     echo " avec quelques connaissances en 
$R, il est possible de les afficher à coté des boxplots&nbsp;:" ;
00484     finp
() ;
00485     
00486     entree_R
("loge2.r") ;
00487     graphique_R_png
("loge2.png",600) ;
00488     
00489     p
("texte") ;
00490     echo "Pour tracer des boxplots sur des sous-groupes, on utilise la notation ~ (tilde), qui se lit "
.b("en fonction de").". " ;
00491     echo " Nous montrons aussi comment calculer par sous-groupe&nbsp;:" 
;
00492     finp
() ;
00493     
00494     entree_R
("herage.r") ;
00495     sortie_R
("herage_sor.txt") ;
00496     graphique_R_png
("herage.png",600) ;
00497     graphique_R_png
("herage2.png",600) ;
00498     
00499     # vioplot age~sexe ?
00500     # lattice vioplot
00501     # ggplot2 vioplot ?
00502     
00503     finsolution
() ;
00504     
00505     finblockquote
() ;
00506     
00507     ## -------------------------------------------------------------------------------------------
00508     
00509     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Tris à plat et tris croisés ;
00510     
00511     ## -------------------------------------------------------------------------------------------
00512     
00513     blockquote
() ;
00514     
00515     blockquote
() ;
00516     
00517     p
("texte") ;
00518     echo "Qu'est-ce qu'un tri à plat&nbsp;? Et un tri croisé&nbsp;?" 
;
00519     echo " Comment les calculer en 
$R&nbsp;?" ;
00520     finp
() ;
00521     
00522     p
("texte") ;
00523     echo "Y a-t-il des représentations graphiques associées&nbsp;?" 
;
00524     finp
() ;
00525     
00526     p
("texte") ;
00527     echo "Comment ajouter des marges à un tableau de comptages,  à un tableau de fréquences&nbsp;?" 
;
00528     finp
() ;
00529     
00530     
00531     p
("texte") ;
00532     echo "Comme données d'essai, on pourra utiliser les variables "
.b("survie")." et ".b("classe") ;
00533     echo " du dossier " 
;
00534     echo href
("../../Datasets/titanic.htm","TITANIC","grouge").". " ;
00535     finp
() ;
00536     
00537     finblockquote
() ;
00538     
00539     solution
($numExo,$numSerie) ;
00540     
00541     p
("texte") ;
00542     echo "Un tri à plat est l'analyse classique d'une variable qualitative. Il est d'usage d'afficher les pourcentages " 
;
00543     echo " plut&ocirc;t que les comptages pour faciliter la comparaison des  variables qualitatives et d'ordonner les résultats " 
;
00544     echo " par fréquence décroissante pour faire ressortir les modalités les plus importantes." 
;
00545     echo " Un tri croisé est l'analyse des croisements des modalités de deux variables qualitatives. Plusieurs tableaux relatifs sont " 
;
00546     echo " possibles (pourcentages par rapport à la ligne, la colonne, le total général)." 
;
00547     finp
() ;
00548     
00549     entree_R
("titanic.r") ;
00550     sortie_R
("titanic_sor.txt") ;
00551     graphiques_R_png
("titanic1.png","titanic2.png") ;
00552     
00553     
00554     p
("texte") ;
00555     echo "Comme nous l'avions dit dans la séance précédente, les graphiques associés aux tris à plat sont les " 
;
00556     echo b
("histogrammes de fréquences")." que l'on trace en $R via ".hrrr("barplot","graphics")." pour les pourcentages, car " ;
00557     echo " sinon on risque d'induire en erreur toute personne qui ne fait pas attention aux axes. " 
;
00558     echo " Pour les tris croisés, il est conseillé de tracer un \"barplot\" non empilé à l'aide du paramètre "
.b("beside") ;
00559     echo " et de ne retenir éventuellement, parmi les deux barplots possibles, que celui qui montre des informations " 
;
00560     echo " différentes des tris à plat." 
;
00561     finp
() ;
00562     
00563     
00564     p
("texte") ;
00565     echo "Nos fonctions " 
;
00566     echo href
("../statghfns.php?lafns=triAplat","triAplat()","grouge")." et " ;
00567     echo href
("../statghfns.php?lafns=triCroise","triCroise()","grouge")." automatisent bien s&ucirc;r ces calculs et tracés. " ;
00568     finp
() ;
00569     
00570     entree_R
("elfql.r") ;
00571     sortie_R
("elfql_sor.txt") ;
00572     graphique_R_png
("elfql.png",500) ;
00573     
00574     finsolution
() ;
00575     
00576     finblockquote
() ;
00577     
00578     ## -------------------------------------------------------------------------------------------
00579     
00580     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Exemples de régressions (linéaire, logistique...) et d'analyse de variance ;
00581     
00582     ## -------------------------------------------------------------------------------------------
00583     
00584     blockquote
() ;
00585     
00586     blockquote
() ;
00587     
00588     p
("texte") ;
00589     echo "Rappeler la différence entre régression linéaire et régression logistique, entre régression simple et régression multiple." 
;
00590     finp
() ;
00591     
00592     p
("texte") ;
00593     echo "Modéliser par une relation linéaire la dépendance entre la variable consommation d'essence et la variable distance parcourue " 
;
00594     echo " dans le jeu de données "
.href("km.dar").". " ;
00595     echo "Y a-t-il des représentations graphiques associées&nbsp;?" 
;
00596     echo " Pourquoi y a-t-il 4 graphiques produits avec "
.b("plot(lm(modele))")." alors qu'on pourrait en avoir 6&nbsp;?" ;
00597     finp
() ;
00598     
00599     $i 
"plotlm.png" ;
00600     
00601     blockquote
() ;
00602     p
() ;
00603     echo href
($i,imgh($i,"plotlm",500)) ;
00604     finp
() ;
00605     finblockquote
() ;
00606     
00607     p
("texte") ;
00608     echo " Faut-il envisager une relation de causalité&nbsp;?" 
;
00609     echo " Quelles sont les valeurs prédites par le modèle pour "
.b("100")." et ".b("250")." km &nbsp;?" ;
00610     finp
() ;
00611     
00612     p
("texte") ;
00613     echo "Peut-on prédire l'appartenance d'une personne au groupe à partir de sa taille, par exemple 166&nbsp;cm, dans les données "
.href("pg.dar")."&nbsp;?" ;
00614     finp
() ;
00615     
00616     p
("texte") ;
00617     echo "Peut-on prédire le sexe d'une personne à partir de son age, par exemple 50 ans, dans le dossier " 
;
00618     echo href
("../../Datasets/elf.htm","ELF","gbleuf")."&nbsp;?" ;
00619     finp
() ;
00620     
00621     p
("texte") ;
00622     echo "Comparer les ages entre les hommes et les femmes dans ce m&ecirc;me dossier. On utilisera un seuil &alpha; de première espèce de 5&nbsp;%." 
;
00623     finp
() ;
00624     
00625     p
("texte") ;
00626     echo "Y a-t-il des représentations graphiques associées&nbsp;?" 
;
00627     finp
() ;
00628     
00629     p
("texte") ;
00630     echo "Y a-t-il des rapports entre régression linéaire et analyse de la variance&nbsp;?" 
;
00631     finp
() ;
00632     
00633     p
("texte") ;
00634     echo "Quelles sont les différences entre régression et corrélation&nbsp;?" 
;
00635     finp
() ;
00636     
00637     finblockquote
() ;
00638     
00639     solution
($numExo,$numSerie) ;
00640     
00641     
00642     p
("texte") ;
00643     echo "Sur les notions de régression linéaire et logistique, de régression simple et multiple, voir " 
;
00644     echo " la "
.href("../Eda/eda2crs.php?n=1&amp;m=s","solution")." de " ;
00645     echo " l' "
.href("../Eda/eda2crs.php?n=1&amp;m=e","exercice&nbsp;1")." de mon " ;
00646     echo " "
.href("../Eda/eda2.php?n=1&amp;m=e","cours de niveau 2") ;
00647     echo " à l'école doctorale." 
;
00648     finp
() ;
00649     
00650     h3
($numExo.".1 régression linéaire") ;
00651     
00652     p
("texte") ;
00653     echo "Pour définir un modèle linéaire avec 
$R, il faut utiliser la fonction " ;
00654     echo hrrr
("lm","stats")." et la droite correspondante se trace directement avec " ;
00655     echo hrrr
("abline","graphics").". Pour afficher le modèle, on peut utiliser les fonctions génériques " ;
00656     echo hrrr
("summary","base")." et " ;
00657     echo hrrr
("coef","stats").". " ;
00658     finp
() ;
00659     
00660     entree_R
("km.r") ;
00661     sortie_R
("km_sor.txt") ;
00662     graphique_R_png
("km.png",500) ;
00663     
00664     p
("texte") ;
00665     echo "Dans la mesure où un modèle linéaire est [presque] toujours calculable, il faut savoir si le modélisation est significativement non nulle, c'est-à-dire " 
;
00666     echo " si on peut accepter le modèle. Pour cela, il est d'usage d'utiliser le test de Fisher (de l'analyse de la variance) appliqué au modèle, et ensuite de regarder le coefficient " 
;
00667     echo " de corrélation linéaire. Il ne faut pas accorder une confiance aveugle à ces tests, qui peuvent &ecirc;tre mis en défaut notamment pour de petits " 
;
00668     echo " échantillons, comme le montre le fameux jeu de données "
.href("../../Datasets/anscombe.htm","anscombe").". " ;
00669     echo " On doit donc systématiquement réaliser une "
.b("analyse des résidus").", ce qui peut souvent se réduire à des tracés diagnostics." ;
00670     echo " C'est ce qui explique que R fournit 6 tracés (dont 4 seulement par défaut, repérés ci-dessous par une étoile) pour "
.b("plot.lm(modele)")." qui est équivalent à ".b("plot(lm(modele))").". " ;
00671     finp
() ;
00672     
00673     blockquote
() ;
00674     table
(1,"3","collapse") ;
00675        num_stat_Et_R
("  "," x "," y ") ;
00676        num_stat_Et_R
(1,"* Fitted values","Residuals") ;
00677        num_stat_Et_R
(2,"* Theoretical quantiles","Standardized residuals") ;
00678        num_stat_Et_R
(3,"* Fitted values","Root of standardized residuals") ;
00679        num_stat_Et_R
(4,"&nbsp;&nbsp;Observation number","Cook's distance") ;
00680        num_stat_Et_R
(5,"* Leverage","Standardized residuals") ;
00681        num_stat_Et_R
(6,"&nbsp;&nbsp;Leverage h<sub>n</sub>","Cook's distance") ;
00682     fintable
() ;
00683     finblockquote
() ;
00684     
00685     entree_R
("anscombe.r") ;
00686     sortie_R
("anscombe_sor.txt") ;
00687     graphique_R_png
("../../Datasets/anscombe.gif",500) ;
00688     graphique_R_png
("anscres.png",500) ;
00689     
00690     p
("texte") ;
00691     echo "On consultera la page du wiki " 
;
00692     echo href
("http://fr.wikipedia.org/wiki/Quartet_d%27Anscombe","Anscombe") ;
00693     echo " pour plus d'information et on pourra lire la "
.hrrr("anscombe","datasets","page d'aide associée") ;
00694     echo " au jeu de données "
.b("anscombe")." du package ".hrrp("datasets").", aide disponible par " ;
00695     echo b
("help(anscombe)")." sous $R, le tracé étant affiché par " ;
00696     echo b
("example(anscombe)").". " ;
00697     finp
() ;
00698     
00699     p
("texte") ;
00700     echo "Une fois le modèle déterminé puis validé, il est possible d'utiliser la fonction générique " 
;
00701     echo hrrr
("predict","stats")." ou directement la fonction " ;
00702     echo hrrr
("predict.lm","stats")." pour appliquer le modèle à de nouvelles données. La seule précaution est qu'il faut utiliser " ;
00703     echo " un "
.em("data frame")." avec les m&ecirc;mes noms de variables pour que $R soit capable de réaliser les calculs. " ;
00704     echo 
$R permet aussi de calculer les intervalles de confiance pour les coefficients du modèle et pour les valeurs utilisées." ;
00705     finp
() ;
00706     
00707     entree_R
("km_pred.r") ;
00708     sortie_R
("km_pred_sor.txt") ;
00709     graphique_R_png
("kmpred1.png",500) ;
00710     graphique_R_png
("kmpred2.png",500) ;
00711     
00712     p
("texte") ;
00713     echo "La causalité est une notion "
.b("extra-statistique")." et aucun calcul ne permet de savoir si x est une cause et y un effet, puisque les calculs " ;
00714     echo " basés sur la corrélation sont symétriques&nbsp;: "
.b("&rho;(x,y)=&rho;(y,x)").". Toutefois ici la distance doit sans doute pouvoir &ecirc;tre considérée " ;
00715     echo " comme une cause directe de la consommation en essence." 
;
00716     finp
() ;
00717     
00718     h3
($numExo.".2 régression logistique") ;
00719     
00720     p
("texte") ;
00721     echo "Prédire le code-sexe d'une personne ou le numéro 0 ou 1 d'un groupe implique de modéliser un résultat binaire, ce que ne peut pas faire une régression linéaire dont le résultat est non borné.   " 
;
00722     echo " Il est usuel d'utiliser une fonction qui varie de 0 à 1 et de choisir un seuil pour prédire une variable binaire. Sous R, cela se fait avec " 
;
00723     echo hrrr
("glm","stats")." au lieu de "  ;
00724     echo hrrr
("lm","stats").". On peut alors utiliser les fonctions génériques comme ".b("coef()").", ".b("predict()")."..." ;
00725     finp
() ;
00726     
00727     entree_R
("pgpred.r") ;
00728     sortie_R
("pgpred_sor.txt") ;
00729     graphique_R_png
("pgpred.png",500) ;
00730     
00731     p
("texte") ;
00732     echo "La qualité d'un modèle logistique peut &ecirc;tre appréciée via l'aire sous la courbe ou " 
;
00733     echo href
("http://en.wikipedia.org/wiki/Receiver_operating_characteristic","AUC") ;
00734     echo " ou " 
;
00735     sdl
() ;
00736     echo href
("http://fr.wikipedia.org/wiki/Receiver_Operating_Characteristic","AUROC").". " ;
00737     echo " Pour la modélisation du GROUPE en fonction de la taille, l'AUROC vaut 0,95&nbsp; le modèle est un bon modèle. " 
;
00738     echo " Par contre pour la modélisation du SEXE en fonction de l'AGE, l'AUROC vaut 0,35 et il s'agit donc d'un \"très mauvais\" modèle, " 
;
00739     echo" choisir le code SEXE au hasard donnerait de meilleurs résultats&nbsp;!" 
;
00740     finp
() ;
00741     
00742     entree_R
("elfpredsexe.r") ;
00743     sortie_R
("elfpredsexe_sor.txt") ;
00744     
00745     h3
($numExo.".3 analyse de la variance") ;
00746     
00747     p
("texte") ;
00748     echo "Sur les liens entre régression linéaire, corrélation et analyse de la variance, voir " 
;
00749     echo " la "
.href("../Eda/eda2crs.php?n=1&amp;m=s","solution")." de " ;
00750     echo " l' "
.href("../Eda/eda2crs.php?n=1&amp;m=e","exercice&nbsp;3")." de mon " ;
00751     echo " "
.href("../Eda/eda2.php?n=1&amp;m=e","cours de niveau 2") ;
00752     echo " à l'école doctorale." 
;
00753     finp
() ;
00754     
00755     p
("texte") ;
00756     echo "Un bon manuel de cours sur ce sujet est nommé "
.b("le modèle linéaire par l'exemple") ;
00757     echo " On peut le télécharger à l'adresse " 
;
00758     echo href
("http://www.math.univ-toulouse.fr/~azais/styles/other/student/modlin.pdf","modlin") ;
00759     echo " ("
.href("modlin.pdf","copie locale").")&nbsp;" ;
00760     echo " Les formules présentées sont appliquées avec divers logiciels dont R dans l'ouvrage " 
;
00761     echo href
("http://http://www.math.u-psud.fr/~stafav/IMG/pdf/modlin4bis.pdf","modlin4bis") ;
00762     echo " ("
.href("modlin4bis.pdf","copie locale").")." ;
00763     finp
() ;
00764     
00765     p
("texte") ;
00766     echo "Voici, sans explication (c'est volontaire) mais avec les résultats et les graphiques, " 
;
00767     echo " la comparaison de l'age des hommes et des femmes dans le dossier " 
;
00768     echo href
("../../Datasets/elf.htm","ELF","gbleuf").". " ;
00769     
00770     finp
() ;
00771     
00772     entree_R
("elfages.r") ; # utiliser elfages2.r pour regénérer les graphiques
00773     sortie_R
("elfages_sor.txt") ;
00774     
00775     graphique_R_png
("elfage.png",500) ;
00776     graphique_R_png
("elfsexe.png",500) ;
00777     graphique_R_png
("elfsexe1.png",500) ;
00778     graphique_R_png
("elfsexe2.png",500) ;
00779     graphique_R_png
("elfagesexe.png",500) ;
00780     
00781     finsolution
() ;
00782     
00783     finblockquote
() ;
00784     
00785     ## -------------------------------------------------------------------------------------------
00786     
00787     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Exemples de tests statistiques
00788     
00789     ## -------------------------------------------------------------------------------------------
00790     
00791     blockquote
() ;
00792     
00793     blockquote
() ;
00794     
00795     $a 
"http://perso-out.curie.fr/Gael.Millot/Publications_livre.htm" ;
00796     $b 
"Comprendre et réaliser les tests statistiques à l'aide de $R;
00797     table
() ;
00798     
00799     tr
() ;
00800     td
() ;
00801     blockquote
() ;
00802     p
() ;
00803     echo href
($a,imgh("millot.gif","millot",200)) ;
00804     finp
() ;
00805     finblockquote
() ;
00806     fintd
() ;
00807     td
() ;
00808     p
("texte") ;
00809     echo "Qu'est-ce qu'un test statistique&nbsp;?" 
;
00810     finp
() ;
00811     
00812     p
("texte") ;
00813     echo "Quels sont les principaux tests disponibles sous 
$R&nbsp;?" ;
00814     finp
() ;
00815     
00816     p
("texte") ;
00817     echo "Y a-t-il des représentations graphiques associées&nbsp;?" 
;
00818     finp
() ;
00819     
00820     p
("texte") ;
00821     echo "Combien y a-t-il de pages dans l'ouvrage " 
;
00822     echo s_span
($b,"gvertf")." de G. MILLOT&nbsp;?" ;
00823     finp
() ;
00824     
00825     p
("texte") ;
00826      echo "Qu'est-ce qu'un test "
.em("t")."&nbsp;?" ;
00827      echo " Que peut-on déduire d'un calcul fait avec la fonction "
.hrrr("t.test","stats")."&nbsp;?" ;
00828     finp
() ;
00829     
00830     fintd
() ;
00831     fintr
() ;
00832     
00833     fintable
() ;
00834     
00835     finblockquote
() ;
00836     
00837     solution
($numExo,$numSerie) ;
00838     
00839     p
("texte") ;
00840     echo "Un test statistique est une procédure complexe qui part d'une hypothèse-métier pour aboutir au rejet ou au non rejet d'une hypothèse " 
;
00841     echo " dite nulle, pour un certain risque [de se tromper], qui s'accompagne d'une phrase de conclusion comme " 
;
00842     echo em
("il n'y pas de différence significative au seuil choisi").". Entre ces deux extr&ecirc;mes, il y a un certain nombres d'opérations techniques, " ;
00843     echo " comme le choix du test en fonction de la taille et de la normalité des données, la modélisation probabiliste du test, la vérification " 
;
00844     echo " de son application, le choix de la bilatéralité ou non, etc. " 
;
00845     finp
() ;
00846     
00847     p
("texte") ;
00848     echo "Pour les &laquo;singes savants&raquo;, on applique une fonction qui se termine par .test() à des données et on est content si p est inférieur à 0,05." 
;
00849     finp
() ;
00850     
00851     p
("texte") ;
00852     echo "Pour une présentation plus complète, nous renvoyons à notre "
.href("../testscompar.htm","page officielle sur les tests")."." ;
00853     finp
() ;
00854     
00855     p
("texte") ;
00856     echo "Il y a une trentaine de tests disponibles dans le package "
.hrrp("stats").". En voici la liste&nbsp;:" ;
00857     finp
() ;
00858     
00859     pre_fichier
("test_stats.txt","cadre") ;
00860     
00861     p
("texte") ;
00862     echo "De nombreux autres packages contiennent aussi des tests et il n'est donc pas simple de tous les connaitre, sachant que connaitre un test ne " 
;
00863     echo " signifie pas juste connaitre son nom et la liste de ses paramètres." 
;
00864     finp
() ;
00865     
00866     p
("texte") ;
00867     echo "Il y a parfois des représentations graphiques associées, comme la droite de Henry ou les boxplots à encoche, mais ce n'est pas forcément le " 
;
00868     echo" cas de tous les tests. De plus ces représentations ne sont que des aides à la compréhension..." 
;
00869     finp
() ;
00870     
00871     
00872     p
("texte") ;
00873     echo "Le &laquo;gros pavé&raquo; de G. Millot est un ouvrage "
.em("en français")." d'environ 700 pages dédiés aux tests usuels de $R. " ;
00874     echo " C'est un bon ouvrage qui fournit une présentation de 
$R, des rappels probabilistes et statistiques, des exemples détaillés. " ;
00875     echo " Nous conseillons sa lecture." 
;
00876     finp
() ;
00877     
00878     p
("texte") ;
00879     echo " Comme son nom l'indique, " 
;
00880     echo " le test "
.em("t")." fourni par la fonction ".hrrr("t.test","stats")." de $R permet d'effectuer des tests ".em("t") ;
00881     echo " de Student et de Welsch, qui permet de comparer les moyennes de deux séries de données, pour des variances égales ou inégales. " 
;
00882     echo " Au passage, il calcule des intervalles de confiance et permet de tester l'égalité à " 
;
00883     echo " une moyenne de référence. Il a une option pour des données appariées." 
;
00884     finp
() ;
00885     
00886     finsolution
() ;
00887     
00888     finblockquote
() ;
00889     
00890     ## -------------------------------------------------------------------------------------------
00891     
00892     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Analyse de données ACP ou AFC ?
00893     
00894     ## -------------------------------------------------------------------------------------------
00895     
00896     blockquote
() ;
00897     
00898     blockquote
() ;
00899     
00900     p
("texte") ;
00901     echo "Qu'est-ce que l'Analyse des Donnéees au sens de JPB&nbsp;?" 
;
00902     finp
() ;
00903     
00904     blockquote
() ;
00905     p
() ;
00906     echo img
("benzecri.jpg","benzécri,","370") ;
00907     br
() ;
00908     nbsp
(5) ;
00909     echo "Jean-Paul Benz&eacute;cri, " 
;
00910     echo "octobre 2006, INA-PG" 
;
00911     br
() ;
00912     nbsp
(5) ;
00913     echo "(photo Guiseppe Giordano-Univ. Salerne)" 
;
00914     finp
() ;
00915     finblockquote
() ;
00916     
00917     p
("texte") ;
00918     echo "Comment réalise-t-on une ACP, une AFC et une CAH avec 
$R&nbsp;?" ;
00919     finp
() ;
00920     
00921     p
("texte") ;
00922     echo "Y a-t-il des représentations graphiques associées, des packages spécifiques, des ouvrages dédiés en 
$R&nbsp;?" ;
00923     finp
() ;
00924     
00925     finblockquote
() ;
00926     
00927     solution
($numExo,$numSerie) ;
00928     
00929     
00930     p
("texte") ;
00931     echo "L'analyse des données (ou AD) au sens de JPB est un ensemble de "
.href("http://fr.wikipedia.org/wiki/Analyse_des_donn%C3%A9es","méthodes de statistiques descriptives multidimensionnelles","gbleuf nou") ;
00932     echo " dont les plus connues sont les "
.b("AFC")." " ;
00933     echo "("
.href("http://fr.wikipedia.org/wiki/Analyse_factorielle_des_correspondances","analyses factorielles des correspondances","gvert nou")."), les ".b("ACP")." " ;
00934     echo "("
.href("http://fr.wikipedia.org/wiki/Analyse_en_composantes_principales","analyses en composantes principales","gvert nou").") et les ".b("CAH")." " ;
00935     echo "("
.href("http://fr.wikipedia.org/wiki/Regroupement_hi%C3%A9rarchique","classifications ascendantes hiérarchiques","gvert nou").")." ;
00936     finp
() ;
00937     
00938     
00939     p
("texte") ;
00940     echo "Il y a bien s&ucirc;r des représentations graphiques associées comme par exemple le "
.em("&laquo;cercle des corrélations&raquo;").", les " ;
00941     echo em
("&laquo;plans factoriels&raquo;")." auxquels on peut adjoindre des ellipses de confiance, les ".em("&laquo;dendrogrammes&raquo;")."... " ;
00942     finp
() ;
00943     
00944     p
("texte") ;
00945     echo "Les fonctions " 
;
00946     echo hrrr
("prcomp","stats")." et " ;
00947     echo hrrr
("princomp","stats")." du package " ;
00948     echo hrrp
("stats")." sont en général insuffisantes et il est souvent préférables de recourir aux fonctions des packages " ;
00949     echo hrrp
("FactoMineR") ;
00950     echo " et " 
;
00951     echo hrrp
("ade4") ;
00952     echo " pour ne citer que des packages développés par des français. On se rendra compte du nombre de méthodes associées et des variantes qui " 
;
00953     echo " existent un peu partout en consultant les "
.b("Task Views")." nommées " ;
00954     echo href
("http://cran.r-project.org/web/views/Multivariate.html","Multivariate").", " ;
00955     echo href
("http://cran.r-project.org/web/views/Cluster.html","Cluster")." et " ;
00956     echo href
("http://cran.r-project.org/web/views/Environmetrics.html","Environmetrics") ;
00957     echo " si on se restreint aux principales vues liées à ce type d'analyses." 
;
00958     finp
() ;
00959     
00960     # image article 2 et article 3
00961     # corcircle avec grisé et une belle ACP
00962     
00963     # http://www.pur-editions.fr/detail.php?idOuv=2166
00964     # image adrennes.jpg        http://factominer.free.fr/livre/
00965     # https://www.youtube.com/playlist?list=PLnZgp6epRBbQu2QtCyqYL80In1P-A_Iud&feature=view_all
00966     
00967     # http://pbil.univ-lyon1.fr/ade4/accueil.php?lang=
00968     
00969     #http://cran.r-project.org/web/views/Multivariate.html
00970     
00971     $i1 
"../../images/S12METAVIR.png" ;
00972     $i2 
"../../images/acp_12.png" ;
00973     $i3 
"husson2.png" ;
00974     graphiques_R_png
($i1,$i2,$i3) ;
00975     
00976     
00977     p
("texte") ;
00978     echo "Comme pour les tests, réaliser une AD est simple puisqu'il suffit d'appeler une fonction. Par contre le travail de \"dépouillement\" des " 
;
00979     echo " informations, comme le choix du nombre d'axes à retenir, la recherche des meilleures contributions aux axes et l'interprétation des axes " 
;
00980     echo " est un travail long (mais passionnant). Pour les personnes pressées de voir 
$R en action pour l'AD, on fera un copier/coller des " ;
00981     echo " commandes suivantes&nbsp;:" 
;
00982     finp
() ;
00983     
00984     pre_fichier
("demoad.r","cadre") ;
00985     
00986     
00987     $fm1 
"http://factominer.free.fr" ;
00988     $im1 
"husson.jpg" ;
00989     $fm2 
="http://factominer.free.fr/book/index.html" ;
00990     $im2 
"husson2.jpg" ;
00991     
00992     p
("texte") ;
00993     echo b
("FactoMineR")." dispose d'un ".href($fm1,"site").", d'un " ;
00994     echo href
("http://math.agrocampus-ouest.fr/infoglueDeliverLive/enseignement/support2cours/livres/ana.do.R","ouvrage")." en français, d'un " ;
00995     echo href
($fm2,"ouvrage")." en anglais et m&ecirc;me de " ;
00996     echo href
("https://www.youtube.com/playlist?list=PLnZgp6epRBbTsZEFXi_p6W48HhNyqwxIu&amp;feature=view_all","vidéos").". " ;
00997     echo " De plus " 
;
00998     #echo href("http://factominer.free.fr/docs/article_FactoMineR.pdf","FactoMineR") ;
00999     echo 
href("https://core.ac.uk/download/pdf/6303121.pdf","FactoMineR") ;
01000     echo " fournit un "
.em("plug-in")." pour $Rcmdr. ";
01001     echo " Par contre "
.b("ade4")." dispose d'un ".href("http://pbil.univ-lyon1.fr/ADE-4/","site")." beaucoup plus fourni mais pas d'ouvrage, à notre connaissance. " ;
01002     finp
() ;
01003     
01004     
01005     p
("texte") ;
01006     nbsp
(25) ;
01007     echo href
($fm1,img($im1,"",150)) ;
01008     nbsp
(15) ;
01009     echo href
($fm2,img($im2,"",135)) ;
01010     finp
() ;
01011     
01012     finsolution
() ;
01013     
01014     finblockquote
() ;
01015     
01016     ## -------------------------------------------------------------------------------------------
01017     
01018     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Export de résultats
01019     
01020     ## -------------------------------------------------------------------------------------------
01021     
01022     blockquote
() ;
01023     
01024     p
("texte") ;
01025     echo "Comment produire rapidement un document PDF des résultats et graphiques&nbsp;?" 
;
01026     finp
() ;
01027     
01028     p
("texte") ;
01029     echo "Que sont Markdown et Sweave&nbsp;? et knitr&nbsp;?" 
;
01030     finp
() ;
01031     
01032     solution
($numExo,$numSerie) ;
01033     
01034     p
("texte") ;
01035     echo "Une fois les calculs mis au point avec 
$R, il est d'usage de les intégrer dans un document, un rapport, un article... " ;
01036     echo " Il est clair qu'une technique comme le copier/coller peut se révéler fastidieuse et source d'erreur pour inclure les données et les graphiques. " 
;
01037     echo " Markdown et Sweave sont deux solutions "
.b("techniques")." pour éviter le copier/coller et pour automatiser l'inclusion des résultats et des graphiques. " ;
01038     echo href
("http://fr.wikipedia.org/wiki/Markdown","Markdown","gbleuf nou")." est un langage à marqueurs ".em("léger").". Il est à noter que $Rcmdr fournit " ;
01039     echo " et propose de sauvegarder le code "
.href("http://michelf.ca/projets/php-markdown/syntaxe/","Markdown")." correspondant aux commandes effectuées via les clics-souris dans les menus. " ;
01040     finp
() ;
01041     
01042     
01043     p
("texte") ;
01044     echo href
("http://en.wikipedia.org/wiki/Sweave","Sweave","gbleuf nou") ;
01045     echo " est une solution &laquo;plus professionnelle&raquo; basée sur " 
;
01046     echo href
("http://fr.wikipedia.org/wiki/LaTeX","LaTeX","gbleuf nou") ;  ;
01047     echo " et c'est la solution que nous recommandons, car elle fournit des résultats " 
;
01048     echo href
("http://biostat.mc.vanderbilt.edu/wiki/pub/Main/TheresaScott/ReproducibleResearch.TAScott.handout.pdf","propres et reproductibles","grouge nou").". " ;
01049     echo " De plus, "
.href("http://ciam.inra.fr/r4ciam/node/184","Sweave","gvert")." est intégré à Rstudio." ;
01050     sdl
() ;
01051     echo " Sur le "
.href("http://www.stat.uni-muenchen.de/~leisch/Sweave/","site officiel de Sweave","gvert")." on trouve plusieurs fichiers de " ;
01052     echo " démonstrations, un " 
;
01053     echo href
("http://www.stat.uni-muenchen.de/~leisch/Sweave/Sweave-manual.pdf","manuel") ;
01054     echo " et une "
.href("http://www.stat.uni-muenchen.de/~leisch/Sweave/FAQ.html","FAQ").". " ;
01055     echo " En français, une documentation intéressante et détaillée est le "
.href("http://pbil.univ-lyon1.fr/R/pdf/tdr78.pdf")." de J. R. Lobry " ;
01056     echo " ("
.href("tdr78.pdf","copie locale")."). " ;
01057     echo b
("knitr")." généralise ".b("Sweave")." et c'est la solution que nous conseillons après comparaison des deux solutions " ;
01058     echo " (mais il faut aussi connaitre "
.b("LaTeX").")." ;
01059     finp
() ;
01060     
01061     p
("texte") ;
01062     echo "Voici comment cela fonctionne avec Rstudio&nbsp;:" 
;
01063     echo " on écrit un fichier de type "
.b(".rnw")." comme par exemple ".href("demosweave.rnw")." puis on utilise l'icone ".b("Compile PDF").". " ;
01064     echo " Rstudio vient alors créer le fichier "
.href("demosweave.tex")." en exécutant R et en intégrant les sorties éventuelles (calculs ou graphiques) " ;
01065     echo " pour chaque &laquo;"
.b("chunk")."&raquo; débuté par ".b("&lt;&lt;")." et terminé par ".b("@").". Si tout est bien configuré, " ;
01066     echo " Rstudio compile via "
.b("pdflatex")." le fichier produit et affiche le résultat. Magnifique&nbsp;!" ;
01067     finp
() ;
01068     
01069     p
("texte") ;
01070     echo "Voici les fichiers utilisés, sachant que notre mise en page LaTeX est dans "
.href("dctgh.tex")." et que nous avons écrit une fonction ".b("demoSw()") ;
01071     echo " que nous avons testée en-dehors de Sweave, pour plus de souplesse. Cette fonction est définie dans "
.href("poursweave.r").". " ;
01072     echo " Le fichier PDF obtenu est "
.href("demosweave1.pdf")." si la variable ".b("dos")." vaut ".b("iris"). " et " ;
01073     echo " "
.href("demosweave2.pdf")." si la variable ".b("dos")." vaut ".b("elf").", mais bien s&ucirc;r, il faut connaitre LaTeX, ce qui est une autre histoire... " ;
01074     finp
() ;
01075     
01076     pvide
() ;
01077     
01078     blockquote
() ;
01079     montreListe
("demosweave1.rnw demosweave1.tex demosweave2.rnw demosweave2.tex dctgh.tex poursweave.r","visu") ;
01080     finblockquote
() ;
01081     
01082     /*
01083     p("texte") ;
01084     echo "Du coup, il est possible de produire automatique les rapports, comme avec ce formulaire&nbsp;:" ;
01085     finp() ;
01086     
01087     blockquote() ;
01088     form("stim_sweave.php") ;
01089     fieldset("fieldsetGH") ;
01090     legende("Saisie des données pour la démonstration de Sweave","legendeGH") ;
01091     table(0,10) ;
01092     
01093     tr() ;
01094     td() ;
01095     echo "Données : " ;
01096     fintd() ; td() ;
01097     listeSelectFromTxt("data","elf iris") ;
01098     fintd() ;
01099     fintr() ;
01100     
01101     tr() ;
01102     td() ;
01103     echo "Nombre de lignes (ou * pour toutes) : " ;
01104     fintd() ; td() ;
01105     input_text("nbl","*") ;
01106     fintd() ;
01107     fintr() ;
01108     
01109     tr() ;
01110     td() ;
01111     echo "Vos initiales : " ;
01112     fintd() ; td() ;
01113     input_text("initia","?") ;
01114     fintd() ;
01115     fintr() ;
01116     
01117     tr() ;
01118     td("C") ;
01119     input_submit("envoyer","envoyer","orange_pastel") ;
01120     fintd() ;
01121     fintr() ;
01122     
01123     fintable() ;
01124     finfieldset() ;
01125     finform() ;
01126     finblockquote() ;
01127     
01128     */
01129     
01130     finsolution
() ;
01131     
01132     finblockquote
() ;
01133     
01134     ## -------------------------------------------------------------------------------------------
01135     
01136     $tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Découverte du package stats " ;
01137     
01138     ## -------------------------------------------------------------------------------------------
01139     
01140     blockquote
() ;
01141     
01142     p
("texte") ;
01143     echo "Que contient le package "
.b("stats")."&nbsp;? " ;
01144     echo "Quelles en sont les fonctions les plus importantes&nbsp;?" 
;
01145     finp
() ;
01146     
01147     solution
($numExo,$numSerie) ;
01148     
01149     p
("texte") ;
01150     echo "Hélas, le package " 
;
01151     echo hrrp
("stats")." contient environ ".href("lls_stats.sor","500 objets").", il est difficile en dix minutes d'en faire le tour..." ;
01152     finp
() ;
01153     
01154     p
("texte") ;
01155     echo " On peut quand m&ecirc;me distinguer des fonctions \"classiques\" de calcul et de probabilités, " 
;
01156     echo " des fonctions pour les tests statistiques usuels, des fonctions d'affichage pour les différents modèles et des fonctions de tracé."
;
01157     finp
() ;
01158     
01159     finsolution
() ;
01160     
01161     finblockquote
() ;
01162     
01163     
01164     ## -------------------------------------------------------------------------------------------
01165     
01166     finPageExercices
($numSerie) ; # contient finSection() et finPage() ; la fonction est dans intror_inc.php
01167     
01168     ?>

Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.

 

 

retour gH    Retour à la page principale de   (gH)