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
= 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&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
= 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&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)