Variance et tables dynamiques
Pour vous éviter de longues recherches, voici quelques observations que j'ai pu faire autour de l'utilisation de la variance, avec un parallèle par rapport aux fonctions similaires en Excel.
- La fonction TotalVariance(array) est identique à la fct VAR.P() d'Excel mais non divisée par le nombre d'items de la série
Il faut donc encore faire un TotalVariance(array) / N
- NB: la fonction VAR() d'Excel correspond à ((V1-Moyenne)^2 + (V2-Moyenne)^2 + (V3-Moyenne)^2) /2, donc N-1 et non pas /3 !!
VAR.P() divise bien quant à elle par le nombre d'items N
- Si vous utilisez un tableau dynamique... il faudra préciser le nombres de valeurs à adresser, contrairement à un tableau statique,
sinon le résultat sera pour moi quelconque:
Code:
1 2 3 4 5 6 7 8 9 10
| Type
Tab = Array of Float;
Var
TestTab : Tab;
Begin
Setlength(TestTab, 10);
... ajoutez ici une alimentation de votre table TestTab...
TabVariance(TestTab); // Résultat quelconque ici mais qui serait correct avec une table statique
TabVariance(TestTab[1..10]; // Résultat correct et attendu! |
Je n'ai personellement pas trouvé le moyen d'extraire une variance sur une table à deux dimensions...
Si qq peut confirmer que c'est impossible...
Code:
1 2
| j:=1;
TabVariance(array[j,1..10]) |
ne donne rien
calcul d'une variance d'un tableau à N dimensions
je ne connaissais pas non plus cette fonction.
Personnellement lorsque je dois calculer une variance ou un écart type afin
de mesurer une dispersion, je reviens à la formule mathématique
seul moyen de ne pas se tromper
V(x) = ∑ ni (Xi - Xb)2
-------------
N
avec Xb la moyenne de toutes les valeurs
ni le nombre de fois ou la valeur est présente
et N le nombre totale des valeurs
en programmation cela donne :
- calculer la moyenne
- calculer Xi - la moyenne puis l'élever au carre
- multiplier par le nombre de valeurs semblables ou 1 si une valeur
- faire la somme
- puis diviser par N