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=0 ) {
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
= 1 ;
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
= 0 ;
00167     } ;
# fin de si
00168     
00169     
if (
$nb1=="") {
00170     
erreur
("defnb","le nombre d'individus en tout",1) ;
00171     
$ok
= 0 ;
00172     } ;
# fin de si
00173     
00174     
if (
$ni2=="") {
00175     
erreur
("defnb","le nombre d'individus marqu&eacute;s",2) ;
00176     
$ok
= 0 ;
00177     } ;
# fin de si
00178     
00179     
if (
$nb2=="") {
00180     
erreur
("defnb","le nombre d'individus en tout",2) ;
00181     
$ok
= 0 ;
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
= 0 ;
00195     } ;
# fin de si
00196     
00197     
if (!
preg_match("/^[0-9]+$/",$nb1) ) {
00198     
erreur
("valnb","le nombre d'individus en tout",1) ;
00199     
$ok
= 0 ;
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
= 0 ;
00205     } ;
# fin de si
00206     
00207     
if (!
preg_match("/^[0-9]+$/",$nb2) ) {
00208     
erreur
("valnb","le nombre d'individus en tout",2) ;
00209     
$ok
= 0 ;
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
= 0 ;
00226     } ;
# fin de si
00227     
00228     
if (
$nb2==0) {
00229     
erreur
("divnb","le nombre d'individus en tout ",2) ;
00230     
$ok
= 0 ;
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
= 1 ;
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
= 0 ;
00463     } ;
# fin de si
00464     
00465     
if (
$nbv2=="") {
00466     
erreur
("defnb","le nombre d'individus ",2) ;
00467     
$ok
= 0 ;
00468     } ;
# fin de si
00469     
00470     
if (
$moy1=="") {
00471     
erreur
("defnb","la moyenne ",1) ;
00472     
$ok
= 0 ;
00473     } ;
# fin de si
00474     
00475     
if (
$moy2=="") {
00476     
erreur
("defnb","la moyenne ",2) ;
00477     
$ok
= 0 ;
00478     } ;
# fin de si
00479     
00480     
if (
$vri1=="") {
00481      if (
$ect1
=="") {
00482     
erreur
("defnb","la variance ",1) ;
00483     
$ok
= 0 ;
00484      } ;
00485     } ;
# fin de si
00486     
00487     
if (
$vri2=="") {
00488      if (
$ect2
=="") {
00489     
erreur
("defnb","la variance ",2) ;
00490     
$ok
= 0 ;
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
= 0 ;
00505     } ;
# fin de si
00506     
00507     
if (!
preg_match("/^[0-9]+$/",$nbv2) ) {
00508     
erreur
("valnb","le nombre d'individus ",2) ;
00509     
$ok
= 0 ;
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
= 0 ;
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
= 0 ;
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
= 0 ;
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
= 0 ;
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
= 0 ;
00565     } ;
# fin de si
00566     
00567     
if (
$nbv2==0) {
00568     
erreur
("divnb","le nombre d'individus ",2) ;
00569     
$ok
= 0 ;
00570     } ;
# fin de si
00571     
00572     
if (
$moy1==0) {
00573     
erreur
("divnb","la moyenne ",1) ;
00574     
$ok
= 0 ;
00575     } ;
# fin de si
00576     
00577     
if (
$moy2==0) {
00578     
erreur
("divnb","la moyenne ",2) ;
00579     
$ok
= 0 ;
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
= 1 ;
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
= 0 ;
00702     } ;
# fin de si
00703     
00704     
if (
$auroc2=="") {
00705     
erreur
("defnb","l'AUROC ",2) ;
00706     
$ok
= 0 ;
00707     } ;
# fin de si
00708     
00709     
if (
$se1=="") {
00710     
erreur
("defnb","l'erreur standard ",1) ;
00711     
$ok
= 0 ;
00712     } ;
# fin de si
00713     
00714     
if (
$se2=="") {
00715     
erreur
("defnb","l'erreur standard ",2) ;
00716     
$ok
= 0 ;
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
= 0 ;
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
= 0 ;
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
= 0 ;
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
= 0 ;
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
= 0 ;
00764     } ;
# fin de si
00765     
00766     
if (
$se2==0) {
00767     
erreur
("divnb","l'erreur standard ",2) ;
00768     
$ok
= 0 ;
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
= 1 ;
00860     
00861     if (
strlen
(trim($valent))==0) {
00862     
erreur
("datatige") ;
00863     
$ok
=0 ;
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)>0 ) {
00874      if (!
preg_match
("/^[0-9]+$/",$atige) ) {
00875     
erreur
("tige",$atige) ;
00876     
$ok
=0 ;
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)>0 ) {
00887      if (!
preg_match
("/^[0-9]+$/",$seuil) ) {
00888     
erreur
("seuil",$seuil) ;
00889     
$ok
=0 ;
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
= 1 ;
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 = 0 ; } ;
00941     
getData
("tige") ;
00942     
00943     
$nbmd
= count( $tvalent ) ;
00944     
$nbm
= 0 ;
00945     
00946     if (
$nbmd
>0) {
00947     
00948     
$dval
= array() ; # pour php 4.x
00949     
$dvalorg
= array() ; # pour php 4.x
00950     
00951     
for (
$im = 0 ; $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
= 1 ;
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
= 0 ; $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
= 0 ;$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
= 1 ;$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
= 0 ; /* 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
= 0 ;/* indice de tige */
01031     
$idm
= 1 ; /* 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 + 1 ;
01042     
$motc
= $dval[$idm-1] ;
01043      } ;
/* fin tant que */
01044     
$ntige
= $ntige + 1 ;
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
= 0 ;
01059     
$itige
=1 ;
01060     
$xm
= "" ;
01061     
$vd
= "" ;
01062     
$pf
= 1 ; /* premi&egrave;re fois */
01063     
while (
$itige<= $ntige) {
01064     
$digec
= $btige[$itige] ;
01065     
$tigec
= $vtige[$itige] ;
01066      if (
strlen
(trim($tigec))==0) {
01067     
$eff
= 0 ;
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 = 2 ; } ;
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
= 0 ;
01163     
$dval
= array() ; # pour php 4.x
01164     
$nom
= array() ; # pour php 4.x
01165     
01166     
for (
$im = 0 ; $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
= 0 ;
01194     
$tcum = array() ;
01195     
$tdif = array() ;
01196     for (
$idv
= 0;$idv<$nbm;$idv++) {
01197     
$jdv
= $idv - 1 ;
01198     
$somv
= $somv + $dval[$idv] ;
01199      if (
$idv
== 0) { $difv = 0 ; }
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 = 0 ; $idv <= $nbm-2 ; $idv++) {
01210      for (
$jdv
= $idv+1 ; $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
= 0 ; $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
= 1 ;
01250     for (
$idv
= 0 ;$idv<$nbm ;$idv++) {
01251     
$tborn
[$idv] = " " ;
01252     } ;
/* fin pour idv */
01253     
$tborn
[0] = "*" ;
01254     for (
$idv
= 0 ;$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 + 1 ;
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
= 0 ;$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
= 0 ;
01282     
$ntdr
= 0 ;
01283      } else {
01284     
$jdv
= $idv + 1 ;
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 = 1 ; $idc<= $ncla ; $idc++) {
01307     
$tmin
[$idc] = $dval[$nbm-1] ;
01308     
$tmax
[$idc] = $dval[0] ;
01309     
$eclas
[$idc] = 0 ;
01310     } ;
/* fin pour idc */
01311     
01312     
for (
$idv = 0 ;$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] + 1 ;
01321     
## echo "$idv $tclas[$idv] $vdc $tmin[$vdc] $tmax[$vdc]\n" ;
01322     
} ; /* fin pour idv */
01323     
01324     
01325     
for (
$idc = 1 ; $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])/2 ;
01332      } ;
# fin si
01333     
$ligc
= $ligc." ".sprintf("%5.1f",$binf) ;
01334      if (
$idc
==$ncla) {
01335     
$bsup
= $dval[$nbm-1] ;
01336      } else {
01337     
$jdc
= $idc+1 ;
01338     
$bsup
= ($tmax[$idc] + $tmin[$jdc])/2 ;
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
= 0 ;$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
= 0 ;$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
= 0 ; $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
= 0 ; /* 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
= 1 ;
01415     
01416     
# r&eacute;cup&eacute;ration des donn&eacute;es
01417     
01418     
$nbmd
= count( $tvalent ) ;
01419     
$nbm
= 0 ;
01420     
$dval
= array() ; # pour php 4.x
01421     
$dvalorg
= array() ; # pour php 4.x
01422     
01423     
for (
$im = 0 ; $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
= 0 ; $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
= -1 ;
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
= 1 ;
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
= 0 ;
01582     
$dval
= array() ; # pour php 4.x
01583     
$dvalorg
= array() ; # pour php 4.x
01584     
01585     
for (
$im = 0 ; $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
= 0 ; $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
= -1 ;
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     
?>

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)