MATH_EgaliteMoyennes    [Statistiques]

Par Teddy Linet (Math4D v1)
Nouvelle recherche
Si (Faux)
   ` MATH_EgaliteMoyennes [Teddy LINET 12/2002]
   ` ---------------------------------------------
   ` ATTENTION : Nécessite MATH_LoiNormale
   ` ---------------------------------------------
   ` Dans sa 1ère écriture :
   ` Permet de comparer une moyenne expérimentale à une valeur donnée
   ` Dans sa 2e écriture
   ` Permet de comparer deux moyennes expérimentales
   ` 
   ` Renvoie p, le risque que ses 2 valeurs soient différentes
   ` Si p est supérieur au seuil de signification (habituellement 5%) on peut
   ` considerer que les moyennes sont différentes (rejet de l'hypothèse Ho);
   ` Sinon, on ne peut rien conclure
   ` 
   ` ATTENTION : ceci ne correspond pas à la conduite habituelle
   ` en statistiques (d'abord test, puis calcul de p si z est dans l'intervalle
   ` de confiance); Mais le résultat est en fait équivalent
   ` ---------------------------------------------
   ` Rappels mathématiques :
   ` Le test d'égalité d'une moyenne expérimentale à une valeur donnée
   ` Ce test permet de vérifier si la moyenne expérimentale x coincide avec une
   ` valeur donnée muh (réelle)
   ` Le paramètre à évaluer est donc le suivant :
   `       x-muh
   ` z =-------------------
   `      Sqr(s^2/n)
   `ou s représente la variance et n le nombre d'élément
   ` Pour comparer 2 moyennes expérimentales (xa et xb) le paramètre à évaluer est d
   `           xa - xb
   ` z=---------------------------
   `       ( sa^2     sb^2   )
   `    Sqr(----- + -----  )
   `       (  na         nb    )
   ` Les conditions sont : n >= 30
   ` ---------------------------------------------
   ` Deux écritures :
   ` 
   ` MATH_EgaliteMoyennes (MoyenneObs;VarianceObs;NbElements;MoyenneVraie)
   ` MoyenneObs (Réel) : Moyenne Observée dans la série
   ` VarianceObs (Réel) : Variance Observée dans la série
   ` NbElements (Réel) : Nombre d'éléments de la série
   ` MoyenneVraie (Réel) : Valeur à comparer
   ` Renvoie $O (Réel)  représentant p le risque que ses 2 valeurs soient différente
   ` 
   ` MATH_EgaliteMoyennes (MoyenneA;VarianceA;NbElementsA;MoyenneB;
   ` VarianceB;NbElementsB)
   ` MoyenneA (Réel) : Moyenne Observée dans la série A
   ` VarianceA (Réel) : Variance Observée dans la série A
   ` NbElementsA (Réel) : Nombre d'éléments de la série A
   ` MoyenneB (Réel) : Moyenne Observée dans la série B
   ` VarianceB (Réel) : Variance Observée dans la série B
   ` NbElementsB (Réel) : Nombre d'éléments de la série B
   ` ---------------------------------------------
   ` MATHERROR
   ` 0 -> Pas d'erreur
   ` -1 -> n <= 0
   ` -2 -> variance nulle
   ` +1 -> Conditions non remplies (nA< 30 ou nB < 30)
   ` +2 -> Ecart-type négatif (mis à positif) ou nul
   ` +3 -> n n'est pas un entier (arrondi)
   ` ---------------------------------------------
   ` EXEMPLES
   ` 
Fin de si 

C_REEL($0;$p_F;$1;$vMoyenneObs_F;$vMoyenneA_F;$2;$vVarianceObs_F;$vVarianceA_F)
C_REEL($3;$vNbElementsObs_F;$vNbElementsA_F;$4;$vMoyenneVraie_F;$vMoyenneB_F)
C_REEL($5;$vVarianceB_F;$6;$vNbElementsB_F;$z_F;$VarTravail_F)
C_ENTIER LONG($vMathError_L;MATHERROR)
$vMathError_L:=0
$p_F:=0  ` par défaut
Si (Nombre de parametres#6)  `Cas ou il s'agit de la comparaison avec une moyenne vraie
 $vMoyenneObs_F:=$1
 $vVarianceObs_F:=$2
 $vNbElementsObs_F:=$3
 $vMoyenneVraie_F:=$4
   ` Matherror n'est pas tout de suite calculée
   ` Car elle pourrait être parasitée par LoiNormale
 Au cas ou 
  : ($vNbElementsObs_F<=1)  ` Sinon division par zéro
  $vMathError_L:=-1
  : ($vVarianceObs_F=0)  ` Sinon division par zéro
  $vMathError_L:=-2
 Sinon   ` Erreurs corrigeables (du moins important au plus important)
    ` On n'utilise pas un "au cas où" car les modifications peuvent être multiples   
  Si (($vNbElementsObs_F-Ent($vNbElementsObs_F))#0)  ` Pas un entier
   $vMathError_L:=3
   $vNbElementsObs_F:=Arrondi($vNbElementsObs_F;0)  ` Arrondi
  Fin de si 
  Si ($vVarianceObs_F<0)
   $vMathError_L:=2
   $vVarianceObs_F:=Abs($vVarianceObs_F)  ` Valeur absolue
  Fin de si 
  Si ($vNbElementsObs_F<30)  ` Conditions non remplies
   $vMathError_L:=1
  Fin de si 
 Fin de cas 
 Si ($vMathError_L>=0)  ` Pas de drame => on continue
  $z_F:=$vMoyenneObs_F-$vMoyenneVraie_F
  $VarTravail_F:=Racine carree($vVarianceObs_F/$vNbElementsObs_F)
  $z_F:=$z_F/$VarTravail_F  ` Calcul du paramètre
    ` Logiquement on vérifie que le paramètre est bien dans l'intervalle de pari
  $p_F:=1-(MATH_LoiNormale ($z_F;"P")*2)  ` Puis on cacul p
 Fin de si 
Sinon   ` Cas ou il s'agit de la comparaison entre 2 moyennes observées
 $vMoyenneA_F:=$1
 $vVarianceA_F:=$2
 $vNbElementsA_F:=$3
 $vMoyenneB_F:=$4
 $vVarianceB_F:=$5
 $vNbElementsB_F:=$6
 Au cas ou 
  : (($vNbElementsA_F<=1) | ($vNbElementsB_F<=1))  ` Sinon division par zéro
  $vMathError_L:=-1
  : (($vVarianceA_F=0) | ($vVarianceB_F=0))  ` Sinon division par zéro
  $vMathError_L:=-2
 Sinon   ` Erreurs corrigeables (du moins important au plus important)
  Si (($vNbElementsA_F-Ent($vNbElementsA_F))#0)  ` Pas un entier
   $vMathError_L:=3
   $vNbElementsA_F:=Arrondi($vNbElementsA_F;0)  ` Arrondi
  Fin de si 
  Si (($vNbElementsB_F-Ent($vNbElementsB_F))#0)  ` Pas un entier
   $vMathError_L:=3
   $vNbElementsB_F:=Arrondi($vNbElementsB_F;0)  ` Arrondi
  Fin de si 
  Si ($vVarianceA_F<0)
   $vMathError_L:=2
   $vVarianceA_F:=Abs($vVarianceA_F)  ` Valeur absolue
  Fin de si 
  Si ($vVarianceB_F<0)
   $vMathError_L:=2
   $vVarianceB_F:=Abs($vVarianceB_F)  ` Valeur absolue
  Fin de si 
  Si (($vNbElementsA_F<30) | ($vNbElementsB_F<30))
   $vMathError_L:=1
  Fin de si 
 Fin de cas 
 Si ($vMathError_L>=0)  ` Pas de drame => on continue
  $z_F:=$vMoyenneA_F-$vMoyenneB_F
  $VarTravail_F:=Racine carree(($vVarianceA_F/$vNbElementsA_F)+($vVarianceB_F/$vNbElementsB_F))
  $z_F:=$z_F/$VarTravail_F
    ` Logiquement on vérifie que le paramètre est bien dans l'intervalle de pari
  $p_F:=1-(MATH_LoiNormale ($z_F;"P")*2)  ` Puis on cacul p    
 Fin de si 
Fin de si 

$0:=$p_F  ` Enfin, on renvoie la valeur calculée
MATHERROR:=$vMathError_L  ` Puis on renvoie le matherror de cette fonction