Valid XHTML     Valid CSS2    

Listing du fichier pagsd2.php

 

00001     <?php
00002     error_reporting
(E_ALL | E_NOTICE | E_STRICT) ;
00003     include(
"std7.php") ;
00004     include(
"pagsd_inc.php") ;
00005     
# # (gH) -_- pagsd2.php ; TimeStamp (unix) : 07 Janvier 2019 vers 13:25
00006     
00007     #######################################################################################
00008     
00009     
debutPage
("PAGSD 2/5","strict","","pagsd.js") ;
00010     
00011     
debutSection() ;
00012     
h1
(s_span("P","gbleu")."roduction ".s_span("A","gbleu")."utomatis&eacute;e de") ;
00013     
h1
(s_span("G","gbleu")."raphiques, ".s_span("S","gbleu")."tatistiques et ".s_span("D","gbleu")."ocuments") ;
00014     
$gh
= s_nbsp(20)." gilles.hunault \"at\" univ-angers.fr" ;
00015     
h2
($gh,"gvert") ;
00016     
pvide() ;
00017     
h2
(" -- partie 2 sur 5 : statistiques et documents avec le logiciel $r");
00018     
finSection() ;
00019     
00020     
##############################################################################################
00021     
00022     
sdl
(3) ; echo cmt(' pour afficher toutes les solutions : pagsd1.php?solutions=1') ; sdl(3) ;
00023     
00024     
## -------------------------------------------------------------------------------------------
00025     
00026     
debutSection() ;
00027     
00028     
$tableauDesRubriques = array() ;
00029     
$idr
= 0 ;
00030     
$idr
++; $tableauDesRubriques[$idr] = "Calculs et trac&eacute;s &eacute;l&eacute;mentaires dans une session $r" ;
00031     
$idr
++; $tableauDesRubriques[$idr] = "Ex&eacute;cution de code $r via $php" ;
00032     
$idr
++; $tableauDesRubriques[$idr] = "Production de calculs et graphiques &agrave; la vol&eacute;e en $r et $php" ;
00033     
$idr
++; $tableauDesRubriques[$idr] = "Statistiques et graphiques sur des donn&eacute;es Excel" ;
00034     
$idr
++; $tableauDesRubriques[$idr] = "Statistiques et graphiques sur des donn&eacute;es issues d'Internet" ;
00035     
$idr
++; $tableauDesRubriques[$idr] = "Trac&eacute; d'un graphe avec $r" ;
00036     
$tdmCRLM
= new tdm($tableauDesRubriques) ;
00037     
$tdmCRLM
->titre() ;
00038     
$tdmCRLM
->menu("oui","oui","nou") ;
00039     
00040     
pvide() ;
00041     
00042     
p() ;
00043      echo
"Il est possible d'afficher toutes les solutions via " ;
00044      echo
href
("pagsd2.php?solutions=1","?solutions=1","bouton_fin vert_pastel nou") ;
00045      echo
" et de toutes les masquer avec " ;
00046      echo
href
("pagsd2.php?solutions=0","?solutions=0","bouton_fin jaune_pastel nou").". " ;
00047     
finp() ;
00048     
00049     
finSection() ;
00050     
00051     
debutSection() ;
00052     
00053     
$numSerie
= 1 ;
00054     
$numExo
= 0 ;
00055     
00056     
## -------------------------------------------------------------------------------------------
00057     
00058     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Calculs et trac&eacute;s &eacute;l&eacute;mentaires dans une session R
00059     
00060     ## -------------------------------------------------------------------------------------------
00061     
00062     
blockquote() ;
00063     
00064     
blockquote() ;
00065     
00066     
p() ;
00067      echo
"On voudrait avec
$r tracer en bleu clair l'histogramme des classes d'une s&eacute;rie de valeurs quantitatives, " ;
00068      echo
" la loi normale sous-jacente en rouge, et la courbe de densit&eacute; estim&eacute;e par noyau en bleu fonc&eacute;, " ;
00069      echo
" comme pour le trac&eacute; ci-dessous. " ;
00070     
finp() ;
00071     
00072     
p
("texte") ;
00073      echo
" On fournira aussi au passage les descripteurs usuels (moyenne, &eacute;cart-type, m&eacute;diane...) " ;
00074     
finp() ;
00075     
00076     
p() ;
00077     
nbsp
(15) ;
00078     
$img
= "http://forge.info.univ-angers.fr/~gh/wstat/Introduction_R/leadblng3.png" ;
00079      echo
href
($img,img($img,"",600)) ;
00080     
finp() ;
00081     
00082     
p
("texte") ;
00083     echo
" On pourra par exemple lire les donn&eacute;es de longueur, issues du dossier " ;
00084     echo
href
("http://www.info.univ-angers.fr/pub/gh/Datasets/lea.htm","LEADB","grouge nou") ;
00085     echo
" avec les instructions suivantes&nbsp;:" ;
00086     
finp() ;
00087     
00088     
pre_fichier
("../wstat/Introduction_R/lngleadb.r","cadre") ;
00089     
00090     
finblockquote() ;
00091     
00092     
solution
($numExo,$numSerie) ;
00093     
00094     
p
("texte") ;
00095     echo
"Il y a visiblement " ;
00096     
finp() ;
00097     
00098     
ol() ;
00099     
00100     
debutli() ;
00101     
p() ;
00102     echo
" un histogramme en bleu ciel, trac&eacute; via la fonction " ;
00103     echo
hrrr
("hist","graphics").", " ;
00104     
finp() ;
00105     
finli() ;
00106     
00107     
debutli() ;
00108     
p() ;
00109     echo
" la loi normale en rouge, sans doute trac&eacute;e via " ;
00110     echo
hrrr
("curve","graphics").", " ;
00111     
finp() ;
00112     
finli() ;
00113     
00114     
debutli() ;
00115     
p() ;
00116     echo
" la courbe de densit&eacute; estim&eacute;e par noyau en bleu fonc&eacute; via " ;
00117     echo
hrrr
("lines","graphics").", " ;
00118     
#echo hrrr("density","stats").", " ;
00119     
finp() ;
00120     
finli() ;
00121     
00122     
debutli() ;
00123     
p() ;
00124     echo
" une estimation visuelle de la densit&eacute; via un \"peigne\" sur l'axe x avec " ;
00125     echo
hrrr
("rug","graphics").", " ;
00126     
finp() ;
00127     
finli() ;
00128     
00129     
debutli() ;
00130     
p() ;
00131     echo
" une l&eacute;gende en haut et &agrave; droite obtenue par " ;
00132     echo
hrrr
("legend","graphics").", " ;
00133     
finp() ;
00134     
finli() ;
00135     
00136     
debutli() ;
00137     
p() ;
00138     echo
" et enfin un titre et les labels pour les axes produits par " ;
00139     echo
hrrr
("title","graphics").". " ;
00140     
finp() ;
00141     
finli() ;
00142     
00143     
finol() ;
00144     
00145     
p
("texte") ;
00146     echo
" Il faut donc sans doute six instructions de trac&eacute; pour r&eacute;aliser le graphique. V&eacute;rification (tester par copier/coller de chaque " ;
00147     echo
"ligne au fur et &agrave; mesure)&nbsp;:" ;
00148     
finp() ;
00149     
00150     
entree_R
("histqtlng.r") ;
00151     
00152     
p
("texte") ;
00153     echo
"Les fonctions " ;
00154     echo
hrrr
("Normal","stats","dnorm")." " ;
00155     echo
" et " ;
00156     echo
hrrr
("density","stats")." " ;
00157     echo
" font partie du package " ;
00158     echo
hrrp
("stats").", " ;
00159     echo
" bien s&ucirc;r." ;
00160     
finp() ;
00161     
00162     
p
("texte") ;
00163     echo
"Pour obtenir des r&eacute;sum&eacute;s statistiques comme la moyenne, la m&eacute;diane, l'&eacute;cart-type...,
$r dispose de nombreuses " ;
00164     echo
" fonctions telles que " ;
00165     echo
hrrr
("mean","base")." " ;
00166     echo
hrrr
("median","stats")." " ;
00167     echo
hrrr
("sd","stats")." et on peut donc &eacute;crire des instructions comme " ;
00168     
finp() ;
00169     
00170     
entree_R
("decritqtlng.r") ;
00171     
00172     
p
("texte") ;
00173     echo
" pour obtenir " ;
00174     
finp() ;
00175     
00176     
sortie_R
("decritqtlng.res") ;
00177     
00178     
p
("texte") ;
00179     echo
" Mais ce n'est pas bien pr&eacute;sent&eacute;, et donc pas tr&egrave;s lisible. Avec un peu d'effort en programmation, " ;
00180     echo
" on peut &eacute;crire des fonctions plus &eacute;volu&eacute;es pour r&eacute;aliser les m&ecirc;mes traitements. Via les fonctions " ;
00181     echo
href
("http://forge.info.univ-angers.fr/~gh/wstat/statghfns.php","statgh","grouge") ;
00182     echo
", une seule instruction suffit, qui fournit aussi l'analyse statistique de la variable et trois autres graphiques, " ;
00183     echo
" nomm&eacute;e "
.href("http://forge.info.univ-angers.fr/~gh/wstat/statghfns.php?lafns=decritQT","decritQT()","gvertf nou")."&nbsp;:" ;
00184     
finp() ;
00185     
00186     
entree_R
("statghlng.r") ;
00187     
sortie_R
("statghlng_sor.txt") ;
00188     
graphique_R_png
("leadblng2.png") ;
00189     
00190     
00191     
p
("texte") ;
00192     echo
"S'il semble tr&egrave;s facile de tracer des histogrammes, des courbes de densit&eacute;, les calculs et les choix (nombre de classes, valeur de la densit&eacute;...) " ;
00193     echo
" font appel &agrave; des connaissances statistiques avanc&eacute;es. Voir par exemple la page " ;
00194     echo
href
("http://en.wikipedia.org/wiki/Kernel_density_estimation","density estimation","grouge nou").", sans doute plus int&eacute;ressante que la page ";
00195     echo
href
("http://fr.wikipedia.org/wiki/Estimation_par_noyau","estimation par noyau","gvert nou")." dont une ";
00196     echo
" application int&eacute;ressante est en g&eacute;ographie humaine "
.href("http://lara.inist.fr/bitstream/handle/2332/879/0949_T1.pdf;jsessionid=48A41A9B660B39BB2D1FE80DFBFD4E02?sequence=4","ici").". " ;
00197     
finp() ;
00198     
00199     
finsolution() ;
00200     
00201     
finblockquote() ;
00202     
00203     
## -------------------------------------------------------------------------------------------
00204     
00205     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Ex&eacute;cution de code $r via $php"
00206     
00207     ## -------------------------------------------------------------------------------------------
00208     
00209     
blockquote() ;
00210     
00211     
blockquote() ;
00212     
00213     
p
("texte") ;
00214     echo
"Peut-on faire ex&eacute;cuter du code
$r par $php&nbsp;?" ;
00215     
finp() ;
00216     
00217     
p
("texte") ;
00218     echo
"Peut-on r&eacute;cup&eacute;rer dans un fichier le r&eacute;sultat de cette ex&eacute;cution&nbsp;?" ;
00219     
finp() ;
00220     
00221     
finblockquote() ;
00222     
00223     
solution
($numExo,$numSerie) ;
00224     
00225     
p
("texte") ;
00226     echo
"La r&eacute;ponse est oui, bien &eacute;videmment, puisque
$php peut ex&eacute;cuter des " ;
00227     echo
" commandes et lancer des ex&eacute;cutables via l'instruction "
.b("system()").". " ;
00228     
finp() ;
00229     
00230     
p
("texte") ;
00231     echo
"Par exemple, si le fichier "
.href("demo.r")." contient le code&nbsp;:" ;
00232     
finp() ;
00233     
00234     
pre_fichier
("demo.r","cadre") ;
00235     
00236     
p
("texte") ;
00237     echo
"alors le programme
$php suivant, nomm&eacute; " ;
00238     echo
href
("montresource.php?nomfic=phpetr01.php","phpetr01.php") ;
00239     
finp() ;
00240     
00241     
pre_fichier
("phpetr01.php","cadre") ;
00242     
00243     
p
("texte") ;
00244     echo
"produit exactement ce que vous pensez. Il suffit de cliquer " ;
00245     echo
href
("phpetr01.php","ici")." pour le v&eacute;rifier." ;
00246     echo
" L'option "
.b("--no-save")." (qui n'est sans doute pas suffisante) " ;
00247     echo
" a pour but de ne pas charger l'environnement
$r et donc de fournir ";
00248     echo
" une ex&eacute;cution "
.b("reproductible").". " ;
00249     
finp() ;
00250     
00251     
p
("texte") ;
00252     echo
"Tout cela n'est pas tr&egrave;s param&eacute;tr&eacute;. Rajoutons donc " ;
00253     echo
" la redirection des sorties dans un fichier temporaire. " ;
00254     echo
" V&eacute;rification "
.href("phpetr02.php","ici")." &agrave; l'aide du programme ";
00255     echo
href
("montresource.php?nomfic=phpetr02.php","phpetr02.php").". " ;
00256     echo
" On notera le passage de l'option "
.b("--no-save") ;
00257     echo
" &agrave; l'option "
.b("--vanilla").". " ;
00258     
finp() ;
00259     
00260     
pre_fichier
("phpetr02.php","cadre") ;
00261     
00262     
p
("texte") ;
00263     echo
"Bien s&ucirc;r, ceci n'est pas tr&egrave;s \"propre\". A l'aide des options " ;
00264     echo
" d'ex&eacute;cution de R on peut faire nettement mieux, comme on le voit " ;
00265     echo
href
("phpetr03.php","ici")." &agrave; l'aide du programme ";
00266     echo
href
("montresource.php?nomfic=phpetr03.php","phpetr03.php") ;
00267     
finp() ;
00268     
00269     
pre_fichier
("phpetr03.php","cadre") ;
00270     
00271     
p
("texte") ;
00272     echo
"Enfin, pour produire une \"vraie\" page Web, un "
.b("include") ;
00273     echo
" et quelques fontions "
.b("conceptuelles") ;
00274     echo
" via le programme ";
00275     echo
href
("montresource.php?nomfic=phpetr04.php","phpetr04.php") ;
00276     
finp() ;
00277     
00278     
pre_fichier
("phpetr04.php","cadre") ;
00279     
00280     
00281     
p
("texte") ;
00282     echo
"assurent un rendu valide "
.b("XHTML Strict")." habill&eacute; en CSS " ;
00283     echo
"comme le montre la page "
.href("phpetr04.php")."." ;
00284     
finp() ;
00285     
00286     
finsolution() ;
00287     
00288     
finblockquote() ;
00289     
00290     
## -------------------------------------------------------------------------------------------
00291     
00292     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Production de calculs et graphiques &agrave; la vol&eacute;e en R et PHP
00293     
00294     ## -------------------------------------------------------------------------------------------
00295     
00296     
blockquote() ;
00297     
00298     
blockquote() ;
00299     
00300     
p
("texte") ;
00301     echo
"Reprendre l'exercice pr&eacute;c&eacute;dent o&ugrave; les donn&eacute;es sont lues dans un formulaire." ;
00302     
finp() ;
00303     
00304     
finblockquote() ;
00305     
00306     
solution
($numExo,$numSerie) ;
00307     
00308     
p
("texte") ;
00309     echo
"El&eacute;mentaire, mon cher Watson&nbsp;!" ;
00310     echo
" Si les donn&eacute;es sont dans un formulaire, une strat&eacute;gie simple peut &ecirc;tre de transf&eacute;rer les donn&eacute;es " ;
00311     echo
" dans un fichier temporaire et de faire ex&eacute;cuter par
$php un script $r d'analyse sur ces donn&eacute;es." ;
00312     
finp() ;
00313     
00314     
00315     
p
("texte") ;
00316     echo
"Dans la mesure o&ugrave;
$r peut &eacute;x&eacute;cuter les instructions en ligne de commande, il suffit de pr&eacute;parer les commandes &agrave; " ;
00317     echo
" ex&eacute;cuter, de les mettre aussi dans un fichier temporaire et de laisser
$r tout traiter. " ;
00318     
finp() ;
00319     
00320     
00321     
00322     
p
("texte") ;
00323     echo
"On trouvera &agrave; l'URL " ;
00324     echo
href
("../wstat/aqt_det.php","aqt_det.php")." une impl&eacute;mentation possible des calculs et des graphiques " ;
00325     echo
" avec des exemples pr&ecirc;ts &agrave; l'emploi. Les fichiers utilis&eacute;s sont " ;
00326     echo
href
("../wstat/montresource.php?nomfic=calcstat.php",b("calcstat.php"),"orange_stim nou").", " ;
00327     echo
href
("../wstat/montresource.php?nomfic=progstat.php",b("progstat"),"orange_stim nou")." et " ;
00328     echo
" "
.href("../montresource.php?nomfic=statuno.php",b("statuno"),"orange_stim nou")."." ;
00329     echo
" L'archive "
.href("statprog.zip")." contient ces programmes qu'on essaiera d'utiliser, " ;
00330     echo
" &agrave; d&eacute;faut de les modifier ou de les r&eacute;&eacute;crire." ;
00331     
finp() ;
00332     
00333     
p
("texte") ;
00334     echo
"Voici comment cela fonctionne&nbsp;: le formulaire de la page " ;
00335     echo
href
("../wstat/aqt_det.php","aqt_det.php","gvert nou")." envoie les donn&eacute;es et le champ cach&eacute; " ;
00336     echo
b
("calc=aqtdet")." &agrave; la page web " ;
00337     echo
href
("../wstat/montresource.php?nomfic=calcstat.php","calcstat.php","gvert nou")." en mode post " ;
00338     echo
" Ce fichier "
.b("calcstat.php")." se contente d'utiliser la \"bonne\" fonction sur les donn&eacute;es&nbsp;:" ;
00339     
finp() ;
00340     
00341     
pre_fichier
("../wstat/calcstat.php","cadrebleu") ;
00342     
00343     
00344     
p
("texte") ;
00345     echo
"Les fonctions utilis&eacute;es par "
.b("calcstat.php")." sont d&eacute;finies dans le fichier inclus " ;
00346     echo
href
("../wstat/montresource.php?nomfic=progstat.php","progstat","gvert nou").". " ;
00347     echo
"La fonction "
.b("aqt_det()")." affiche les donn&eacute;es dans un &eacute;l&eacute;ment ".bleu("&lt;textarea&gt;") ;
00348     echo
" puis les &eacute;crit dans un fichier temporaire dont le nom commence par "
.b("aqt_det.data").". " ;
00349     echo
" Le reste du nom du fichier est d&eacute;termin&eacute; par la fonction
$php nomm&eacute;e " ;
00350     echo
href
("http://php.net/manual/fr/function.tempnam.php","tempnam()","grougef nou") ;
00351     echo
" de fa&ccedil;on &agrave; &eacute;viter un conflit en cas de calculs concurrents. " ;
00352     echo
"La fonction "
.b("aqt_det()")." pr&eacute;pare aussi les noms des deux fichiers pour les graphiques." ;
00353     echo
" Si on met la variable "
.b("\$dbg")." &agrave; 1 dans cette fonction, on peut alors voir &agrave; l'&eacute;x&eacute;cution " ;
00354     echo
" un &eacute;l&eacute;ment "
.bleu("&lt;pre&gt;")." qui contient quelque chose comme&nbsp;:" ;
00355     
finp() ;
00356     
00357     
pre_fichier
("calcstat1.txt","cadre") ;
00358     
00359     
p
("texte") ;
00360     echo
"La fonction "
.b("aqt_det()")." vient ensuite mettre dans un tableau $php les instructions $r " ;
00361     echo
" &agrave; ex&eacute;cuter, soit un contenu similaire &agrave;&nbsp;:" ;
00362     
finp() ;
00363     
00364     
pre_fichier
("calcstat2.txt","cadre") ;
00365     
00366     
p
("texte") ;
00367     echo
" avant d'appeler la fonction "
.b("execute_R()")." qui est d&eacute;finie dans le fichier " ;
00368     echo
href
("../wstat/montresource.php?nomfic=statuno.php","statuno","gvert nou").". " ;
00369     echo
" Cette fonction "
.b("execute_R()")." transf&egrave;re les commandes $r dans un fichier " ;
00370     echo
" temporaire avant d'appeler le logiciel
$r avec une redirection des entr&eacute;es et des sorties. " ;
00371     echo
" Une variable "
.b("\$dbg")." mise &agrave; 1 dans cette fonction montre aussi une trace de ce qui se passe." ;
00372     
finp() ;
00373     
00374     
pre_fichier
("calcstat3.txt","cadre") ;
00375     
00376     
00377     
p
("texte") ;
00378     echo
"Comme on peut le voir &agrave; l'instruction [5],
$php demande &agrave; $r de mettre les graphiques dans des " ;
00379     echo
" fichiers dont le nom a &eacute;t&eacute; g&eacute;n&eacute;r&eacute; par "
.b("tempnam()").". Le r&eacute;pertoire utilis&eacute;, soit ".b("tmp")." pour le " ;
00380     echo
" est en fait un r&eacute;pertoire local de l'utilisateur, soit "
.b("/home/gh/public_html/wtmp")." dont les " ;
00381     echo
" droits sont "
.vert("777")." afin que le serveur Web puisse y &eacute;crire. Pour $php il s'agit donc d'un " ;
00382     echo
" r&eacute;pertoire relatif, li&eacute; au serveur Web alors que pour
$r il s'agit d'un r&eacute;pertoire local, d&eacute;finir par son " ;
00383     echo
" chemin absolu. Pour que
$php puisse ensuite afficher les images, il faut modifier le chemin d'acc&egrave;s aux " ;
00384     echo
" images. " ;
00385     
finp() ;
00386     
00387     
00388     
p
("texte") ;
00389     echo
"La fonction que
$r utilise pour traiter les donn&eacute;es est nomm&eacute;e " ;
00390     echo
href
("../wstat/statghfns.php?lafns=dtQT&amp;montrer","dtQt()","gvertf nou")." et fait partie " ;
00391     echo
" de "
.href("../wstat/statghfns.php","nos fonctions $r","grouge nou")."." ;
00392     
finp() ;
00393     
# une solution Ajax ?
00394     
00395     
finsolution() ;
00396     
00397     
finblockquote() ;
00398     
00399     
## -------------------------------------------------------------------------------------------
00400     
00401     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Statistiques et graphiques sur des donn&eacute;es Excel
00402     
00403     ## -------------------------------------------------------------------------------------------
00404     
00405     
blockquote() ;
00406     
00407     
blockquote() ;
00408     
00409     
p
("texte") ;
00410     echo
" Reprendre les m&ecirc;mes calculs et graphiques juste avec la colonne "
.b("poids") ;
00411     echo
" du fichier Excel "
.href("her_extrait.xls") ;
00412     echo
" puis avec toutes les colonnes. Les unit&eacute;s respectives sont les ann&eacute;es, les kilos et les centim&egrave;tres. " ;
00413     echo
" Les donn&eacute;es sont un extrait du dossier "
.href("../Datasets/her.htm","HER").". " ;
00414     echo
" On pourra utiliser les fonctions de "
.href("http://forge.info.univ-angers.fr/~gh/wstat/statghfns.php","statgh.r")."." ;
00415     
finp() ;
00416     
00417     
p
("texte") ;
00418     echo
"Est-ce facilement g&eacute;n&eacute;ralisable &agrave; tout fichier Excel&nbsp;?" ;
00419     
finp() ;
00420     
00421     
finblockquote() ;
00422     
00423     
solution
($numExo,$numSerie) ;
00424     
00425     
p
("texte") ;
00426     echo
"Il y a deux strat&eacute;gies possibles&nbsp;: lire les donn&eacute;es avec
$php puis effectuer les calculs et graphiques avec $r " ;
00427     echo
" ou tout faire avec
$r. " ;
00428     echo
" Dans la mesure o&ugrave;
$r sait bien lire les fichiers Excel, cette derni&egrave;re solution est sans doute la meilleure. On trouvera ";
00429     echo
href
("f_aqtExcel.php","ici")." et ci-dessous une interface pour choisir le nom de la ou des colonnes et lancer l'analyse." ;
00430     
#echo href("aqtExcel.php","ici")." une interface pour choisir le fichier Excel et le nom de la ou des colonnes." ;
00431     
finp() ;
00432     
00433     
pre_fichier
("f_aqtExcel.php","cadre") ;
00434     
00435     
p
("texte") ;
00436     echo
"Le traitement en
$r est alors assez simple puisqu'on peut pr&eacute;parer toutes les commandes $r &agrave; l'avance." ;
00437     echo
" On trouvera en bas de la page "
.href("aqtExcel.php","aqtExcel")." (ignorer le message d'erreur affich&eacute;) " ;
00438     echo
" le code-source pour le traitement. Voici par exemple le code
$r &agrave; ex&eacute;cuter pour la variable ".b("POIDS")."&nbsp;:" ;
00439     
finp() ;
00440     
00441     
pre_fichier
("aqtPOIDS.r","cadrejaune") ;
00442     
00443     
p
("texte") ;
00444     echo
"Pour ex&eacute;cuter cela via "
.b("PHP")." on peut utiliser la fonction ".b("analyse()")." suivante&nbsp;:" ;
00445     
finp() ;
00446     
00447     
pre_fichier
("aqtExcel_inc.php","cadrebleu") ;
00448     
00449     
p
("texte") ;
00450     echo
"Sur le principe, cet exercice est facilement g&eacute;n&eacute;ralisable&nbsp;: il suffit de choisir un fichier Excel, de trouver le nom des " ;
00451     echo
" colonnes et demander quelle colonne on veut traiter. " ;
00452     echo
" En pratique, l'analyse est infaisable car toutes les colonnes ne sont pas analysables au sens des variables quantitatives. " ;
00453     echo
" Que faire, par exemple de la colonne 1 (IDEN) du fichier "
.href("her_extrait.xls")."&nbsp;?" ;
00454     echo
" De plus, il manquerait aussi l'unit&eacute; sans laquelle l'analyse n'a pas de sens." ;
00455     echo
" Supposer que tous les fichiers Excel puissent &ecirc;tre format&eacute;s avec un codage adapt&eacute; (ligne 1, nom des colonnes&nbsp;;" ;
00456     echo
" ligne 2, indication quantitative ou non&nbsp;; ligne 3 unit&eacute; &eacute;ventuelle) est irr&eacute;aliste." ;
00457     
finp() ;
00458     
00459     
finsolution() ;
00460     
00461     
finblockquote() ;
00462     
00463     
## -------------------------------------------------------------------------------------------
00464     
00465     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Statistiques et graphiques sur des donn&eacute;es issues d'Internet
00466     
00467     ## -------------------------------------------------------------------------------------------
00468     
00469     
blockquote() ;
00470     
00471     
blockquote() ;
00472     
00473     
p
("texte") ;
00474     echo
" Reprendre maintenant avec les donn&eacute;es de la page " ;
00475     echo
href
("http://www.touteleurope.eu/les-pays-de-l-union-europeenne.html","paysUE")." " ;
00476     echo
" dont une copie locale avec code source \"am&eacute;nag&eacute;\" est "
.href("paysUE.html","ici").". " ;
00477     echo
"On fournira un tableau avec le nom des pays, leur superficie et leur population. " ;
00478     echo
" Ce tableau sera triable. Afficher ensuite un graphique des superficies et des populations." ;
00479     echo
" Vous trouverez &agrave; l'adresse "
.href("paysUE.php")." un exemple de ce que l'on doit obtenir." ;
00480     
finp() ;
00481     
00482     
finblockquote() ;
00483     
00484     
solution
($numExo,$numSerie) ;
00485     
00486     
p
("texte") ;
00487     
#echo "Sans probl&egrave;me." ;
00488     
echo
"Exerice non corrig&eacute; volontairement. L'acc&egrave;s au code-source de page solution " ;
00489     echo
" "
.href("paysUE.php")." sera expliqu&eacute; en TP." ;
00490     
finp() ;
00491     
00492     
finsolution() ;
00493     
00494     
finblockquote() ;
00495     
00496     
## -------------------------------------------------------------------------------------------
00497     
00498     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Trac&eacute; d'un graphe avec R
00499     
00500     ## -------------------------------------------------------------------------------------------
00501     
00502     
blockquote() ;
00503     
00504     
blockquote() ;
00505     
00506     
p
("texte") ;
00507     echo
"Ex&eacute;cuter le code
$r suivant et expliquer ce que fait chaque ligne non vide." ;
00508     
finp() ;
00509     
00510     
pre_fichier
("gxhtml.r","cadrebleu") ;
00511     
00512     
00513     
p
("texte") ;
00514     echo
"Ecrire ensuite une fonction
$r qui lit un fichier de listes d'adjacence, qui construit l'objet graphe associ&eacute; puis " ;
00515     echo
" qui affiche sa matrice d'adjacence et en donne une repr&eacute;sentation graphique. On utilisera le package " ;
00516     echo
href
("http://finzi.psych.upenn.edu/R/library/igraph/html/00Index.html","igraph","gvertf nou").". " ;
00517     
finp() ;
00518     
00519     
finblockquote() ;
00520     
00521     
solution
($numExo,$numSerie) ;
00522     
00523     
p
("texte") ;
00524     echo
"Commen&ccedil;ons par num&eacute;roter les lignes du script R&nbsp;:" ;
00525     
finp() ;
00526     
00527     
pre_fichier
("gxhtml_num.txt","cadrebleu") ;
00528     
00529     
p
("texte") ;
00530     echo
"La ligne 1 est un commentaire, ignor&eacute;e par
$r. Elle est mise ici pour rappeler " ;
00531     echo
" comment installer le package " ;
00532     echo
href
("http://finzi.psych.upenn.edu/R/library/igraph/html/00Index.html","igraph","gvertf nou").". " ;
00533     echo
" La ligne 3 charge ce package. S'il n'est pas install&eacute;,
$r ne va plus loin. " ;
00534     echo
" La ligne 5 cr&eacute;e un objet de type "
.b("igraph")." nomm&eacute; ".b("gxhtml")." -- ce qu'on peut v&eacute;rifier avec l'instruction " ;
00535     echo
b
("class(gxhtml)").". Il s'agira d'un graphe orient&eacute; &agrave; cause de ".b("directed=TRUE")." et ".b("egdes=...") ;
00536     echo
" indique les arcs du graphe. Les valeurs num&eacute;riques correspondent aux num&eacute;ros des sommets (ou "
.b("vertex")." en anglais). " ;
00537     echo
" Par d&eacute;faut, ceux-ci ont comme label leur num&eacute;ro. " ;
00538     echo
" La ligne 6 permet de changer ces labels pour les valeurs "
.b('"html","head","body","title"').". " ;
00539     echo
" La ligne 8 affiche la matrice d'adjacence du graphe et la ligne 10 l'affiche graphiquement. " ;
00540     echo
" En fait, la fonction "
.b("plot")." de la ligne 10 fait appel &agrave; la fonction ".b("plot.igraph")." du package." ;
00541     
finp() ;
00542     
00543     
p
("texte") ;
00544     echo
"Voici le r&eacute;sultat de l'ex&eacute;cution de ces lignes&nbsp;:" ;
00545     
finp() ;
00546     
00547     
pre_fichier
("gxhtml.res","cadrejaune") ;
00548     
00549     
p
("texte") ;
00550     echo
"Et le graphique produit&nbsp;:"
; # via ghxhtml2.r
00551     
finp() ;
00552     
00553     
pre
("cadre") ;
00554     
nbsp
(15) ;
00555     
$img
= "rxhtml.png" ;
00556      echo
href
($img,img($img,"",600)) ;
00557     
finpre() ;
00558     
00559     
p
("texte") ;
00560     echo
"On peut se servir de la solution
$php de la s&eacute;rie pr&eacute;c&eacute;dente d'exercices comme trame de la " ;
00561     echo
" fonction "
.b("showGraph()")." en $r. Voici une impl&eacute;mentation possible&nbsp;:" ;
00562     
finp() ;
00563     
00564     
pre_fichier
("showgraph.r","cadrebleu") ;
00565     
00566     
p
("texte") ;
00567     echo
"Et des exemples d'utilisation&nbsp;:" ;
00568     
finp() ;
00569     
00570     
pre_fichier
("showgraph.res","cadrejaune") ;
00571     
00572     
p
("texte") ;
00573     echo
"Avec les graphiques associ&eacute;s&nbsp;:"
; # via showgraph3.r
00574     
finp() ;
00575     
00576     
pre
("cadre") ;
00577     
sdl() ;
00578     
nbsp
(15) ;
00579     
$img
= "rgraph1.png" ;
00580      echo
href
($img,img($img,"",300)) ;
00581     
sdl
(3) ;
00582     
nbsp
(15) ;
00583     
$img
= "rgraph2.png" ;
00584      echo
href
($img,img($img,"",300)) ;
00585     
sdl() ;
00586     
finpre() ;
00587     
00588     
finsolution() ;
00589     
00590     
finblockquote() ;
00591     
00592     
## -------------------------------------------------------------------------------------------
00593     
00594     
p() ;
00595     echo
href
("montresource.php?nomfic=pagsd2.php","Code-source de cette page","orange_stim nou")."&nbsp;;&nbsp;" ;
00596     echo
" fichiers inclus&nbsp;: "
.href("montresource.php?nomfic=pagsd_inc.php","pagsd_inc.php","orange_stim nou") ;
00597     echo
" et "
.href("montresource.php?nomfic=pagsd.js","pagsd.js","orange_stim nou")."." ;
00598     
finp() ;
00599     
00600     
finSection() ;
00601     
finPage() ;
00602     
?>

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)