Designed by Derf !
73 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter






   

[ASP] Calculs statistiques (1/3)

Moyenne, Variance, Ecart-type, Covariance, ...





jollt
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
%>


Pour pouvoir écrire dans ce forum, identifiez-vous !

  v1.3p © ASP-PHP.net 2002  

jollt le 19/11/2003 (71 831 hits)
Didier Téléchargez gratuitement et légalement des logiciels Microsoft ! Si, si ;)
  • Visual Studio 2010
  • Office 2010
  • Expression Studio 3
  • SQL Server 2008
  • et d'autres...
Au fil des news  
Magazines - Le N°128 de Programmez est disponible
Magazines - Le N°127 de Programmez est disponible
Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 6
Pour continuer dans le même style, je vous propose une suite au précédent article. Rechercher tous ...
Adobe - Adobe Photoshop.com Mobile pour iPhone 1.1
JavaScript - Ajouter une page dans vos favorites
Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 5 -
Je vous propose cette fois deux astuces. Comment exporter une feuille de style avec l'aide de ...
SharePoint Personalization Site Links - Les liens personnalisés des MySite SharePoint
Nous avons vu dans les articles précédents comment agrémenter les pages de recherche afin de ...
Magazines - Le n°126 de Programmez est disponible
Outils - Traducteur en ligne automatique pour site web
Adobe - Adobe Photoshop.com Mobile pour Iphone
Magazines - Le n°125 de Programmez est disponible
Adobe - Adobe AIR 2 et Flash Player 10.1version bêta
Les conférences autour des technologies Microsoft - Liste non exhaustive des grands évènements
Nous allons essayer de regrouper un grand nombre des évènements autour des technologies Microsoft ...
Magazines - Le n°124 de Programmez est disponible
PHP - Forum PHP 2009
Composants - eFace - XAML en Java
WPF - Désactiver le bouton de réduction d'une fenêtre
Magazines - Le n°123 de Programmez est disponible
Magazines - Le n°122 de Programmez est disponible
Auditer une ferme SharePoint - Assurer le bon fonctionnement de SharePoint
Dans le cadre de la bonne gestion de son environnement SharePoint, il est utile de faire un ...
SQL Server 2008 Report Builder 2.0 - Installation et utilisation de Report Builder 2.0
Dans le cadre de la création de rapports pour SQL Server Reporting Services 2008, un outil est ...
Magazines - Le HS N° 1 de Web Design est disponible
Adobe - Adobe propose en Open Source les frameworks.....
Outils - EntityBuilder
CSharp - Sérialisation XML de vos objets
Magazines - Le n°121 de Programmez est disponible
Adobe - Adobe annonce MAX 2009 !
Outils - WhoIs
[MAJ] Dreamweaver MX + Php + MySql - Les formulaires - partie 3
Mise à jour du code, par DB 77, affichage du code erreur, dans la page erreur.php, traduction des ...
PHP - News avec photo - Système de gestion - affichage
Gestion - Administration - Affichage d'une "News", "Actualité", "Info", ... avec : - mise en forme ...
Outils - Crypt
Dreamweaver Php Mysql - Région répétée imbriquée
Je rebondis, sur un post du forum, pour vous montrer comment obtenir grâce à l'extension Simulated ...
Magazines - Le n° 120 de Programmez est disponible
Gérer les bases de contenu SharePoint - Gérer la croissance du volume des données
Dans le cadre de la gestion quotidienne de ferme SharePoint, il existe une partie qu'il faut ...
PHP - Le Coach PHP sur Visual Studio
.NET - Ecrire une application .NET utilisant MySQL
PHP - Utilisation de PHP dans le monde Microsoft
Magazines - Le n° 119 de Programmez est disponible
Adobe - Adobe annonce Photoshop Marketplace
[MAJ] Tutoriel AJAX simple - En avant vers le WEB2.0
Mis à jour le 20/04/2009
Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
v3b © Didier 2003   
 

Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
 MVP TechNet ASP-magazine Groupes Utilisateurs Microsoft DotNet Project