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é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> à 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é inconnu !</h2>" ;
00062 echo " ce que vous cherchez est probablement <a href=\"calcstat.htm\">ici</a>\n" ;
00063 } ; # fin si erreur sur le calcul à 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éel\n" ;
00093 } ; # fin si sur pop
00094 echo "</h2>\n" ;
00095 echo "</blockquote>\n" ;
00096 } ; # fin si erreur sur type des nb ré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 ê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é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 être un nombre entier strictement positif et vous avez " ;
00114 echo " donné la valeur <br />\n \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érale de Pourcentages </h2> " ;
00139 echo "<h2> (é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érifions que les 4 champs d'entrée sont remplis
00161 #
00162 ############################################################
00163
00164 if ($ni1=="") {
00165 erreur("defnb","le nombre d'individus marqué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é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érifions que les 4 champs d'entrée sont des entiers
00189 #
00190 ############################################################
00191
00192 if (! preg_match("/^[0-9]+$/",$ni1) ) {
00193 erreur("valnb","le nombre d'individus marqué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é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é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é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é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é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éunit les deux populations, on obtient \n" ;
00293 echo "</span>";
00294 echo " $f_ni individus marqué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'écart-ré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èse que les pourcentages sont é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é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 à visualiser, donc :
00327
00328 $q1 = 100 - $p1 ;
00329 $q2 = 100 - $p2 ;
00330 $ti = "&xmrks=marqu%E9s_non%20marqu%E9s" ;
00331 $src1 = "../jphistopct.php?vdata=$p1"."_"."$q1"."&titr=%20POPULATION%201$ti" ;
00332 $src1i = "$src1&tailx=300&taily=200" ;
00333 $src2 = "../jphistopct.php?vdata=$p2"."_"."$q2"."&titr=%20POPULATION%202$ti" ;
00334 $src2i = "$src2&tailx=300&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érie 1\" /></a> \n" ;
00340 echo "</td> \n" ;
00341 echo "<td> \n" ;
00342 echo "<a href=\"$src1\"><img src=\"$src2i\" alt=\"histogramme sé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é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érifier ces calculs \n" ;
00351 echo " à l'aide de l'expression : \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 é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érifier ces calculs \n" ;
00371 echo " à l'aide des instructions : \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é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ées des deux exemples\n" ;
00403 echo " de dé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érale de Moyennes </h2> " ;
00423 echo "<h2> (échantillons GAUSSIENS indépendants)</h2> " ;
00424 echo "<h2> (variances connues et supposées é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érifions que les 6 champs d'entré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é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érifions que les 2 moyennes et variances sont des ré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é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é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 " é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 " é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'écart-ré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èse que les moyennes sont é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é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 échantillons indé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érifions que les 4 champs d'entré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érifions que les 2 moyennes et variances sont des ré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é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é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'écart-ré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èse que les moyennes sont é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é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écupère les infos des formulaires
00849
00850 # données entré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é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ées sont entré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 é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écupération des donné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ées trié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és
00994
00995 echo "<h3>Tracé des valeurs trié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é 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épart */
01024 $ftige = round($vmax/$atige)*$atige ; /* fin */
01025
01026 /* dé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è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=&vdata=$vd&xmrks=$xm&tailx=400&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é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écoupage en classes, méthode GDR </h2> " ;
01154 echo "<h2>(discrétisation d'une variable QT -- quantitative)</h2> " ;
01155
01156 pre() ;
01157
01158 /* récupération des donné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ésumé statistique */
01180
01181 echo "\n" ;
01182 echo "<span class='vert'>" ;
01183 echo " Caractéristiques des données" ;
01184 echo "</span>" ;
01185 @decrit_QT($dval,$uni) ;
01186
01187 flush() ;
01188
01189 echo "<span class='vert'>Seuil de séparation choisi : $seuil %</span>\n\n" ;
01190
01191 /* calcul des diffé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ées */
01204 $nomD[$idv] = $nom[$idv] ;
01205 } ; /* fin pour idv */
01206
01207 /* et on trie en décroissant le tableau des diffé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érences normalisé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 écart : */
01240 /* on marque alors où on pourrait dé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ées trié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é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é des donné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é des donné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&clval=$clval' alt='graph' />");
01378
01379 } ; # fin fonction gdr
01380
01381 ###########################################################
01382
01383 function putData($fichier,$tableau) {
01384
01385 ###########################################################
01386
01387 # on écrit les donné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étaillé en cours */
01405
01406 h2("Analyse détaillé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écupération des donné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ées
01437
01438 if (strlen($uni)>0) { $lunite = "(unité : $uni)" ; } ;
01439
01440 h3("Vos $nbm données trié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é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é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ésumé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é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ètre le tableau suivant " ;
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é 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é les bornes de l'intervalle. Calcul impossible.") ;
01566 finblockquote() ;
01567 return ;
01568 } ; # fin si
01569
01570 $ok = 1 ;
01571
01572 # récupération des donné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ées
01599
01600 if (strlen($uni)>0) { $lunite = "$uni" ; } else { $lunite = "?" ; } ;
01601
01602 h3("Vos $nbm données triées unité : $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érieure = $bornea ; borne supé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é (100-rapport ecart-type des données sur écart-maximum) : " ;
01618
01619 h3($phr) ;
01620
01621 # pré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 ?>
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 à la page principale de (gH)