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 
;
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 
;
00054     $numExo   
;
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)