Valid XHTML     Valid CSS2    

Listing du fichier progstat.php

 

00001     <?php
00002     
00003     #    (gH)   -_-  progstat.php  ;  TimeStamp (unix) : 21 Juin 2010 vers 13:05
00004     
00005     ###########################################################
00006     
00007     require_once(
"../Pear/pearstats.php") ;
00008     require_once("../statuno7.php"
) ;
00009     # http://pear.php.net/package-stats.php
00010     # require_once("pecl_stats.php") ;
00011     
00012     ###########################################################
00013     ###########################################################
00014     
00015     function 
decrit_QT$tabdata,$un) {
00016     
00017     ###########################################################
00018     
00019       echo 
"\n\n" ;
00020       $ghs 
= new Math_Stats() ;
00021       $ghs
->setData($tabdata) ;
00022       $tdr 
$ghs->calcFull() ;
00023     # pour tout voir : print_r($ghs->calcFull()) ;
00024       $moy 
$tdr["mean"] ;
00025       $ect 
$tdr["stdev"] ;
00026       if (($moy
==0) or (is_object($ect))) { $cdv "   non calculableq" ; } else { $cdv sprintf("%8.2f",100.0*($ect/$moy))." %" ; } ;
00027       echo "   Nombre de valeurs        : "
.sprintf("%8.2f",$tdr["count"])." \n\n" ;
00028       echo "   Minimum                  : "
.sprintf("%8.2f",$tdr["min"]).$un\n" ;
00029       echo "   M&eacute;diane                  : "
.sprintf("%8.2f",$tdr["median"]).$un\n" ;
00030       echo "   Moyenne                  : "
.sprintf("%8.2f",$moy).$un\n" ;
00031       echo "   Ecart-type               : "
.sprintf("%8.2f",$ect).$un\n" ;
00032       echo "   Coefficient de variation : 
$cdv \n" ;
00033       echo "   Maximum                  : "
.sprintf("%8.2f",$tdr["max"]).$un\n" ;
00034       echo "\n" 
;
00035     
00036     #  print_r($ghs->calcFull()) ;
00037     
00038     } ; 
# fin de fonction decritQT
00039     
00040     ###########################################################
00041     
00042     function 
retourCalcStat()  {
00043     
00044     ###########################################################
00045     
00046     echo 
"<center>" ;
00047     echo "<a href=\"calcstat.htm\">RETOUR</a> &nbsp; &agrave; la page des calculs" 
;
00048     echo "</center>" 
;
00049     
00050     } ; #  function retourCalcStat
00051     
00052     ###########################################################
00053     ###########################################################
00054     
00055     function 
erreur$typErr,$lnb="",$pop=) {
00056     
00057     ###########################################################
00058     ###########################################################
00059     
00060      if (
$typErr=="calcul") {
00061         echo " <h2> calcul demand&eacute; inconnu !</h2>" 
;
00062         echo " ce que vous cherchez est probablement <a href=\"calcstat.htm\">ici</a>\n" 
;
00063      } ; # fin si erreur sur le calcul &agrave; effectuer
00064     
00065      if (
$typErr=="defnb") {
00066       echo "<h1><span class=\"grouge\">erreur</span></h1>\n" 
;
00067       echo "<blockquote>\n" 
;
00068       echo "<h2>vous n'avez pas fourni 
$lnb \n"  ;
00069       if ($pop
>0) {
00070          echo "pour la population 
$pop \n"  ;
00071       } ; # fin si sur pop
00072       echo 
"</h2>\n" ;
00073       echo "</blockquote>\n" 
;
00074      } ; # fin si erreur sur un nb en saisie
00075     
00076      if (
$typErr=="valnb") {
00077       echo "<h1><span class=\"grouge\">erreur</span></h1>\n" 
;
00078       echo "<blockquote>\n" 
;
00079       echo "<h2>
$lnb \n"  ;
00080       if ($pop
>0) {
00081          echo "pour la population 
$pop n'est pas un nombre entier\n"  ;
00082       } ; # fin si sur pop
00083       echo 
"</h2>\n" ;
00084       echo "</blockquote>\n" 
;
00085      } ; # fin si erreur sur type des nb entiers en saisie
00086     
00087      if (
$typErr=="valre") {
00088       echo "<h1><span class=\"grouge\">erreur</span></h1>\n" 
;
00089       echo "<blockquote>\n" 
;
00090       echo "<h2>
$lnb \n"  ;
00091       if ($pop
>0) {
00092          echo "pour la population 
$pop n'est pas un nombre r&eacute;el\n"  ;
00093       } ; # fin si sur pop
00094       echo 
"</h2>\n" ;
00095       echo "</blockquote>\n" 
;
00096      } ; # fin si erreur sur type des nb r&eacute;els en saisie
00097     
00098      if (
$typErr=="divnb") {
00099       echo "<h1><span class=\"grouge\">erreur</span></h1>\n" 
;
00100       echo "<blockquote>\n" 
;
00101       echo "<h2>
$lnb \n"  ;
00102       if ($pop
>0) {
00103          echo "pour la population 
$pop ne doit pas &ecirc;tre nul \n"  ;
00104       } ; # fin si sur pop
00105       echo 
"</h2>\n" ;
00106       echo "</blockquote>\n" 
;
00107      } ; # fin si erreur sur nb nul comme d&eacute;nominateur
00108     
00109      if (
$typErr=="tige") {
00110       echo "<h1><span class=\"grouge\">erreur</span></h1>\n" 
;
00111       echo "<blockquote>\n" 
;
00112       echo "<h2>\n" 
;
00113          echo "  la valeur pour la tige doit &ecirc;tre un nombre entier strictement positif et vous avez "  
;
00114          echo "  donn&eacute; la valeur <br />\n&nbsp;&nbsp;&nbsp;\n '
$lnb' \n" ;
00115       echo "</h2>\n" 
;
00116       echo "</blockquote>\n" 
;
00117      } ; # fin si erreur sur la tige
00118     
00119      if (
$typErr=="datatige") {
00120       echo "<h1><span class=\"grouge\">erreur</span></h1>\n" 
;
00121       echo "<blockquote>\n" 
;
00122       echo "<h2>\n" 
;
00123          echo "  vous n'avez fourni aucune valeur ! \n"  
;
00124       echo "</h2>\n" 
;
00125       echo "</blockquote>\n" 
;
00126      } ; # fin si erreur sur les valeurs pour tige
00127     
00128     } ; 
# fin fonction erreur
00129     
00130     ###########################################################
00131     ###########################################################
00132     
00133     function 
compPct() {
00134     
00135     ###########################################################
00136     ###########################################################
00137     
00138     echo 
"<h2>Comparaison bilat&eacute;rale de Pourcentages </h2> " ;
00139     echo "<h2>&nbsp;&nbsp;&nbsp;(&eacute;chantillons NON APPARIES)</h2> " 
;
00140     
00141     
00142     if (isset($_GET
["nb1"]))  { $nb1  $_GET["nb1"] ; } ;
00143     if (isset($_POST
["nb1"])) { $nb1  $_POST["nb1"] ; } ;
00144     
00145     if (isset($_GET
["nb2"]))  { $nb2  $_GET["nb2"] ; } ;
00146     if (isset($_POST
["nb2"])) { $nb2  $_POST["nb2"] ; } ;
00147     
00148     if (isset($_GET
["ni1"]))  { $ni1  $_GET["ni1"] ; } ;
00149     if (isset($_POST
["ni1"])) { $ni1  $_POST["ni1"] ; } ;
00150     
00151     if (isset($_GET
["ni2"]))  { $ni2  $_GET["ni2"] ; } ;
00152     if (isset($_POST
["ni2"])) { $ni2  $_POST["ni2"] ; } ;
00153     
00154     ## echo "ni1 = $ni1 ; nb1 = $nb1 ; ni2 = $ni2 ; nb2 = $nb2 \n" ;
00155     
00156     $ok 
;
00157     
00158     ############################################################
00159     #
00160     # v&eacute;rifions que les 4 champs d'entr&eacute;e sont remplis
00161     #
00162     ############################################################
00163     
00164     if (
$ni1=="") {
00165       erreur
("defnb","le nombre d'individus marqu&eacute;s",1) ;
00166       $ok 
;
00167     } ; # fin de si
00168     
00169     if (
$nb1=="") {
00170       erreur
("defnb","le nombre d'individus en tout",1) ;
00171       $ok 
;
00172     } ; # fin de si
00173     
00174     if (
$ni2=="") {
00175       erreur
("defnb","le nombre d'individus marqu&eacute;s",2) ;
00176       $ok 
;
00177     } ; # fin de si
00178     
00179     if (
$nb2=="") {
00180       erreur
("defnb","le nombre d'individus en tout",2) ;
00181       $ok 
;
00182     } ; # fin de si
00183     
00184     if (
$ok==1) {
00185     
00186     ############################################################
00187     #
00188     # v&eacute;rifions que les 4 champs d'entr&eacute;e sont des entiers
00189     #
00190     ############################################################
00191     
00192     if (! 
preg_match("/^[0-9]+$/",$ni1) ) {
00193       erreur
("valnb","le nombre d'individus marqu&eacute;s",1) ;
00194       $ok 
;
00195     } ; # fin de si
00196     
00197     if (! 
preg_match("/^[0-9]+$/",$nb1) ) {
00198       erreur
("valnb","le nombre d'individus en tout",1) ;
00199       $ok 
;
00200     } ; # fin de si
00201     
00202     if (! 
preg_match("/^[0-9]+$/",$ni2) ) {
00203       erreur
("valnb","le nombre d'individus marqu&eacute;s",2) ;
00204       $ok 
;
00205     } ; # fin de si
00206     
00207     if (! 
preg_match("/^[0-9]+$/",$nb2) ) {
00208       erreur
("valnb","le nombre d'individus en tout",2) ;
00209       $ok 
;
00210     } ; # fin de si
00211     
00212     } ; 
# fin de si ok=1
00213     
00214     ############################################################
00215     #
00216     # v&eacute;rifions enfin que les nombres d'individus en tout
00217     # ne sont pas nuls
00218     #
00219     ############################################################
00220     
00221     if (
$ok==1) {
00222     
00223     if ($nb1
==0) {
00224       erreur
("divnb","le nombre d'individus en tout ",1) ;
00225       $ok 
;
00226     } ; # fin de si
00227     
00228     if (
$nb2==0) {
00229       erreur
("divnb","le nombre d'individus en tout ",2) ;
00230       $ok 
;
00231     } ; # fin de si
00232     
00233     } ; 
# fin de si ok=1
00234     
00235     ############################################################
00236     #
00237     #    calculs v&eacute;ritables
00238     #
00239     ############################################################
00240     
00241     
00242     if (
$ok==1) {
00243     
00244     $ni    
$ni1 $ni2 ;
00245     $nb    
$nb1 $nb2 ;
00246     
00247     $f_nb1 
sprintf("%5d",$nb1) ;
00248     $f_nb2 
sprintf("%5d",$nb2) ;
00249     $f_nb  
sprintf("%5d",$nb ) ;
00250     
00251     $f_ni1 
sprintf("%5d",$ni1) ;
00252     $f_ni2 
sprintf("%5d",$ni2) ;
00253     $f_ni  
sprintf("%5d",$ni ) ;
00254     
00255     $p1 
100.0*($ni1/$nb1) ;
00256     $p2 
100.0*($ni2/$nb2) ;
00257     $p  
100.0*($ni /$nb ) ;
00258     
00259     $f_p1 
sprintf("%5.1f",$p1) ;
00260     $f_p2 
sprintf("%5.1f",$p2) ;
00261     $f_p  
sprintf("%5.1f",$p ) ;
00262     
00263     $p 
$p/100 ;
00264     
00265     $dp   
abs($p1 $p2)/100 ;
00266     $q    
$p*(1-$p)*((1/$nb1)+(1/$nb2)) ;
00267     $r    
sqrt($q) ;
00268     $ecre 
$dp/$r ;
00269     
00270     $f_ecre  
sprintf("%7.2f",$ecre ) ;
00271     
00272     
00273     echo "<blockquote>" 
;
00274     echo "<pre>" 
;
00275     
00276     echo "<span class=\"gbleu\">"
;
00277     echo " Population 1 :\n"
;
00278     echo "</span>"
;
00279     echo "    
$f_ni1  individus marqu&eacute;s \n" ;
00280     echo "    
$f_nb1  individus en tout \n" ;
00281     echo "           soit une proportion de 
$f_p1 %\n" ;
00282     echo "\n" 
;
00283     echo "<span class=\"gbleu\">"
;
00284     echo " Population 2 :\n" 
;
00285     echo "</span>"
;
00286     echo "    
$f_ni2  individus marqu&eacute;s \n" ;
00287     echo "    
$f_nb2  individus en tout \n" ;
00288     echo "           soit une proportion de 
$f_p2 %\n" ;
00289     
00290     echo "\n" 
;
00291     echo "<span class=\"bleu\">"
;
00292     echo " Si on r&eacute;unit les deux populations, on obtient \n" 
;
00293     echo "</span>"
;
00294     echo "    
$f_ni  individus marqu&eacute;s \n" ;
00295     echo "    
$f_nb  individus en tout \n" ;
00296     echo "           soit une proportion de 
$f_p  %\n" ;
00297     
00298     echo "\n" 
;
00299     echo "<span class=\"vert\">"
;
00300     echo "  Valeur de l'&eacute;cart-r&eacute;duit : 
$f_ecre \n" ;
00301     echo "     au seuil de 5 % soit la valeur 1.96\n" 
;
00302     
00303     echo "<span class=\"grouge\">"
;
00304     
00305     echo "     on " 
;
00306     
00307     if ($ecre
<1.96) {  echo " ne" ; } ; # fin de si
00308     
00309     echo 
" peut" ;
00310     
00311     if ($ecre
<1.96) {  echo " pas" ; } ; # fin de si
00312     
00313     echo 
" rejeter" ;
00314     
00315     echo "</span>"
;
00316     echo " l'hypoth&egrave;se que les pourcentages sont &eacute;gaux.\n\n" 
;
00317     echo "</span>"
;
00318     
00319     $pval 
fonction_R("2*pnorm(-$ecre)") ;
00320     if (strlen
($pval)>0) {
00321       echo "  La p-value bilat&eacute;rale est sans doute 
$pval soit en arrondi ".sprintf("%5.3f",$pval) ;
00322     } ; # fin si
00323     
00324     echo 
"</pre>" ;
00325     
00326     # un histogramme peut aider &agrave; visualiser, donc :
00327     
00328     $q1 
100 $p1 ;
00329     $q2 
100 $p2 ;
00330     $ti 
"&amp;xmrks=marqu%E9s_non%20marqu%E9s" ;
00331     $src1  
"../jphistopct.php?vdata=$p1"."_"."$q1"."&amp;titr=%20POPULATION%201$ti;
00332     $src1i 
"$src1&amp;tailx=300&amp;taily=200" ;
00333     $src2  
"../jphistopct.php?vdata=$p2"."_"."$q2"."&amp;titr=%20POPULATION%202$ti;
00334     $src2i 
"$src2&amp;tailx=300&amp;taily=200" ;
00335     
00336     echo "<table cellpadding=\"50\">\n" 
;
00337     echo "<tr> \n" 
;
00338     echo "<td> \n" 
;
00339     echo "<a href=\"
$src1\"><img src=\"$src1i\" alt=\"histogramme s&eacute;rie 1\" /></a> \n" ;
00340     echo "</td> \n" 
;
00341     echo "<td> \n" 
;
00342     echo "<a href=\"
$src1\"><img src=\"$src2i\" alt=\"histogramme s&eacute;rie 2\" /></a> \n" ;
00343     echo "</td> \n" 
;
00344     echo "</tr> \n" 
;
00345     echo "</table> \n" 
;
00346     
00347     # on affiche les syntaxe R et Sas pour ces donn&eacute;es :
00348     
00349     echo 
"<p class=\"texte\"> \n" ;
00350     echo " Si vous disposez du logiciel gratuit <a href=\"../tuteurs/tutrstat.htm\">R</a>, vous pouvez v&eacute;rifier ces calculs \n" 
;
00351     echo " &agrave; l'aide de l'expression&nbsp;: \n" 
;
00352     echo "</p>" 
;
00353     
00354     echo "<pre>" 
;
00355     echo "\n" 
;
00356     echo "     <span class=\"vert\">prop.test(c(
$ni1,$ni2),c($nb1,$nb2)) </span>\n" ;
00357     echo "\n" 
;
00358     echo "</pre>" 
;
00359     
00360     echo "<p class=\"texte\"> \n" 
;
00361     echo "Vous pouvez &eacute;galement faire un \"copier-coller\" de cett expression vers les sites \n" 
;
00362     echo " Rweb comme " 
;
00363     showurlcmt
("http://pbil.univ-lyon1.fr/Rweb/","pbil") ;
00364     echo " ou " 
;
00365     showurlcmt
("http://bayes.math.montana.edu/Rweb/Rweb.general.html","bayes") ;
00366     echo ".</p>" 
;
00367     
00368     
00369     echo "<p class=\"texte\"> \n" 
;
00370     echo " Si vous disposez du logiciel payant <a href=\"../tuteurs/tutsas.htm\">SAS</a>, vous pouvez v&eacute;rifier ces calculs \n" 
;
00371     echo " &agrave; l'aide des instructions&nbsp;: \n" 
;
00372     echo "</p>" 
;
00373     
00374     $nj1 
$nb1 $ni1 ;
00375     $nj2 
$nb2 $ni2 ;
00376     
00377     echo "<pre>" 
;
00378     echo "<span class=\"vert\">\n" 
;
00379     
00380     echo "     data compPourc ; \n" 
;
00381     echo "          input population marque $ effectif ; \n" 
;
00382     echo "          datalines; \n" 
;
00383     echo "     1   Oui  
$ni1 \n" ;
00384     echo "     1   Non  
$nj1 \n" ;
00385     echo "     2   Oui  
$ni2 \n" ;
00386     echo "     2   Non  
$nj2 \n" ;
00387     echo "     ; \n" 
;
00388     echo "      \n" 
;
00389     echo "     run; \n" 
;
00390     echo "      \n" 
;
00391     echo "     proc freq data=compPourc ; \n" 
;
00392     echo "       tables population*marque / nopercent nocol Chisq Exact; \n" 
;
00393     echo "       weight effectif ; \n" 
;
00394     echo "     run; \n" 
;
00395     echo "\n" 
;
00396     echo "</span>\n" 
;
00397     echo "</pre>" 
;
00398     
00399     echo "<p class=\"texte\"> \n" 
;
00400     echo " Vous pouvez consulter la page <a href=\"comppourc.php\">comppourc</a>, pour lire les r&eacute;sultats \n" 
;
00401     echo " fournis par <a href=\"../tuteurs/tutrstat.htm\">R</a>" 
;
00402     echo " et <a href=\"../tuteurs/tutsas.htm\">SAS</a> si on utilise les donn&eacute;es des deux exemples\n" 
;
00403     echo " de d&eacute;monstration.\n" 
;
00404     echo "</p>" 
;
00405     
00406     retourCalcStat
() ;
00407     
00408     echo "</blockquote>" 
;
00409     
00410     } ; # fin de si ok=1
00411     
00412     } ; 
# fin fonction compPct
00413     
00414     ###########################################################
00415     ###########################################################
00416     
00417     function 
compMoy() {
00418     
00419     ###########################################################
00420     ###########################################################
00421     
00422     echo 
"<h2>Comparaison bilat&eacute;rale de Moyennes </h2> " ;
00423     echo "<h2>&nbsp;&nbsp;&nbsp;(&eacute;chantillons GAUSSIENS ind&eacute;pendants)</h2> " 
;
00424     echo "<h2>&nbsp;&nbsp;&nbsp;(variances connues et suppos&eacute;es &eacute;gales)</h2> " 
;
00425     
00426     if (isset($_GET
["nbv1"]))  { $nbv1  $_GET["nbv1"] ; } ;
00427     if (isset($_POST
["nbv1"])) { $nbv1  $_POST["nbv1"] ; } ;
00428     
00429     if (isset($_GET
["nbv2"]))  { $nbv2  $_GET["nbv2"] ; } ;
00430     if (isset($_POST
["nbv2"])) { $nbv2  $_POST["nbv2"] ; } ;
00431     
00432     if (isset($_GET
["moy1"]))  { $moy1  $_GET["moy1"] ; } ;
00433     if (isset($_POST
["moy1"])) { $moy1  $_POST["moy1"] ; } ;
00434     
00435     if (isset($_GET
["moy2"]))  { $moy2  $_GET["moy2"] ; } ;
00436     if (isset($_POST
["moy2"])) { $moy2  $_POST["moy2"] ; } ;
00437     
00438     if (isset($_GET
["vri1"]))  { $vri1  $_GET["vri1"] ; } ;
00439     if (isset($_POST
["vri1"])) { $vri1  $_POST["vri1"] ; } ;
00440     
00441     if (isset($_GET
["vri2"]))  { $vri2  $_GET["vri2"] ; } ;
00442     if (isset($_POST
["vri2"])) { $vri2  $_POST["vri2"] ; } ;
00443     
00444     if (isset($_GET
["ect1"]))  { $ect1  $_GET["ect1"] ; } ;
00445     if (isset($_POST
["ect1"])) { $ect1  $_POST["ect1"] ; } ;
00446     
00447     if (isset($_GET
["ect2"]))  { $ect2  $_GET["ect2"] ; } ;
00448     if (isset($_POST
["ect2"])) { $ect2  $_POST["ect2"] ; } ;
00449     
00450     ## echo " $nbv1  $nbv2  $moy1  $moy2  $vri1  $vri2 \n" ;
00451     
00452     $ok 
;
00453     
00454     ############################################################
00455     #
00456     # v&eacute;rifions que les 6 champs d'entr&eacute;e sont remplis
00457     #
00458     ############################################################
00459     
00460     if (
$nbv1=="") {
00461       erreur
("defnb","le nombre d'individus ",1) ;
00462       $ok 
;
00463     } ; # fin de si
00464     
00465     if (
$nbv2=="") {
00466       erreur
("defnb","le nombre d'individus ",2) ;
00467       $ok 
;
00468     } ; # fin de si
00469     
00470     if (
$moy1=="") {
00471       erreur
("defnb","la moyenne ",1) ;
00472       $ok 
;
00473     } ; # fin de si
00474     
00475     if (
$moy2=="") {
00476       erreur
("defnb","la moyenne ",2) ;
00477       $ok 
;
00478     } ; # fin de si
00479     
00480     if (
$vri1=="") {
00481        if ($ect1
=="") {
00482           erreur
("defnb","la variance ",1) ;
00483           $ok 
;
00484        } ;
00485     } ; # fin de si
00486     
00487     if (
$vri2=="") {
00488        if ($ect2
=="") {
00489           erreur
("defnb","la variance ",2) ;
00490           $ok 
;
00491        } ;
00492     } ; # fin de si
00493     
00494     ############################################################
00495     #
00496     # v&eacute;rifions que les 2 effectifs sont des entiers
00497     #
00498     ############################################################
00499     
00500     if (
$ok==1) {
00501     
00502     if (! preg_match
("/^[0-9]+$/",$nbv1) ) {
00503       erreur
("valnb","le nombre d'individus ",1) ;
00504       $ok 
;
00505     } ; # fin de si
00506     
00507     if (! 
preg_match("/^[0-9]+$/",$nbv2) ) {
00508       erreur
("valnb","le nombre d'individus ",2) ;
00509       $ok 
;
00510     } ; # fin de si
00511     
00512     } ; 
# fin de si ok=1
00513     
00514     ############################################################
00515     #
00516     # v&eacute;rifions que les 2 moyennes et variances sont des r&eacute;els
00517     #
00518     ############################################################
00519     
00520     if (
$ok==1) {
00521     
00522     $moy1 
trim($moy1) ;
00523     if (! preg_match
("/^[0-9]+\.?[0-9]*$/",$moy1) ) {
00524       erreur
("valre","la moyenne ",1) ;
00525       $ok 
;
00526     } ; # fin de si
00527     
00528     $moy2 
trim($moy2) ;
00529     if (! preg_match
("/^[0-9]+\.?[0-9]*$/",$moy2) ) {
00530       erreur
("valre","la moyenne ",2) ;
00531       $ok 
;
00532     } ; # fin de si
00533     
00534     
00535     if (
$vri1=="") { $vri1 $ect1*$ect1 ; } ;
00536     
00537     $vri1 
trim($vri1) ;
00538     if (! preg_match
("/^[0-9]+\.?[0-9]*$/",$vri1) ) {
00539       erreur
("valre","la variance ",1) ;
00540       $ok 
;
00541     } ; # fin de si
00542     
00543     if (
$vri2=="") { $vri2 $ect2*$ect2 ; } ;
00544     
00545     $vri2 
trim($vri2) ;
00546     if (! preg_match
("/^[0-9]+\.?[0-9]*$/",$vri2) ) {
00547       erreur
("valre","la variance ",2) ;
00548       $ok 
;
00549     } ; # fin de si
00550     
00551     } ; 
# fin de si ok=1
00552     
00553     ############################################################
00554     #
00555     # v&eacute;rifions enfin que les nombres d'individus et les moyennes
00556     # ne sont pas nuls
00557     #
00558     ############################################################
00559     
00560     if (
$ok==1) {
00561     
00562     if ($nbv1
==0) {
00563       erreur
("divnb","le nombre d'individus ",1) ;
00564       $ok 
;
00565     } ; # fin de si
00566     
00567     if (
$nbv2==0) {
00568       erreur
("divnb","le nombre d'individus ",2) ;
00569       $ok 
;
00570     } ; # fin de si
00571     
00572     if (
$moy1==0) {
00573       erreur
("divnb","la moyenne ",1) ;
00574       $ok 
;
00575     } ; # fin de si
00576     
00577     if (
$moy2==0) {
00578       erreur
("divnb","la moyenne ",2) ;
00579       $ok 
;
00580     } ; # fin de si
00581     
00582     } ; 
# fin de si ok=1
00583     
00584     ############################################################
00585     #
00586     #    calculs v&eacute;ritables
00587     #
00588     ############################################################
00589     
00590     if (
$ok==1) {
00591     
00592     $f_nbv1 
sprintf("%5d",$nbv1) ;
00593     $f_nbv2 
sprintf("%5d",$nbv2) ;
00594     
00595     $f_moy1 
sprintf("%7.3f",$moy1) ;
00596     $f_moy2 
sprintf("%7.3f",$moy2) ;
00597     
00598     $ect1   
sqrt($vri1) ;
00599     $ect2   
sqrt($vri2) ;
00600     $f_ect1 
sprintf("%7.3f",$ect1) ;
00601     $f_ect2 
sprintf("%7.3f",$ect2) ;
00602     
00603     $cdv1   
100.0*($ect1/$moy1) ;
00604     $cdv2   
100.0*($ect2/$moy2) ;
00605     $f_cdv1 
sprintf("%5.1f",$cdv1) ;
00606     $f_cdv2 
sprintf("%5.1f",$cdv2) ;
00607     
00608     $df 
abs($moy1 $moy2) ;
00609     $de 
= (($vri1/$nbv1) +  ($vri2/$nbv2)) ;
00610     $rd 
sqrt($de) ;
00611     $dr 
$df/$rd ;
00612     
00613     
00614     echo "<blockquote>" 
;
00615     echo "<pre>" 
;
00616     echo "\n" 
;
00617     echo "\n" 
;
00618     
00619     echo "<span class=\"gbleu\">"
;
00620     echo " Population 1 :\n"
;
00621     echo "</span>"
;
00622     echo "    
$f_nbv1  individus\n" ;
00623     echo "           moyenne    
$f_moy1\n" ;
00624     echo "           &eacute;cart-type 
$f_ect1\n" ;
00625     echo "           soit un cdv de 
$f_cdv1 %\n" ;
00626     echo "\n" 
;
00627     
00628     echo "<span class=\"gbleu\">"
;
00629     echo " Population 2 :\n"
;
00630     echo "</span>"
;
00631     echo "    
$f_nbv2  individus\n" ;
00632     echo "           moyenne    
$f_moy2\n" ;
00633     echo "           &eacute;cart-type 
$f_ect2\n" ;
00634     echo "           soit un cdv de 
$f_cdv2 %\n" ;
00635     echo "\n" 
;
00636     
00637     echo "\n" 
;
00638     echo "<span class=\"vert\">"
;
00639     echo "  La valeur de l'&eacute;cart-r&eacute;duit est "
.sprintf("%7.3f",$dr)."\n" ;
00640     echo "     au seuil de 5 % soit la valeur 1.96\n" 
;
00641     echo "<span class=\"grouge\">"
;
00642     echo "     on " 
;
00643     if ($dr
<1.96) {  echo " ne" ; } ; # fin de si
00644     echo 
" peut" ;
00645     if ($dr
<1.96) {  echo " pas" ; } ; # fin de si
00646     echo 
" rejeter" ;
00647     echo "</span>"
;
00648     echo " l'hypoth&egrave;se que les moyennes sont &eacute;gales.\n\n" 
;
00649     echo "</span>"
;
00650     
00651     $pval 
fonction_R("2*pnorm(-$dr)") ;
00652     if (strlen
($pval)>0) {
00653       echo "  La p-value bilat&eacute;rale est sans doute 
$pval soit en arrondi ".sprintf("%5.3f",$pval) ;
00654     } ; # fin si
00655     
00656     echo 
"</pre>" ;
00657     
00658     retourCalcStat
() ;
00659     
00660     echo "</blockquote>" 
;
00661     
00662     
00663     } ; # fin de si ok=1
00664     
00665     } ; 
# fin fonction compMoy
00666     
00667     ###########################################################
00668     ###########################################################
00669     
00670     function 
compRoc() {
00671     
00672     ###########################################################
00673     ###########################################################
00674     
00675     echo 
"<h2>Comparaison d'AUROCS pour des &eacute;chantillons ind&eacute;pendants</h2>\n ";
00676     
00677     if (isset($_GET
["auroc1"]))  { $auroc1  $_GET["auroc1"] ; } ;
00678     if (isset($_POST
["auroc1"])) { $auroc1  $_POST["auroc1"] ; } ;
00679     
00680     if (isset($_GET
["auroc2"]))  { $auroc2  $_GET["auroc2"] ; } ;
00681     if (isset($_POST
["auroc2"])) { $auroc2  $_POST["auroc2"] ; } ;
00682     
00683     if (isset($_GET
["se1"]))  { $se1  $_GET["se1"] ; } ;
00684     if (isset($_POST
["se1"])) { $se1  $_POST["se1"] ; } ;
00685     
00686     if (isset($_GET
["se2"]))  { $se2  $_GET["se2"] ; } ;
00687     if (isset($_POST
["se2"])) { $se2  $_POST["se2"] ; } ;
00688     
00689     ## echo " $nbv1  $nbv2  $moy1  $moy2  $vri1  $vri2 \n" ;
00690     
00691     $ok 
;
00692     
00693     ############################################################
00694     #
00695     # v&eacute;rifions que les 4 champs d'entr&eacute;e sont remplis
00696     #
00697     ############################################################
00698     
00699     if (
$auroc1=="") {
00700       erreur
("defnb","l'AUROC ",1) ;
00701       $ok 
;
00702     } ; # fin de si
00703     
00704     if (
$auroc2=="") {
00705       erreur
("defnb","l'AUROC ",2) ;
00706       $ok 
;
00707     } ; # fin de si
00708     
00709     if (
$se1=="") {
00710       erreur
("defnb","l'erreur standard ",1) ;
00711       $ok 
;
00712     } ; # fin de si
00713     
00714     if (
$se2=="") {
00715       erreur
("defnb","l'erreur standard ",2) ;
00716       $ok 
;
00717     } ; # fin de si
00718     
00719     ############################################################
00720     #
00721     # v&eacute;rifions que les 2 moyennes et variances sont des r&eacute;els
00722     #
00723     ############################################################
00724     
00725     if (
$ok==1) {
00726     
00727     $auroc1 
trim($auroc1) ;
00728     if (! preg_match
("/^[0-9]+\.?[0-9]*$/",$auroc1) ) {
00729       erreur
("valre","l'AUROC ",1) ;
00730       $ok 
;
00731     } ; # fin de si
00732     
00733     $auroc2 
trim($auroc2) ;
00734     if (! preg_match
("/^[0-9]+\.?[0-9]*$/",$auroc2) ) {
00735       erreur
("valre","l'AUROC ",2) ;
00736       $ok 
;
00737     } ; # fin de si
00738     
00739     $se1 
trim($se1) ;
00740     if (! preg_match
("/^[0-9]+\.?[0-9]*$/",$se1) ) {
00741       erreur
("valre","l'erreur standard ",1) ;
00742       $ok 
;
00743     } ; # fin de si
00744     
00745     $se2 
trim($se2) ;
00746     if (! preg_match
("/^[0-9]+\.?[0-9]*$/",$se2) ) {
00747       erreur
("valre","l'erreur standard ",2) ;
00748       $ok 
;
00749     } ; # fin de si
00750     
00751     } ; 
# fin de si ok=1
00752     
00753     ############################################################
00754     #
00755     # v&eacute;rifions enfin que les SE ne sont pas nulles
00756     #
00757     ############################################################
00758     
00759     if (
$ok==1) {
00760     
00761     if ($se1
==0) {
00762       erreur
("divnb","l'erreur standard ",1) ;
00763       $ok 
;
00764     } ; # fin de si
00765     
00766     if (
$se2==0) {
00767       erreur
("divnb","l'erreur standard ",2) ;
00768       $ok 
;
00769     } ; # fin de si
00770     
00771     } ; 
# fin de si ok=1
00772     
00773     ############################################################
00774     #
00775     #    calculs v&eacute;ritables
00776     #
00777     ############################################################
00778     
00779     if (
$ok==1) {
00780     
00781     $f_auroc1 
sprintf("%7.3f",$auroc1) ;
00782     $f_auroc2 
sprintf("%7.3f",$auroc2) ;
00783     
00784     $f_se1 
sprintf("%7.3f",$se1) ;
00785     $f_se2 
sprintf("%7.3f",$se2) ;
00786     
00787     $df 
abs($auroc1 $auroc2) ;
00788     $de 
= ($se1*$se1 $se2*$se2) ;
00789     $rd 
sqrt($de) ;
00790     $dr 
$df/$rd ;
00791     
00792     echo "<blockquote>" 
;
00793     echo "<pre>" 
;
00794     echo "\n" 
;
00795     echo "\n" 
;
00796     
00797     echo "<span class=\"gbleu\">"
;
00798     echo " Echantillon 1 :\n"
;
00799     echo "</span>"
;
00800     echo "           AUROC   
$f_auroc1\n" ;
00801     echo "           SEM     
$f_se1\n" ;
00802     echo "\n" 
;
00803     
00804     echo "<span class=\"gbleu\">"
;
00805     echo " Echantillon 2 :\n"
;
00806     echo "</span>"
;
00807     echo "           AUROC   
$f_auroc2\n" ;
00808     echo "           SEM     
$f_se2\n" ;
00809     echo "\n" 
;
00810     
00811     echo "\n" 
;
00812     echo "<span class=\"vert\">"
;
00813     echo "  La valeur de l'&eacute;cart-r&eacute;duit est "
.sprintf("%7.3f",$dr)."\n" ;
00814     echo "     au seuil de 5 % soit la valeur 1.96\n" 
;
00815     echo "<span class=\"grouge\">"
;
00816     echo "     on " 
;
00817     if ($dr
<1.96) {  echo " ne" ; } ; # fin de si
00818     echo 
" peut" ;
00819     if ($dr
<1.96) {  echo " pas" ; } ; # fin de si
00820     echo 
" rejeter" ;
00821     echo "</span>"
;
00822     echo " l'hypoth&egrave;se que les moyennes sont &eacute;gales.\n\n" 
;
00823     echo "</span>"
;
00824     
00825     $pval 
fonction_R("2*pnorm(-$dr)") ;
00826     if (strlen
($pval)>0) {
00827       echo "  La p-value bilat&eacute;rale est sans doute 
$pval soit en arrondi ".sprintf("%5.3f",$pval) ;
00828     } ; # fin si
00829     
00830     
00831     echo 
"</pre>" ;
00832     
00833     retourCalcStat
() ;
00834     
00835     echo "</blockquote>" 
;
00836     
00837     
00838     } ; # fin de si ok=1
00839     
00840     } ; 
# fin fonction compMoy
00841     
00842     ###########################################################
00843     
00844     function 
getData($opt="") { global $tvalent$tige$seuil$uni,$ndlv ;
00845     
00846     ###########################################################
00847     
00848     # cette fonction r&eacute;cup&egrave;re les infos des formulaires
00849     
00850     # donn&eacute;es entr&eacute;es (textarea)
00851     
00852     $valent 
"" ;
00853     if (isset($_GET
["valent"]))  { $valent  $_GET["valent"] ; } ;
00854     if (isset($_POST
["valent"])) { $valent  $_POST["valent"] ; } ;
00855     
00856     # nom de la variable
00857     if (isset(
$_POST["ndlv"]))   { $ndlv    $_POST["ndlv"] ; } ;
00858     
00859     $ok 
;
00860     
00861     if (strlen
(trim($valent))==0) {
00862       erreur
("datatige") ;
00863       $ok
=;
00864     } ; # fin de si
00865     
00866     if (
$ok==1) {
00867     
00868        if ($opt
=="tige") {
00869            $atige 
"" ;
00870            if (isset($_GET
["atige"]))  { $atige  $_GET["atige"] ; } ;
00871            if (isset($_POST
["atige"])) { $atige  $_POST["atige"] ; } ;
00872            $atige 
trim($atige) ;
00873            if (strlen
($atige)>) {
00874               if (! preg_match
("/^[0-9]+$/",$atige) ) {
00875                  erreur
("tige",$atige) ;
00876                  $ok
=;
00877               } ; # fin de si
00878            } ; 
# fin si
00879        } ; 
# fin si
00880     
00881        if (
$opt=="gdr") {
00882            $seuil 
"" ;
00883            if (isset($_GET
["seuil"]))  { $seuil  $_GET["seuil"] ; } ;
00884            if (isset($_POST
["seuil"])) { $seuil  $_POST["seuil"] ; } ;
00885            $seuil 
trim($seuil) ;
00886            if (strlen
($seuil)>) {
00887               if (!preg_match
("/^[0-9]+$/",$seuil) ) {
00888                 erreur
("seuil",$seuil) ;
00889                 $ok
=;
00890               } ; # fin de si
00891            } ; 
# fin si
00892        } ; 
# fin si
00893     
00894     $uni 
"unit&eacute;s" ;
00895     if (isset($_GET
["und"]))  { $uni  $_GET["und"] ; } ;
00896     if (isset($_POST
["und"])) { $uni  $_POST["und"] ; } ;
00897     
00898     } else {
00899       $valent 
"" ;
00900     } ; # fin de si
00901     
00902     # si les donn&eacute;es sont entr&eacute;es en colonnes
00903     # il faut convertir \n en espace
00904     
00905     $walent  
strtr($valent";()\"\n'\\:?","           ") ;
00906     $walent  
strtr($valent",",".") ;
00907     $walent  
preg_replace("/\n/"," ",$walent) ;
00908     $walent  
preg_replace("/\r/"," ",$walent) ;
00909     $bvalent 
preg_split("/\s+/",trim($walent)) ;
00910     
00911     ##print_r($bvalent) ;
00912     
00913     # on ne garde que les valeurs non vides
00914     # foreach ne convient pas car on peut avoir des valeurs &eacute;gales
00915     
00916     $tvalent 
= array() ;
00917     $nbv     
count($bvalent) ;
00918     for ($idv
=0$idv <$nbv $idv++) {
00919       $laval 
$bvalent[$idv] ;
00920       if ($laval
!="") { array_push($tvalent,$laval) ; } ;
00921     } ; # fin de pourchaque
00922     
00923     ##print_r($tvalent) ;
00924     
00925     } ; 
# fin fonction getData
00926     
00927     ###########################################################
00928     ###########################################################
00929     
00930     function 
tigef() { global $tvalent$tige$seuil$uni ;
00931     
00932     ###########################################################
00933     ###########################################################
00934     
00935     $ok 
;
00936     echo "<h2>Diagramme Tige et Feuille (stem and leaf)</h2> " 
;
00937     
00938     # r&eacute;cup&eacute;ration des donn&eacute;es
00939     
00940     if (!isset(
$tige)) { $atige ; } ;
00941     getData
("tige") ;
00942     
00943     $nbmd   
count$tvalent )  ;
00944     $nbm    
;
00945     
00946     if ($nbmd
>0) {
00947     
00948     $dval   
= array() ; # pour php 4.x
00949     $dvalorg  
= array() ; # pour php 4.x
00950     
00951     for (
$im $im $nbmd $im++) {
00952       $mot 
trim($tvalent$im ])  ;
00953       if (strlen
($mot)>0) {
00954          $nbm
++ ;
00955          $dval
[$nbm] = $mot ;
00956          $dvalorg
[$nbm] = $mot ;
00957       } ; # fin de si
00958     } ; 
# fin de pour
00959     
00960     sort
($dval) ;
00961     
00962     # calcul de la tige
00963     
00964     $vmin 
$dval[0] ;
00965     $vmax 
$dval[$nbm-1] ;
00966     
00967     $vdif 
$vmax $vmin ;
00968     if (strlen
(trim($atige))==0) {
00969        $pdd  
;
00970        while ($pdd 
$vdif) {
00971           $pdd 
$pdd 10 ;
00972        } ; # fin de tant que
00973        $atige 
$pdd/10 ;
00974     } ; # fin de si
00975     
00976     if (
$atige==0) { $atige =  10 ; } ;
00977     
00978     echo "<blockquote>" 
;
00979     echo "<h3>Vos 
$nbm donn&eacute;es tri&eacute;es " ;
00980     echo " minimum=
$vmin maximum=$vmax taille_tige=$atige " ;
00981     echo "</h3>" 
;
00982     
00983     echo "<blockquote>" 
;
00984     echo "<textarea cols='70' rows='10' class=\"tajaunec\">" 
;
00985     
00986     for ($im 
$im $nbm $im++) {
00987         echo $dval
[$im]." " ;
00988     } ; # fin de pour
00989     
00990     echo 
"</textarea>" ;
00991     echo "</blockquote>" 
;
00992     
00993     # trac&eacute;s
00994     
00995     echo 
"<h3>Trac&eacute; des valeurs tri&eacute;es</h3>" ;
00996     
00997     $ydval   
"" ;
00998     for ($idv 
;$idv<$nbm ;$idv++) {
00999        $ydval 
.= $dval[$idv] ;
01000        if ($idv
<$nbm-1){  $ydval .= "_" ; } ;
01001     } ; /* fin pour idv */
01002     #echo("img src='../traceydata.php?ydval=$ydval'");
01003     echo 
"<blockquote>" ;
01004     echo("<img src='../traceydata.php?ydval=
$ydval' alt='graph' />");
01005     echo "</blockquote>" 
;
01006     
01007     echo "<h3>Trac&eacute; des valeurs originales</h3>" 
;
01008     
01009     $ydval   
"" ;
01010     for ($idv 
;$idv<$nbm ;$idv++) {
01011        $ydval 
.= $dvalorg[$idv] ;
01012        if ($idv
<$nbm-1){  $ydval .= "_" ; } ;
01013     } ; /* fin pour idv */
01014     #echo("img src='../traceydata.php?ydval=$ydval'");
01015     echo 
"<blockquote>" ;
01016     echo("<img src='../traceydata.php?ydval=
$ydval' alt='graph' />");
01017     echo "</blockquote>" 
;
01018     
01019     
01020     echo "<h3>Tige et feuille</h3>" 
;
01021     
01022     
01023     $dtige 
=  ;                         /* d&eacute;part    */
01024     $ftige 
round($vmax/$atige)*$atige /* fin       */
01025     
01026     /* d&eacute;termination des tiges */
01027     
01028     $vtige 
= array() ;  /* les valeurs de la tige */
01029     $btige 
= array() ;  /* la base de la tige */
01030     $ntige  
;/* indice de tige */
01031     $idm    
;    /* indice de mot */
01032     $tigec  
$dtige ;/* tige courante */
01033     
01034     while (
$tigec <= $ftige) {
01035        $ltige 
"" ;
01036        $tiges 
$tigec $atige  /* suivante */
01037        $motc  
$dval[$idm-1] ;
01038        while (($idm 
$nbm) and ($motc<$tiges)) {
01039           $nval  
$motc $tigec ;
01040           $ltige 
"$ltige $nval;
01041           $idm   
$idm ;
01042           $motc  
$dval[$idm-1] ;
01043        } ; /* fin tant que */
01044        $ntige 
$ntige ;
01045        $btige
[$ntige] = $tigec ;
01046        $vtige
[$ntige] = $ltige ;
01047        $tigec 
$tiges ;
01048     } ; /* fin tant que */
01049     
01050     /* affichage par tige */
01051     
01052     echo 
"<blockquote>" ;
01053     echo "<pre class=\"tavert\">" 
;
01054     echo "\n" 
;
01055     echo "\n" 
;
01056     echo "  Eff  Pct   Cumul   |  Tige  + Feuille\n" 
;
01057     
01058     $cum 
;
01059     $itige
=;
01060     $xm 
"" ;
01061     $vd 
"" ;
01062     $pf 
=  /* premi&egrave;re fois */
01063     while (
$itige<= $ntige) {
01064        $digec 
$btige[$itige] ;
01065        $tigec 
$vtige[$itige] ;
01066        if (strlen
(trim($tigec))==0) {
01067           $eff 
;
01068        } else {
01069          $tmots 
explode(" ",trim($tigec)) ;
01070          $eff   
count($tmots) ;
01071        } ; # fin de si
01072        $cum   
$cum $eff ;
01073        $pct   
sprintf("%3d",round((100.0*($eff/$nbm)))) ;
01074        $pcu   
sprintf("%3d",round(100.0*($cum/$nbm))) ;
01075        $lsor  
sprintf("%5d",$eff).$pct %  $pcu %   | ".sprintf("%5d",$digec)."  + $tigec   \n" ;
01076        if (($eff
>0) and ($pf==1)) { $pf ; } ;
01077        if ((($eff
==0) and ($pf>1) and($itige<$ntige)) or ($eff>0)) {
01078           echo $lsor 
;
01079           $vd 
.= trim($pct) ;
01080           $xm 
.= $digec ;
01081           if ($itige
<$ntige) { $vd .= "_" $xm .= "_" ; } ;
01082        } ; # fin de si
01083        $itige
++ ;
01084     } ; /* fin pour itige */
01085     echo 
"\n" ;
01086     echo "</pre>" 
;
01087     echo "</blockquote>" 
;
01088     
01089     if (substr
($vd,strlen($vd)-1,1) == "_") { $vd substr($vd,0,strlen($vd)-1)  ; } ;
01090     if (substr
($xm,strlen($xm)-1,1) == "_") { $xm substr($xm,0,strlen($xm)-1)  ; } ;
01091     
01092     echo "<h3>Histogramme des tiges</h3>" 
;
01093     
01094     echo "<blockquote>" 
;
01095     $urlg 
"../jphistopct.php?titr=&amp;vdata=$vd&amp;xmrks=$xm&amp;tailx=400&amp;tailx=600" ;
01096     echo "<img src=\"
$urlg\" alt=\"histogramme\" />" ;
01097     echo "</blockquote>" 
;
01098     
01099     # echo $urlg ;
01100     
01101     echo 
"<h3>Description statistique des valeurs</h3>" ;
01102     
01103     echo "<blockquote>" 
;
01104     echo "<table width=\"800\">" 
;
01105     echo "<tr><td>" 
;
01106     echo "<pre class=\"tagris\">" 
;
01107     echo "\n" 
;
01108     
01109     decrit_QT
($dval,$uni) ;
01110     
01111     echo "\n" 
;
01112     echo "</pre>" 
;
01113     echo "</td></tr>" 
;
01114     echo "</table>" 
;
01115     echo "</blockquote>" 
;
01116     
01117     } else {
01118     
01119     echo "</blockquote>" 
;
01120     echo "<blockquote>" 
;
01121     echo "<blockquote>" 
;
01122     
01123     } ; # fin si
01124     
01125     ###########################################################
01126     
01127     retourCalcStat
() ;
01128     
01129     echo "</blockquote>" 
;
01130     
01131     } ; # fin fonction tigef
01132     
01133     ###########################################################
01134     ###########################################################
01135     
01136     function 
chiDeux() {
01137     
01138     ###########################################################
01139     ###########################################################
01140     
01141     echo 
"<h2>Calcul du Chi-deux d'ind&eacute;pendance</h2> " ;
01142     
01143     } ; # fin fonction chiDeux
01144     
01145     ###########################################################
01146     ###########################################################
01147     
01148     function 
gdr() { global $tvalent$seuil$uni$ydata  ;
01149     
01150     ###########################################################
01151     ###########################################################
01152     
01153     echo 
"<h2>D&eacute;coupage en classes, m&eacute;thode GDR </h2> " ;
01154     echo "<h2>(discr&eacute;tisation d'une variable QT -- quantitative)</h2> " 
;
01155     
01156     pre
() ;
01157     
01158     /* r&eacute;cup&eacute;ration des donn&eacute;es */
01159     
01160     getData
("gdr") ;
01161     $nbmd   
count$tvalent )  ;
01162     $nbm    
;
01163     $dval   
= array() ; # pour php 4.x
01164     $nom    
= array() ; # pour php 4.x
01165     
01166     for (
$im $im $nbmd $im++) {
01167       $mot 
trim($tvalent$im ])  ;
01168       if (strlen
($mot)>0) {
01169          $nbm
++ ;
01170          $dval
[$nbm] = $mot ;
01171          ##echo " $nbm $mot \n" ;
01172          $nom
[$nbm-1] = "I".sprintf("%03d",$nbm) ;
01173       } ; # fin de si
01174     } ; 
# fin de pour
01175     sort
($dval) ;
01176     
01177     # tracePoints($dval) ;
01178     
01179     /* r&eacute;sum&eacute; statistique */
01180     
01181     echo 
"\n" ;
01182     echo "<span class='vert'>" 
;
01183     echo " Caract&eacute;ristiques des donn&eacute;es" 
;
01184     echo "</span>" 
;
01185     @decrit_QT
($dval,$uni) ;
01186     
01187     flush
() ;
01188     
01189     echo "<span class='vert'>Seuil de s&eacute;paration choisi : 
$seuil %</span>\n\n" ;
01190     
01191     /* calcul des diff&eacute;rences relatives */
01192     
01193     $somv  
;
01194     $tcum  
= array() ;
01195     $tdif  
= array() ;
01196     for ($idv 
0;$idv<$nbm;$idv++) {
01197        $jdv  
$idv ;
01198        $somv 
$somv $dval[$idv] ;
01199        if ($idv 
== 0) { $difv ; }
01200                  else { $difv 
$dval[$idv] - $dval[$jdv] ; } ;
01201        $tcum
[$idv]  = $somv ;
01202        $tdi
[$idv ]  = $difv ;  /* tableau original */
01203        $tdif
[$idv]  = $difv ;  /* tableau qui contiendra les valeurs tri&eacute;es */
01204        $nomD
[$idv]  = $nom[$idv] ;
01205     } ; /* fin pour idv */
01206     
01207     /* et on trie en d&eacute;croissant le tableau des diff&eacute;rences  */
01208     
01209     for (
$idv $idv <= $nbm-$idv++) {
01210         for ($jdv 
$idv+$jdv <= $nbm-1$jdv++) {
01211            $nomA 
$nomD[$idv ] ;
01212            $difA 
$tdif[$idv ] ;
01213            $nomB 
$nomD[$jdv ] ;
01214            $difB 
$tdif[$jdv ] ;
01215            if ($difB 
$difA ) {
01216               $nomD
[$jdv]  = $nomA ;
01217               $tdif
[$jdv]  = $difA ;
01218               $nomD
[$idv]  = $nomB ;
01219               $tdif
[$idv]  = $difB ;
01220            } ; /* fin de la permutation de A et B */
01221        } ; 
/* fin pour jdv */
01222     } ; 
/* fin pour idv */
01223     
01224     # affichage de controle
01225     
01226     #for ($idv = 0 ; $idv < $nbm ; $idv++) {
01227     #  echo "$idv $nomD[$idv] $tdif[$idv]\n" ;
01228     #} ; /* fin pour idv */
01229     flush
() ;
01230     
01231     /* ce qui permet de calculer les diff&eacute;rences normalis&eacute;es      */
01232     
01233     $tdr 
= array() ;
01234     for ($idv 
$idv $nbm $idv++) {
01235        $difr 
100.*$tdi[$idv]/abs($tdif[0]) ;
01236        $tdr
[$idv] = $difr ;
01237     } ; /* fin pour idv */
01238     
01239     /* disons que gecart=50 % constitue un grand &eacute;cart :                 */
01240     /* on marque alors o&ugrave; on pourrait d&eacute;finir une borne de classe */
01241     
01242     $gecart 
$seuil ;
01243     
01244     $tborn   
= array() ;
01245     $tclas   
= array() ;
01246     $tdv     
= array() ;
01247     $bsup    
= array() ;
01248     
01249     $ncla    
;
01250     for ($idv 
;$idv<$nbm ;$idv++) {
01251        $tborn
[$idv] = " " ;
01252     } ; /* fin pour idv */
01253     $tborn
[0] = "*" ;
01254     for ($idv 
;$idv<$nbm ;$idv++) {
01255        $tclas
[$idv]  = $ncla ;
01256        if (isset($tdv
[$idv])) {
01257           $bsup
[$ncla]  = $tdv[$idv] ;
01258        } ; /* finsi  */
01259     
01260        if (
$tdr[$idv] >= $gecart) {
01261           $tborn
[$idv] = "*" ;
01262           $ncla 
$ncla ;
01263           $tclas
[$idv] = $ncla ;
01264        } ; /* fin de nouvelle classe */
01265     } ; 
/* fin pour idv */
01266     
01267     flush
() ;
01268     
01269     /* on affiche les donn&eacute;es tri&eacute;es  */
01270     
01271     echo 
" Num Classe     Nom       Valeur  |  Nom      Diff.Abs    Diff_%  \n" ;
01272     echo "                                  |  \n" 
;
01273     
01274     for ($idv 
;$idv<$nbm ;$idv++) {
01275        if ($tdr
[$idv] >= $gecart) {
01276           echo "                                  |  \n" 
;
01277        } ; # fin si
01278        $ligs  
sprintf("%4d",1+$idv)."  ".$tclas[$idv]."   ".$tborn[$idv] ;
01279        $ligs 
.= "     ".$nom[$idv]."    ".sprintf("%8.2f",$dval[$idv]) ;
01280        if ($idv
==$nbm-1) {
01281           $ntdif 
;
01282           $ntdr  
;
01283        } else  {
01284           $jdv 
$idv ;
01285           $ntdif 
$dval[$jdv] - $dval[$idv] ;
01286           $ntdr  
100.0*$ntdif/$tdif[0] ;
01287        } ; # fin si
01288        $ligs 
.= "  |   ".$nom[$idv]."     ".sprintf("%5d",$ntdif)."   ".sprintf("%5.1f",$ntdr) ;
01289        echo "
$ligs\n" ;
01290     } ; /* fin pour idv */
01291     
01292     flush
() ;
01293     
01294     echo "\n" 
;
01295     echo "\n" 
;
01296     echo "<span class='vert'>" 
;
01297     echo " Description des classes issues de la gestion des diff&eacute;rences \n" 
;
01298     echo "</span>" 
;
01299     echo "\n" 
;
01300     echo " Numero  Borne_1    Borne_2    Effectif    Frequ_%   minimum  maximum\n" 
;
01301     echo "\n" 
;
01302     
01303     $tmin   
= array() ;
01304     $tmax   
= array() ;
01305     $eclas  
= array() ; /* effectif */
01306     for (
$idc $idc<= $ncla $idc++) {
01307          $tmin
[$idc]  = $dval[$nbm-1] ;
01308          $tmax
[$idc]  = $dval[0] ;
01309          $eclas
[$idc] =  ;
01310     } ; /* fin pour idc */
01311     
01312     for (
$idv ;$idv<$nbm ;$idv++) {
01313        $vdc 
$tclas[$idv] ;
01314        if ($dval
[$idv] < $tmin[$vdc]) {
01315            $tmin
[$vdc] = $dval[$idv] ;
01316        } ; # fin de si
01317        if (
$dval[$idv] > $tmax[$vdc]) {
01318            $tmax
[$vdc] = $dval[$idv] ;
01319        } ; # fin de si
01320        $eclas
[$vdc] =  $eclas[$vdc] + ;
01321        ## echo "$idv $tclas[$idv] $vdc $tmin[$vdc] $tmax[$vdc]\n" ;
01322     } ; 
/* fin pour idv */
01323     
01324     
01325     for (
$idc $idc<= $ncla $idc++) {
01326        $ligc 
sprintf("%3d",$idc)."    " ;
01327        if ($idc
==1) {
01328           $binf 
$dval[0] ;
01329        } else {
01330           $jdc  
$idc-1  ;
01331           $binf 
= ($tmax[$jdc]+$tmin[$idc])/;
01332        } ; # fin si
01333        $ligc 
$ligc."    ".sprintf("%5.1f",$binf) ;
01334        if ($idc
==$ncla) {
01335          $bsup 
$dval[$nbm-1] ;
01336        } else {
01337          $jdc  
$idc+;
01338          $bsup 
= ($tmax[$idc] + $tmin[$jdc])/;
01339        } ; # fin si
01340        $ligc 
$ligc."    ".sprintf("%5.1f",$bsup) ;
01341        $ligc 
.= "      ".sprintf("%4d",$eclas[$idc])."       ".sprintf("%5.1f",$eclas[$idc]*100/$nbm) ;
01342        $ligc 
.= "      ".sprintf("%6.2f",$tmin[$idc])."    ".sprintf("%6.2f",$tmax[$idc]) ;
01343        echo "
$ligc\n" ;
01344     } ; /* finpour idc = 1 to nbcla  */
01345     
01346     echo 
"\n" ;
01347     echo "\n" 
;
01348     echo "<span class='vert'>" 
;
01349     echo " Trac&eacute; des donn&eacute;es sans indication de classe\n" 
;
01350     echo "</span>" 
;
01351     echo "\n" 
;
01352     finpre
() ;
01353     
01354     $ydval   
"" ;
01355     for ($idv 
;$idv<$nbm ;$idv++) {
01356        $ydval 
.= $dval[$idv] ;
01357        if ($idv
<$nbm-1){  $ydval .= "_" ; } ;
01358     } ; /* fin pour idv */
01359     
01360     echo(
"<img src='../traceydata.php?ydval=$ydval' alt='graph' />");
01361     
01362     pre
() ;
01363     echo "\n" 
;
01364     echo "\n" 
;
01365     echo "<span class='vert'>" 
;
01366     echo " Trac&eacute; des donn&eacute;es avec couleur de classe\n" 
;
01367     echo "</span>" 
;
01368     echo "\n" 
;
01369     finpre
() ;
01370     
01371     $clval   
"" ;
01372     for ($idv 
;$idv<$nbm ;$idv++) {
01373        $clval 
.= $tclas[$idv] ;
01374        if ($idv
<$nbm-1){  $clval .= "_" ; } ;
01375     } ; /* fin pour idv */
01376     
01377     echo(
"<img src='../traceydata.php?ydval=$ydval&amp;clval=$clval' alt='graph' />");
01378     
01379     } ; # fin fonction gdr
01380     
01381     ###########################################################
01382     
01383     function 
putData($fichier,$tableau) {
01384     
01385     ###########################################################
01386     
01387     # on &eacute;crit les donn&eacute;es du tableau dans le $fichier pour R
01388     
01389     $fh 
fopen($fichier,"w") ;
01390     $nb 
count$tableau )  ;
01391     for ($iv 
$iv $nb $iv++) {
01392       fputs
($fh,$tableau[$iv]."\n") ;
01393     } ; # fin de pour
01394     fclose
($fh) ;
01395     
01396     } ; # fin fonction putData
01397     
01398     ###########################################################
01399     
01400     function 
aqtdet() { global $tvalent$uni$ndlv ;
01401     
01402     ###########################################################
01403     
01404     $dbg 
/* mettre 0 en normal, 1 pour debug ou pour un affichage d&eacute;taill&eacute; en cours  */
01405     
01406     h2
("Analyse d&eacute;taill&eacute;e d'une variable quantitative") ;
01407     
01408     blockquote
() ;
01409     
01410     getData
() ;
01411     
01412     if ($ndlv
=="") { $ndlv "sans_nom " ; } ;
01413     
01414     $ok 
;
01415     
01416     # r&eacute;cup&eacute;ration des donn&eacute;es
01417     
01418     $nbmd     
count$tvalent )  ;
01419     $nbm      
;
01420     $dval     
= array() ; # pour php 4.x
01421     $dvalorg  
= array() ; # pour php 4.x
01422     
01423     for (
$im $im $nbmd $im++) {
01424       $mot 
trim($tvalent$im ])  ;
01425       if (strlen
($mot)>0) {
01426          $nbm
++ ;
01427          $dval
[$nbm] = $mot ;
01428          $dvalorg
[$nbm] = $mot ;
01429       } ; # fin de si
01430     } ; 
# fin de pour
01431     
01432     sort
($dval) ;
01433     
01434     if ($nbm
==0) { finblockquote() ; return ; } ;
01435     
01436     # affichage des donn&eacute;es
01437     
01438     if (
strlen($uni)>0) { $lunite "(unit&eacute; : $uni)" ; } ;
01439     
01440     h3
("Vos $nbm donn&eacute;es tri&eacute;es $lunite pour la variable $ndlv") ;
01441     
01442     blockquote
() ;
01443     textarea
("dval","tajaunec",'7','120') ;
01444     for ($im 
$im $nbm $im++) {
01445         echo $dval
[$im]." " ;
01446     } ; # fin de pour
01447     fintextarea
() ;
01448     finblockquote
() ;
01449     
01450     # pr&eacute;paration des noms de fichier
01451     
01452     $fd     
"aqt_det.data" ;
01453     $ficdat 
tempnam("/tmp/",$fd) ;
01454     putData
($ficdat,$dval) ;
01455     $fg1     
"aqt_det_graph1" ;
01456     $fg2     
"aqt_det_graph2" ;
01457     $ficgr1 
tempnam("../wtmp/",$fg1) ;
01458     $ficgr2 
tempnam("../wtmp/",$fg2) ;
01459     $png1   
"$ficgr1.png" ;
01460     $png2   
"$ficgr2.png" ;
01461     
01462     $pdwtmp 
strpos($ficgr1,"/wtmp") ;
01463     $fdn1 
substr($ficgr1,$pdwtmp) ;
01464     $fdn2 
substr($ficgr2,$pdwtmp) ;
01465     $fpng1 
"..$fdn1.png" ;
01466     $fpng2 
"..$fdn2.png" ;
01467     
01468     if ($dbg
==1) {
01469        pre
() ;
01470           echo "ficdat est : 
$ficdat\n" ;
01471           echo "ficgr1 est : 
$ficgr1\n" ;
01472           echo "pdwtmp vaut 
$pdwtmp\n" ;
01473           echo "fin de nom est donc : 
$fdn1\n" ;
01474           echo "soit, en relatif : 
$fpng1 et $fpng2\n" ;
01475        finpre
() ;
01476     } ; # fin si
01477     
01478     # structure des r&eacute;sultats : un tableau avec
01479     #   en colonne gauche : les calculs
01480     #   en colonne droite : les graphiques
01481     
01482     table
(0,10) ;
01483     tr
() ;
01484        td
("valigntop")  ; h3("R&eacute;sum&eacute;s statistiques") ; fintd() ;
01485        td
("valigntop")  ; h3("Graphiques cliquables") ;  fintd() ;
01486     fintr
() ;
01487     tr
() ; td("L","valigntop") ;
01488     
01489     # calculs stat via execute_R de statuno.php
01490     
01491     $tcmdR 
= array() ;
01492     $nbcmd 
= -;
01493     
01494     $nbcmd
++ ; $tcmdR[$nbcmd] = "  source(\"statgh.r\") \n" ;
01495     $nbcmd
++ ; $tcmdR[$nbcmd] = "  lesd <- read.table(\"$ficdat\") \n" ;
01496     $nbcmd
++ ; $tcmdR[$nbcmd] = "  attach(lesd) \n" ;
01497     $nbcmd
++ ; $tcmdR[$nbcmd] = "  vqtGH <- V1\n" ;
01498     $nbcmd
++ ; $tcmdR[$nbcmd] = "  cat(\"STAT_DEB\n\")\n" ;
01499     #$nbcmd++ ; $tcmdR[$nbcmd] = "  cat(\"\nVoici vos donn&eacute;es: \")\n" ;
01500     #$nbcmd++ ; $tcmdR[$nbcmd] = "  print(vqtGH) \n" ;
01501     #$nbcmd++ ; $tcmdR[$nbcmd] = "  cat(\"et leur analyse: \")\n" ;
01502     $nbcmd
++ ; $tcmdR[$nbcmd] = "  dtQT(\"DataWeb\",vqtGH,\"$uni\",TRUE,\"$png1\",\"$png2\") \n" ;
01503     $nbcmd
++ ; $tcmdR[$nbcmd] = "  cat(\"STAT_FIN\n\")\n" ;
01504     
01505     if ($dbg
==1) {
01506       p
() ;
01507        echo " on utilise la fonction "
.b("execute_R()")." avec comme param&egrave;tre le tableau suivant&nbsp;" ;
01508       finp
() ;
01509       pre
() ;
01510         print_r
($tcmdR) ;
01511       finpre
() ;
01512     } ; # fin si
01513     
01514     pre
() ;
01515       execute_R
($tcmdR,$dbg) ; # la fonction execute_R est dans statuno.php
01516     finpre
() ;
01517     
01518     # fin de l'affichage des calculs
01519     
01520     pvide
() ;
01521     fintd
() ;
01522     td
("L","valigntop") ;
01523     
01524     p
("center") ;
01525     echo href
($fpng1,img($fpng1,"png1",600)) ;
01526     finp
() ;
01527     
01528     p
("center") ;
01529     echo href
($fpng2,img($fpng2,"png2",600)) ;
01530     finp
() ;
01531     fintd
() ; fintr() ; fintable() ;
01532     
01533     if ($dbg
==1) {
01534       p
() ;
01535        echo " fin des calculs et graphiques dans "
.b("aqtdet()")."." ;
01536       finp
() ;
01537     } ; # fin si
01538     
01539     finblockquote
() ;
01540     
01541     } ; # fin fonction aqtdet
01542     
01543     ###########################################################
01544     
01545     function 
smax() { global $tvalent$uni$ndlv ;
01546     
01547     ###########################################################
01548     
01549     error_reporting
(E_ALL E_NOTICE ) ;
01550     
01551     h2
("Indice de fiabilit&eacute; d'une variable quantitative") ;
01552     
01553     blockquote
() ;
01554     
01555     getData
() ;
01556     
01557     $bornea 
"" ;
01558     $borneb 
"" ;
01559     if (isset($_POST
["bornea"])) { $bornea $_POST["bornea"] ; } ;
01560     if (isset($_POST
["borneb"])) { $borneb $_POST["borneb"] ; } ;
01561     
01562     if ($ndlv
=="") { $ndlv "sans_nom " ; } ;
01563     
01564     if (($bornea
=="") or ($borneb=="")) {
01565       h3
("Vous n'avez pas donn&eacute; les bornes de l'intervalle. Calcul impossible.") ;
01566       finblockquote
() ;
01567       return ;
01568     } ; # fin si
01569     
01570     $ok 
;
01571     
01572     # r&eacute;cup&eacute;ration des donn&eacute;es
01573     
01574     /*
01575     pre() ;
01576     print_r($tvalent) ;
01577     finpre() ;
01578     */
01579     
01580     $nbmd     
count$tvalent )  ;
01581     $nbm      
;
01582     $dval     
= array()   ; # pour php 4.x
01583     $dvalorg  
= array()   ; # pour php 4.x
01584     
01585     for (
$im $im $nbmd $im++) {
01586       $mot 
trim($tvalent$im ])  ;
01587       if (strlen
($mot)>0) {
01588          $nbm
++ ;
01589          $dval
[$nbm] = $mot ;
01590          $dvalorg
[$nbm] = $mot ;
01591       } ; # fin de si
01592     } ; 
# fin de pour
01593     
01594     sort
($dval) ;
01595     
01596     if ($nbm
==0) { finblockquote() ; return ; } ;
01597     
01598     # affichage des donn&eacute;es
01599     
01600     if (
strlen($uni)>0) { $lunite "$uni; } else { $lunite "?" ; } ;
01601     
01602     h3
("Vos $nbm donn&eacute;es tri&eacute;es unit&eacute; : $lunite pour la variable $ndlv") ;
01603     
01604     blockquote
() ;
01605     textarea
("dval","tajaunec",'7','120') ;
01606     for ($im 
$im $nbm $im++) {
01607         echo $dval
[$im]." " ;
01608     } ; # fin de pour
01609     fintextarea
() ;
01610     finblockquote
() ;
01611     
01612     h3
("Plage de variation : borne inf&eacute;rieure = $bornea ; borne sup&eacute;rieure $borneb ") ;
01613     $smax 
fonction_R("sdmax($nbm ,$bornea , $borneb) ") ;
01614     
01615     h3
("Ecart-type maximum sur [ $bornea ; $borneb ] avec $nbm valeurs : $smax") ;
01616     $phr  
"" ;
01617     $phr 
.= "Indice de fiabilit&eacute; (100-rapport ecart-type des donn&eacute;es sur &eacute;cart-maximum) : " ;
01618     
01619     h3
($phr) ;
01620     
01621     # pr&eacute;paration des noms de fichier
01622     
01623     $fd     
"smax.data" ;
01624     $ficdat 
tempnam("/tmp/",$fd) ;
01625     putData
($ficdat,$dval) ;
01626     
01627     # calculs stat via execute_R de statuno.php
01628     
01629     $tcmdR 
= array() ;
01630     $nbcmd 
= -;
01631     
01632     $nbcmd
++ ; $tcmdR[$nbcmd] = "  # essai de source pour statgh.web.r encoding=latin1 \n" ;
01633     $nbcmd
++ ; $tcmdR[$nbcmd] = "  source(\"statgh.web.r\",encoding='latin1') \n" ;
01634     $nbcmd
++ ; $tcmdR[$nbcmd] = "  lesd <- read.table(\"$ficdat\") \n" ;
01635     $nbcmd
++ ; $tcmdR[$nbcmd] = "  attach(lesd) \n" ;
01636     $nbcmd
++ ; $tcmdR[$nbcmd] = "  vqtGH <- V1\n" ;
01637     $nbcmd
++ ; $tcmdR[$nbcmd] = "  cat(\"STAT_DEB\\n\")\n" ;
01638     $nbcmd
++ ; $tcmdR[$nbcmd] = "  cat(ifiab(vqtGH,$bornea , $borneb),\" %\n\")\n" ;
01639     $nbcmd
++ ; $tcmdR[$nbcmd] = "  cat(\"STAT_FIN\\n\")\n" ;
01640     
01641     pre
("cadre") ;
01642     execute_R
($tcmdR,0) ;
01643     finpre
() ;
01644     
01645     # fin de l'affichage des calculs
01646     
01647     
01648     finblockquote
() ;
01649     
01650     } ; # fin fonction smax
01651     
01652     ###########################################################
01653     
01654     ?>

La coloration syntaxique est réalisée par un enrobage de la function php nommée highlight_file

mais si vous préférez, vous pouvez utiliser celle de SyntaxHighlighter ou même celle de geshi.

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)