[ASP] Calculs statistiques (1/3) |
Moyenne, Variance, Ecart-type, Covariance, ... |
|
 |
En dehors de simple Moyenne ou somme, il n'y a pas grand chose de disponible en fonctions statistiques.
Les fonctions suivantes reprennent les algorithmes ultra connus permettant de calculer la Moyenne, la Variance, l'Ecart-Type, la Covariance et l'Indice de Corrélation Linéaire
|
Introduction / Code -
Utilisation -
Exemple
Le principe est simple : renseigner un ou plusieurs tableaux avec les données que l'on veut utiliser.
Toutes les fonctions et variables décrites ci-dessous doivent être contenues dans un fichier .asp et être appelées via un #include pour éviter d'avoir 2 tonnes de code dans la page.

<% ' soit : n le nbre d'éléments de la matrice ' Xi un élément de la matrice ' S(Xi) la somme des éléments de la matrice (pour i=1 à n)
ReDim arrMatrice (0) ReDim arrTableauMatrice (0) ReDim arrMatriceIndice (0)
function GetMatriceLib(arrMat) ' Retourne le libellé d'une matrice if GetNbElements(arrMat)>0 THEN GetMatriceLib = arrMat(1) end if end function
function GetNbElements(arrMat) ' Retourne le nombre d'éléments dans le tableau GetNbElements = UBound(arrMat) end function
function InitTableauMatrice() ' Initialisation du tableau des matrices ReDim arrTableauMatrice (0) end function
function InitMatrice() ' Initialisation de la matrice ReDim arrMatrice (0) end function
function ConstTableauMatrice() ' Ajout d'une matrice au tableau des matrices Dim indice indice = GetNbElements(arrTableauMatrice)+1 ReDim Preserve arrTableauMatrice(indice) arrTableauMatrice(indice) = arrMatrice end function
function ConstMatrice(strLibelle, flValeur) ' Ajout d'une valeur Dim nbElt
nbElt = GetNbElements(arrMatrice)+1
ReDim Preserve arrMatrice(nbElt)
'Ajout du libellé lors du 1er enregistrement if nbElt = 1 THEN arrMatrice(nbElt) = strLibelle
nbElt = nbElt+1 ReDim Preserve arrMatrice(nbElt) end if
arrMatrice(nbElt) = flValeur end function
function Moyenne(arrMat, IndiceDep) ' Moyenne(X) = S(Xi) / n
Dim flMoy Dim iNbElt Dim i Dim j
j = 0 flMoy = 0 iNbElt = GetNbElements(arrMat)+1 i=IndiceDep
while i < iNbElt flMoy = flMoy + arrMat(i) i = i+1 j=j+1 wend flMoy = flMoy / j
Moyenne = flMoy end function
function Variance(arrMat, IndiceDep) ' Variance (X) = S(Xi-Moyenne(X))² / n Dim flMoy Dim flVariance Dim iNbElt Dim i Dim j
j = 0 i = IndiceDep flMoy = Moyenne(arrMat, i) flVariance = 0 iNbElt = GetNbElements(arrMat)+1
while i < iNbElt flVariance = flVariance + (arrMat(i)-flMoy)^2 i = i+1 j = j+1 wend
flVariance = flVariance / j Variance = flVariance end function
function EcartType(arrMat, IndiceDep) ' EcartType (X) = RacineCarrée(Variance(X)) Dim flVariance Dim flEcart_type Dim i
i = IndiceDep
flVariance = Variance(arrMat, i) flEcart_type = Sqr(flVariance)
EcartType = flEcart_type end function
function Covariance(arrMat1, arrMat2, IndiceDep) ' Covariance (X, Y) = S((Xi- Moyenne(X))*((Yi- Moyenne(Y)) / n Dim flMoyMatrice1 Dim flMoyMatrice2 Dim flCovariance Dim iNbElt Dim i Dim j
j = 0 iNbElt = 0 i = IndiceDep
' Vérification que les 2 matrices ont le même nombre d'objets if (GetNbElements(arrMat1) <> GetNbElements(arrMat2)) OR GetNbElements(arrMat1) = 0 then response.write ("Les deux matrices n'ont pas le même nombre d'éléments,") response.write (" calcul de la covariance impossible") covariance = "" else flCovariance = 0 iNbElt = GetNbElements(arrMat1)+1
flMoyMatrice1 = Moyenne(arrMat1, i) flMoyMatrice2 = Moyenne(arrMat2, i)
while i < iNbElt
flCovariance = flCovariance + (arrMat1(i) - flMoyMatrice1)*(arrMat2(i) - flMoyMatrice2) i = i+1 j = j+1 wend flCovariance = flCovariance / j end if Covariance = flCovariance end function
function IndiceCorrelationLineaire(arrMat1, arrMat2, IndiceDep) ' IndiceCorrelationLineaire (X, Y) = Covariance(X, Y) / (EcartType (X) * EcartType (Y)) Dim flIndice Dim i
i = IndiceDep
' Vérification que les 2 matrices ont le même nombre d'objets if (GetNbElements(arrMat1) <> GetNbElements(arrMat2)) OR GetNbElements(arrMat1) = 0 then response.write ("Les deux matrices n'ont pas le même nombre d'éléments,") response.write (" calcul de l'indice de corrélation linéaire impossible") flIndice = "" else
if (EcartType(arrMat1, i) * EcartType(arrMat2, i)) <> 0 THEN flIndice = Covariance(arrMat1, arrMat2, i) / (EcartType(arrMat1, i) * EcartType(arrMat2, i)) end if end if
IndiceCorrelationLineaire = flIndice end function %>
|
jollt le
19/11/2003 (74 597 hits) |
|
|