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 = 4 ;
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 = 0 ;
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 : ".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 = 0 ;
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 ?" ;
00065 echo " Pourquoi calcule-t-on en général pour des humains la moyenne de la taille et la médiane des poids ?" ;
00066 echo " Pourquoi le ".b("minimum")." et le ".b("maximum")." ne sont-ils pas considérés comme des ".em("«bons»")." indicateurs statistiques ?" ;
00067 finp() ;
00068
00069 p("texte") ;
00070 echo "Comment faire s'il y a des valeurs ".s_span("NA","grouge")." dans les données ? " ;
00071 finp() ;
00072
00073 p("texte") ;
00074 echo " On pourra utiliser comme jeu d'essai le vecteur défini par " ;
00075 echo b("v <- 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 ?" ;
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ê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ême si c'est peut ê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êmes, nous avons décidé de filtrer les longueurs :" ;
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 !" ;
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&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 ?" ;
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 -g Tk &")." 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être et des menus, des sorties " ;
00228 echo " via le menu ".b("Edition").", sous-menu ".b("Préférences")." :" ;
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 !" ;
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ê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ê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")." ; 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 !), 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â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ê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")." ?" ;
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")." ? Et leurs médianes ?" ;
00437 finp() ;
00438
00439 p("texte") ;
00440 echo " Comment rajouter ces informations en bas du ".em("data frame")." ?" ;
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 " ?" ;
00454 finp() ;
00455
00456 p("texte") ;
00457 echo "Y a-t-il des représentations graphiques associées ?" ;
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 :" ;
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 :" ;
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 ? Et un tri croisé ?" ;
00519 echo " Comment les calculer en $R ?" ;
00520 finp() ;
00521
00522 p("texte") ;
00523 echo "Y a-t-il des représentations graphiques associées ?" ;
00524 finp() ;
00525
00526 p("texte") ;
00527 echo "Comment ajouter des marges à un tableau de comptages, à un tableau de fréquences ?" ;
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ô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û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 ?" ;
00596 echo " Pourquoi y a-t-il 4 graphiques produits avec ".b("plot(lm(modele))")." alors qu'on pourrait en avoir 6 ?" ;
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é ?" ;
00609 echo " Quelles sont les valeurs prédites par le modèle pour ".b("100")." et ".b("250")." km ?" ;
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 cm, dans les données ".href("pg.dar")." ?" ;
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")." ?" ;
00619 finp() ;
00620
00621 p("texte") ;
00622 echo "Comparer les ages entre les hommes et les femmes dans ce même dossier. On utilisera un seuil α de première espèce de 5 %." ;
00623 finp() ;
00624
00625 p("texte") ;
00626 echo "Y a-t-il des représentations graphiques associées ?" ;
00627 finp() ;
00628
00629 p("texte") ;
00630 echo "Y a-t-il des rapports entre régression linéaire et analyse de la variance ?" ;
00631 finp() ;
00632
00633 p("texte") ;
00634 echo "Quelles sont les différences entre régression et corrélation ?" ;
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&m=s","solution")." de " ;
00645 echo " l' ".href("../Eda/eda2crs.php?n=1&m=e","exercice 1")." de mon " ;
00646 echo " ".href("../Eda/eda2.php?n=1&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 ê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," Observation number","Cook's distance") ;
00680 num_stat_Et_R(5,"* Leverage","Standardized residuals") ;
00681 num_stat_Et_R(6," 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ê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 : ".b("ρ(x,y)=ρ(y,x)").". Toutefois ici la distance doit sans doute pouvoir ê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 ê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 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 !" ;
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&m=s","solution")." de " ;
00750 echo " l' ".href("../Eda/eda2crs.php?n=1&m=e","exercice 3")." de mon " ;
00751 echo " ".href("../Eda/eda2.php?n=1&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").") " ;
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 ?" ;
00810 finp() ;
00811
00812 p("texte") ;
00813 echo "Quels sont les principaux tests disponibles sous $R ?" ;
00814 finp() ;
00815
00816 p("texte") ;
00817 echo "Y a-t-il des représentations graphiques associées ?" ;
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 ?" ;
00823 finp() ;
00824
00825 p("texte") ;
00826 echo "Qu'est-ce qu'un test ".em("t")." ?" ;
00827 echo " Que peut-on déduire d'un calcul fait avec la fonction ".hrrr("t.test","stats")." ?" ;
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ê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 «singes savants», 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 :" ;
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 «gros pavé» 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 ?" ;
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é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 ?" ;
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 ?" ;
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ûr des représentations graphiques associées comme par exemple le ".em("«cercle des corrélations»").", les " ;
00941 echo em("«plans factoriels»")." auxquels on peut adjoindre des ellipses de confiance, les ".em("«dendrogrammes»")."... " ;
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 :" ;
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ême de " ;
00996 echo href("https://www.youtube.com/playlist?list=PLnZgp6epRBbTsZEFXi_p6W48HhNyqwxIu&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 ?" ;
01026 finp() ;
01027
01028 p("texte") ;
01029 echo "Que sont Markdown et Sweave ? et knitr ?" ;
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 «plus professionnelle» 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 :" ;
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 «".b("chunk")."» débuté par ".b("<<")." 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 !" ;
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û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 :" ;
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")." ? " ;
01144 echo "Quelles en sont les fonctions les plus importantes ?" ;
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ê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 à la page principale de (gH)