Tdistribution classe


Cet article donne le code source d'une belle, propre de la mise en œuvre d'une classe de compiler la discrète, la fonction de distribution cumulée d'un échantillon de données. Le cdi constitue la base de la base de statistiques descriptives.
(Cet article est initialement paru dans Le titre Officieux de Bulletin de Delphi
Utilisateurs)
TDistribution de Classe
Cet article donne le code source d'une belle, propre de la mise en œuvre d'une classe de compiler la discrète, la fonction de distribution cumulée d'un échantillon de données. Le cdi constitue la base de la base de statistiques descriptives.
TDistribution va automatiquement ajouter 'bins' à la cdf comme éléments de données sont accumulées, ou vous pouvez définir à l'avance le bin limites avant d'analyser un ensemble de données. Cette auto-expansion de la cdf bacs qui fonctionne le mieux avec les données triées de jeux (mais cool pour le tri des composants de voir http://www.connix.com/'btober/sorting.htm). Dans la plupart des cas, il fonctionne raisonnablement bien, sans pré-tri de vos données.
La classe descend de TStringList, de sorte que vous pouvez utiliser les Chaînes de propriété pour définir une chaîne de texte décrivant chaque 'bin', par exemple
& nbsp & nbsp String[0]:='Jan'
& nbsp & nbsp String[1]:='Février'
& nbsp & nbsp .
& nbsp & nbsp .
& nbsp & nbsp .
& nbsp String[11]:='Dec'
Ainsi, la classe de manière flexible prend en charge vos mise en œuvre au sein d'une variété d'interfaces utilisateur (notez que ce n'est pas un composant de l'interface utilisateur - il est 'simplement' une classe qui fournit un particulier, des statistiques de la fonctionnalité...c'est à vous de mettre en œuvre l'interface utilisateur appropriée pour votre application particulière).
cette classe permet de définir les propriétés pour estimer les données de l'échantillon total et la moyenne (basée sur la cdf).
Un exemple de projet est également inclus.
{ ****************************************************************** }
{ Classe pour développer discret, la fonction de distribution cumulée }
{ Copyright © 2000, M. Berend Tober. Tous droits réservés. }
{ Auteur E-mail mailto:[email protected] }
{ d'Autres composants à l' }
{ http://www.connix.com/'btober/delphi.htm}
{ ****************************************************************** }
unité Cdf
{
& nbsp & nbsp La fonction de répartition cumulative (cdf) continue, réelle
& nbsp & nbsp variable aléatoire X est définie comme une fonction F(x) où
& ! & ! & ! & nbsp F(x) = P(X <= x), c'est à dire, la probabilité que X <= x.
& nbsp & nbsp Le cas discret est également définie.
& nbsp & nbsp La TDistribution classe est utilisée pour générer une analyse empirique de CDF pour un
& nbsp & nbsp jeu de données en comptant le nombre de valeurs à partir de l'échantillon
& nbsp & nbsp ensemble de données qui entrent dans l'une d'un ensemble de discrètes 'poubelles'.
& nbsp & nbsp de Cette façon, vous pouvez obtenir rapidement une image quantitative d'un ensemble de données.
& nbsp & nbsp La classe descend de TStringList, de sorte que vous pouvez utiliser les Chaînes de caractères
& nbsp & nbsp propriété pour définir une chaîne de texte décrivant chaque 'bin', par exemple
& ! & ! & ! & nbsp String[0]:='Jan'
& ! & ! & ! & nbsp String[1]:='Février'
& ! & ! & ! & ! & ! & nbsp .
& ! & ! & ! & ! & ! & ! .
& ! & ! & ! & ! & ! & ! .
& ! & ! & ! & nbsp String[11]:='Dec'
}

interface
classes
type
& nbsp & nbsp TDistributionItem = class(TObject)
& ! & ! & ! & nbsp privé
& ! & ! & ! & ! & ! & nbsp FBin: Double {limite Supérieure de bin}
& ! & ! & ! & ! & ! & nbsp FCount: LongInt
& ! & ! & ! & nbsp public
& ! & ! & ! & ! & ! & nbsp constructeur Créer(Valeur: Double Compte:LongInt)
& ! & ! & ! & ! & ! & nbsp fonction s'Accumulent(Valeur: Double):LongInt
& ! & ! & ! & ! & ! & nbsp propriétés Bin: Double Lire FBin
& ! & ! & ! & ! & ! & nbsp propriétés Count: LongInt Lire FCount
& nbsp & nbsp fin
& nbsp & nbsp TDistribution = class(TStringList)
& ! & ! & ! & nbsp privé
& ! & ! & ! & ! & ! & nbsp fonction GetMean: double
& ! & ! & ! & ! & ! & nbsp fonction GetTotal: Double
& ! & ! & ! & nbsp public
& ! & ! & ! & ! & ! & nbsp constructeur Créer
& ! & ! & ! & ! & ! & nbsp destructeur Détruire remplacer
& ! & ! & ! & ! & ! & nbsp procédure Claire
& ! & ! & ! & ! & ! & nbsp fonction s'Accumulent(Valeur: Double):LongInt
& ! & ! & ! & ! & ! & nbsp fonction AddObject(const S: string AObject: TObject):Entier remplacer
& ! & ! & ! & ! & ! & nbsp procédure FreeObjects
& ! & ! & ! & ! & ! & nbsp procédure (Index:Integer const Valeur:TDistributionItem)
& ! & ! & ! & ! & ! & nbsp fonction FreeObject(Index:Integer):Integer
& ! & ! & ! & ! & ! & nbsp fonction Get(Index:Integer):TDistributionItem
& ! & ! & ! & ! & ! & nbsp propriétés Signifie: Double Lire GetMean
& ! & ! & ! & ! & ! & nbsp propriétés Objets[Index:Integer]:TDistributionItem lire Get écrire
& ! & ! & ! & ! & ! & nbsp propriétés Total: Double Lire GetTotal
& nbsp & nbsp fin

application
constructeur TDistributionItem.Créer(Valeur: Double Compte:LongInt)
démarrer
& nbsp & nbsp hérité Créer
& nbsp & nbsp FBin := Valeur
& nbsp & nbsp FCount:=Count
fin
fonction TDistributionItem.S'accumulent(Valeur: Double):LongInt
démarrer
& nbsp & nbsp Result:=-1
& nbsp & nbsp si Valeur<=FBin {Incrément compter de la corbeille lorsque la Valeur<=x}
& ! & ! & ! & nbsp démarrer
& ! & ! & ! & nbsp inc(FCount)
& ! & ! & ! & nbsp Résultat:=FCount
& ! & ! & ! & nbsp fin
fin

constructeur
TDistribution.Créer
démarrer
& nbsp & nbsp hérité Créer
fin
destructeur TDistribution.Détruire
démarrer
& nbsp & nbsp Clair
& nbsp & nbsp hérité Détruire
fin
fonction TDistribution.AddObject(const S: string AObject:TObject):Integer
{Ajouter un 'bin' de la CDF, dans le bon ordre}

var j'ai:Entier
démarrer
& nbsp & nbsp {
& ! & ! & ! & nbsp Trouver l'endroit où insérer de nouveaux 'bin'. C'est juste avant la plus petite 'bin'
& ! & ! & ! & nbsp qui dépasse la taille de la nouvelle 'bin'.
& nbsp & nbsp }

& nbsp & nbsp Résultat:=Count
& nbsp & nbsp si Nombre>0
& ! & ! & ! & nbsp pour i:=pred(le Comte) downto 0 ne
& ! & ! & ! & ! & ! & nbsp si TDistributionItem(AObject).Bin
& ! & ! & ! & ! & ! & ! & ! & nbsp Résultat:=i
& nbsp & nbsp si Résultat<0
& ! & ! & ! & nbsp Résultat:=hérité AddObject(S,AObject) {Si aucun de ces 'bin', ajouter un nouveau}
& nbsp & nbsp else
& ! & ! & ! & nbsp InsertObject(Résultat,S,AObject) {Insérer de nouveaux bin avant le prochain plus grand}
fin
fonction TDistribution.S'accumulent(Valeur:Double):LongInt
{Count cette valeur de données dans le cdf}
var
& nbsp & nbsp j': LongInt
démarrer
& nbsp & nbsp si Count=0
& ! & ! & ! & nbsp AddObject(',TDistributionItem.Créer de la Valeur (, 0)) {Doit avoir au moins un 'bin'}
& nbsp & nbsp else si Valeur>Objets[pred(Comte de)].Bin
& ! & ! & ! & nbsp {Si la Valeur est supérieure à la plus grande 'bin', puis ajouter l'un qui EST assez grand}
& ! & ! & ! & nbsp AddObject(',TDistributionItem.Créer de la Valeur,des Objets[pred(Comte de)].Count))
& nbsp & nbsp pour i:=0 de pred(Comte) ne
& ! & ! & ! & nbsp Résultat:=Objets[i].S'accumulent(Valeur)
fin
fonction TDistribution.Get(Index:Integer):TDistributionItem
démarrer
& nbsp & nbsp Résultat:=TDistributionItem(hérité Objets[Index])
fin
fonction TDistribution.FreeObject(Index:Integer):Integer
démarrer
& nbsp & nbsp Result:=-1
& nbsp & nbsp si Index >= Count Quitter
& nbsp & nbsp si Objets[Index] <> nul
& ! & ! & ! & nbsp démarrer
& ! & ! & ! & nbsp Objets[Index].Gratuit
& ! & ! & ! & nbsp Objets[Index]:=nul
& ! & ! & ! & nbsp fin
& nbsp & nbsp Supprimer(Index)
& nbsp & nbsp si Index>=Count
& ! & ! & ! & nbsp Résultat:=pred(Nombre)
& nbsp & nbsp else si Count=0
& ! & ! & ! & nbsp Résultat:=-1
& nbsp & nbsp else
& ! & ! & ! & nbsp Résultat:=Index
fin
procédure TDistribution.FreeObjects
var i:Integer
démarrer
& nbsp & nbsp si Nombre > 0
& ! & ! & ! & nbsp pour i:=pred(le Comte) downto 0 ne
& ! & ! & ! & ! & ! & nbsp FreeObject(i)
fin
procédure TDistribution.Mettre(Index:Integer const Valeur:TDistributionItem)
démarrer
& nbsp & nbsp hérité Objets[Index]:=Valeur
fin
procédure TDistribution.Clair
démarrer
& nbsp & nbsp FreeObjects
& nbsp & nbsp hérité Claire
fin
fonction TDistribution.GetTotal:Double
{Ceci est une ESTIMATION de l'effectif de l'échantillon total}
var i: integer
démarrer
& nbsp & nbsp Résultat:=0
& nbsp & nbsp si Count = 0 Quitter
& nbsp & nbsp Résultat:=Objets[0].Bin*Les Objets[0].Le comte
& nbsp & nbsp pour i:=1 de pred(Comte) ne
& ! & ! & ! & nbsp Result:=Result (Objets[i].Bin*(Objets[i].Comte-Objets[pred(i)].Count))
& nbsp & nbsp {
* * * * * * Ce est une autre façon de calculer le total ***
& nbsp & nbsp Résultat:=Objets[0].Bin*Les Objets[0].Le comte
& nbsp & nbsp for i:=1 à pred(Comte) ne
& ! & ! & ! & nbsp Result:=Result
& ! & ! & ! & ! & ! & nbsp (Objets[i].Bin Objets[pred(i)].Bin)
& ! & ! & ! & ! & ! & nbsp *(Objets[i].Comte - Objets[pred(i)].Le comte)
& nbsp & nbsp Result:=Result/2.0
& nbsp & nbsp }

fin
fonction TDistribution.GetMean: double
{Ceci est une ESTIMATION de l'effectif de l'échantillon moyenne}
démarrer
& nbsp & nbsp Résultat:=0.0
& nbsp & nbsp si Nombre>0
& ! & ! & ! & nbsp Résultat:=GetTotal/Objets[pred(Comte de)].Le comte
fin
à la fin.
Exemple de mise en œuvre
Exemple

& nbsp & nbsp WinCRT,cdf
const
& nbsp & nbsp Data1:Array[1..10] de Réel=(66,73,73,81,81,81,81,85,85,89)
& nbsp & nbsp {
& ! & ! & ! & nbsp Note: Cet ensemble de données est pré-triés. TDistribution sera toujours
& ! & ! & ! & nbsp travailler avec des données non triées, mais vous ne pourriez pas obtenir une bonne cdf
& ! & ! & ! & nbsp sauf si vous prédéfinir le cdf bacs. Cela est particulièrement vrai
& ! & ! & ! & nbsp si le premier élément de la base de données se trouve être la plus grande
& ! & ! & ! & nbsp (essayez en réorganisant les données ci-dessus!) parce que automatique
& ! & ! & ! & nbsp ajout de bacs de n'ajouter qu'une seule poubelle dans lequel TOUTES les données
& ! & ! & ! & nbsp seront pris en compte.
& nbsp & nbsp }

var
& nbsp & nbsp i,j:Mot
démarrer
& nbsp & nbsp avec TDistribution.Créer ne
& ! & ! & ! & nbsp démarrer
& ! & ! & ! & nbsp pour i:=1 de 10 ne
& ! & ! & ! & ! & ! & nbsp Accumuler(Data1[i])
& ! & ! & ! & nbsp writeln('Signifie'=', Signifie:6:4)
& ! & ! & ! & nbsp writeln ('Total = ', Total:6:4)
{Imprimer résumé quantitatif}
& ! & ! & ! & nbsp pour j'ai := 0 de pred(Comte) ne
& ! & ! & ! & ! & ! & nbsp writeln(Objets[i].Bin:6:2,#44,les Objets[i].Le comte,#44,les Objets[i].Le comte/des Objets[pred(Comte de)].Count:6:3)
{Imprimer brut 'histogramme'}
& ! & ! & ! & nbsp pour i := 0 de pred(le Comte) ne
& ! & ! & ! & ! & ! & nbsp démarrer
& ! & ! & ! & ! & ! & nbsp pour j:=1 de trunc(40*les Objets[i].Le comte/des Objets[pred(Comte de)].Le comte) ne
& ! & ! & ! & ! & ! & ! & ! & nbsp write('*')
& ! & ! & ! & ! & ! & nbsp writeln
& ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp Gratuit
& ! & ! & ! & nbsp fin
à la fin.









Tdistribution classe


Tdistribution classe : Plusieurs milliers de conseils pour vous faciliter la vie.


Cet article donne le code source d'une belle, propre de la mise en œuvre d'une classe de compiler la discrete, la fonction de distribution cumulee d'un echantillon de donnees. Le cdi constitue la base de la base de statistiques descriptives.
(Cet article est initialement paru dans Le titre Officieux de Bulletin de Delphi
Utilisateurs)
TDistribution de Classe
Cet article donne le code source d'une belle, propre de la mise en œuvre d'une classe de compiler la discrete, la fonction de distribution cumulee d'un echantillon de donnees. Le cdi constitue la base de la base de statistiques descriptives.
TDistribution va automatiquement ajouter 'bins' a la cdf comme elements de donnees sont accumulees, ou vous pouvez definir a l'avance le bin limites avant d'analyser un ensemble de donnees. Cette auto-expansion de la cdf bacs qui fonctionne le mieux avec les donnees triees de jeux (mais cool pour le tri des composants de voir http://www.connix.com/'btober/sorting.htm). Dans la plupart des cas, il fonctionne raisonnablement bien, sans pre-tri de vos donnees.
La classe descend de TStringList, de sorte que vous pouvez utiliser les Chaînes de propriete pour definir une chaîne de texte decrivant chaque 'bin', par exemple
& nbsp & nbsp String[0]:='Jan'
& nbsp & nbsp String[1]:='Fevrier'
& nbsp & nbsp .
& nbsp & nbsp .
& nbsp & nbsp .
& nbsp String[11]:='Dec'
Ainsi, la classe de maniere flexible prend en charge vos mise en œuvre au sein d'une variete d'interfaces utilisateur (notez que ce n'est pas un composant de l'interface utilisateur - il est 'simplement' une classe qui fournit un particulier, des statistiques de la fonctionnalite...c'est a vous de mettre en œuvre l'interface utilisateur appropriee pour votre application particuliere).
cette classe permet de definir les proprietes pour estimer les donnees de l'echantillon total et la moyenne (basee sur la cdf).
Un exemple de projet est egalement inclus.
{ ****************************************************************** }
{ Classe pour developper discret, la fonction de distribution cumulee }
{ Copyright © 2000, M. Berend Tober. Tous droits reserves. }
{ Auteur E-mail mailto:[email protected] }
{ d'Autres composants a l' }
{ http://www.connix.com/'btober/delphi.htm}
{ ****************************************************************** }
unite Cdf
{
& nbsp & nbsp La fonction de repartition cumulative (cdf) continue, reelle
& nbsp & nbsp variable aleatoire X est definie comme une fonction F(x) ou
& ! & ! & ! & nbsp F(x) = P(X <= x), c'est a dire, la probabilite que X <= x.
& nbsp & nbsp Le cas discret est egalement definie.
& nbsp & nbsp La TDistribution classe est utilisee pour generer une analyse empirique de CDF pour un
& nbsp & nbsp jeu de donnees en comptant le nombre de valeurs a partir de l'echantillon
& nbsp & nbsp ensemble de donnees qui entrent dans l'une d'un ensemble de discretes 'poubelles'.
& nbsp & nbsp de Cette façon, vous pouvez obtenir rapidement une image quantitative d'un ensemble de donnees.
& nbsp & nbsp La classe descend de TStringList, de sorte que vous pouvez utiliser les Chaînes de caracteres
& nbsp & nbsp propriete pour definir une chaîne de texte decrivant chaque 'bin', par exemple
& ! & ! & ! & nbsp String[0]:='Jan'
& ! & ! & ! & nbsp String[1]:='Fevrier'
& ! & ! & ! & ! & ! & nbsp .
& ! & ! & ! & ! & ! & ! .
& ! & ! & ! & ! & ! & ! .
& ! & ! & ! & nbsp String[11]:='Dec'
}

interface
classes
type
& nbsp & nbsp TDistributionItem = class(TObject)
& ! & ! & ! & nbsp prive
& ! & ! & ! & ! & ! & nbsp FBin: Double {limite Superieure de bin}
& ! & ! & ! & ! & ! & nbsp FCount: LongInt
& ! & ! & ! & nbsp public
& ! & ! & ! & ! & ! & nbsp constructeur Creer(Valeur: Double Compte:LongInt)
& ! & ! & ! & ! & ! & nbsp fonction s'Accumulent(Valeur: Double):LongInt
& ! & ! & ! & ! & ! & nbsp proprietes Bin: Double Lire FBin
& ! & ! & ! & ! & ! & nbsp proprietes Count: LongInt Lire FCount
& nbsp & nbsp fin
& nbsp & nbsp TDistribution = class(TStringList)
& ! & ! & ! & nbsp prive
& ! & ! & ! & ! & ! & nbsp fonction GetMean: double
& ! & ! & ! & ! & ! & nbsp fonction GetTotal: Double
& ! & ! & ! & nbsp public
& ! & ! & ! & ! & ! & nbsp constructeur Creer
& ! & ! & ! & ! & ! & nbsp destructeur Detruire remplacer
& ! & ! & ! & ! & ! & nbsp procedure Claire
& ! & ! & ! & ! & ! & nbsp fonction s'Accumulent(Valeur: Double):LongInt
& ! & ! & ! & ! & ! & nbsp fonction AddObject(const S: string AObject: TObject):Entier remplacer
& ! & ! & ! & ! & ! & nbsp procedure FreeObjects
& ! & ! & ! & ! & ! & nbsp procedure (Index:Integer const Valeur:TDistributionItem)
& ! & ! & ! & ! & ! & nbsp fonction FreeObject(Index:Integer):Integer
& ! & ! & ! & ! & ! & nbsp fonction Get(Index:Integer):TDistributionItem
& ! & ! & ! & ! & ! & nbsp proprietes Signifie: Double Lire GetMean
& ! & ! & ! & ! & ! & nbsp proprietes Objets[Index:Integer]:TDistributionItem lire Get ecrire
& ! & ! & ! & ! & ! & nbsp proprietes Total: Double Lire GetTotal
& nbsp & nbsp fin

application
constructeur TDistributionItem.Creer(Valeur: Double Compte:LongInt)
demarrer
& nbsp & nbsp herite Creer
& nbsp & nbsp FBin := Valeur
& nbsp & nbsp FCount:=Count
fin
fonction TDistributionItem.S'accumulent(Valeur: Double):LongInt
demarrer
& nbsp & nbsp Result:=-1
& nbsp & nbsp si Valeur<=FBin {Increment compter de la corbeille lorsque la Valeur<=x}
& ! & ! & ! & nbsp demarrer
& ! & ! & ! & nbsp inc(FCount)
& ! & ! & ! & nbsp Resultat:=FCount
& ! & ! & ! & nbsp fin
fin

constructeur
TDistribution.Creer
demarrer
& nbsp & nbsp herite Creer
fin
destructeur TDistribution.Detruire
demarrer
& nbsp & nbsp Clair
& nbsp & nbsp herite Detruire
fin
fonction TDistribution.AddObject(const S: string AObject:TObject):Integer
{Ajouter un 'bin' de la CDF, dans le bon ordre}

var j'ai:Entier
demarrer
& nbsp & nbsp {
& ! & ! & ! & nbsp Trouver l'endroit ou inserer de nouveaux 'bin'. C'est juste avant la plus petite 'bin'
& ! & ! & ! & nbsp qui depasse la taille de la nouvelle 'bin'.
& nbsp & nbsp }

& nbsp & nbsp Resultat:=Count
& nbsp & nbsp si Nombre>0
& ! & ! & ! & nbsp pour i:=pred(le Comte) downto 0 ne
& ! & ! & ! & ! & ! & nbsp si TDistributionItem(AObject).Bin
& ! & ! & ! & ! & ! & ! & ! & nbsp Resultat:=i
& nbsp & nbsp si Resultat<0
& ! & ! & ! & nbsp Resultat:=herite AddObject(S,AObject) {Si aucun de ces 'bin', ajouter un nouveau}
& nbsp & nbsp else
& ! & ! & ! & nbsp InsertObject(Resultat,S,AObject) {Inserer de nouveaux bin avant le prochain plus grand}
fin
fonction TDistribution.S'accumulent(Valeur:Double):LongInt
{Count cette valeur de donnees dans le cdf}
var
& nbsp & nbsp j': LongInt
demarrer
& nbsp & nbsp si Count=0
& ! & ! & ! & nbsp AddObject(',TDistributionItem.Creer de la Valeur (, 0)) {Doit avoir au moins un 'bin'}
& nbsp & nbsp else si Valeur>Objets[pred(Comte de)].Bin
& ! & ! & ! & nbsp {Si la Valeur est superieure a la plus grande 'bin', puis ajouter l'un qui EST assez grand}
& ! & ! & ! & nbsp AddObject(',TDistributionItem.Creer de la Valeur,des Objets[pred(Comte de)].Count))
& nbsp & nbsp pour i:=0 de pred(Comte) ne
& ! & ! & ! & nbsp Resultat:=Objets[i].S'accumulent(Valeur)
fin
fonction TDistribution.Get(Index:Integer):TDistributionItem
demarrer
& nbsp & nbsp Resultat:=TDistributionItem(herite Objets[Index])
fin
fonction TDistribution.FreeObject(Index:Integer):Integer
demarrer
& nbsp & nbsp Result:=-1
& nbsp & nbsp si Index >= Count Quitter
& nbsp & nbsp si Objets[Index] <> nul
& ! & ! & ! & nbsp demarrer
& ! & ! & ! & nbsp Objets[Index].Gratuit
& ! & ! & ! & nbsp Objets[Index]:=nul
& ! & ! & ! & nbsp fin
& nbsp & nbsp Supprimer(Index)
& nbsp & nbsp si Index>=Count
& ! & ! & ! & nbsp Resultat:=pred(Nombre)
& nbsp & nbsp else si Count=0
& ! & ! & ! & nbsp Resultat:=-1
& nbsp & nbsp else
& ! & ! & ! & nbsp Resultat:=Index
fin
procedure TDistribution.FreeObjects
var i:Integer
demarrer
& nbsp & nbsp si Nombre > 0
& ! & ! & ! & nbsp pour i:=pred(le Comte) downto 0 ne
& ! & ! & ! & ! & ! & nbsp FreeObject(i)
fin
procedure TDistribution.Mettre(Index:Integer const Valeur:TDistributionItem)
demarrer
& nbsp & nbsp herite Objets[Index]:=Valeur
fin
procedure TDistribution.Clair
demarrer
& nbsp & nbsp FreeObjects
& nbsp & nbsp herite Claire
fin
fonction TDistribution.GetTotal:Double
{Ceci est une ESTIMATION de l'effectif de l'echantillon total}
var i: integer
demarrer
& nbsp & nbsp Resultat:=0
& nbsp & nbsp si Count = 0 Quitter
& nbsp & nbsp Resultat:=Objets[0].Bin*Les Objets[0].Le comte
& nbsp & nbsp pour i:=1 de pred(Comte) ne
& ! & ! & ! & nbsp Result:=Result (Objets[i].Bin*(Objets[i].Comte-Objets[pred(i)].Count))
& nbsp & nbsp {
* * * * * * Ce est une autre façon de calculer le total ***
& nbsp & nbsp Resultat:=Objets[0].Bin*Les Objets[0].Le comte
& nbsp & nbsp for i:=1 a pred(Comte) ne
& ! & ! & ! & nbsp Result:=Result
& ! & ! & ! & ! & ! & nbsp (Objets[i].Bin Objets[pred(i)].Bin)
& ! & ! & ! & ! & ! & nbsp *(Objets[i].Comte - Objets[pred(i)].Le comte)
& nbsp & nbsp Result:=Result/2.0
& nbsp & nbsp }

fin
fonction TDistribution.GetMean: double
{Ceci est une ESTIMATION de l'effectif de l'echantillon moyenne}
demarrer
& nbsp & nbsp Resultat:=0.0
& nbsp & nbsp si Nombre>0
& ! & ! & ! & nbsp Resultat:=GetTotal/Objets[pred(Comte de)].Le comte
fin
a la fin.
Exemple de mise en œuvre
Exemple

& nbsp & nbsp WinCRT,cdf
const
& nbsp & nbsp Data1:Array[1..10] de Reel=(66,73,73,81,81,81,81,85,85,89)
& nbsp & nbsp {
& ! & ! & ! & nbsp Note: Cet ensemble de donnees est pre-tries. TDistribution sera toujours
& ! & ! & ! & nbsp travailler avec des donnees non triees, mais vous ne pourriez pas obtenir une bonne cdf
& ! & ! & ! & nbsp sauf si vous predefinir le cdf bacs. Cela est particulierement vrai
& ! & ! & ! & nbsp si le premier element de la base de donnees se trouve etre la plus grande
& ! & ! & ! & nbsp (essayez en reorganisant les donnees ci-dessus!) parce que automatique
& ! & ! & ! & nbsp ajout de bacs de n'ajouter qu'une seule poubelle dans lequel TOUTES les donnees
& ! & ! & ! & nbsp seront pris en compte.
& nbsp & nbsp }

var
& nbsp & nbsp i,j:Mot
demarrer
& nbsp & nbsp avec TDistribution.Creer ne
& ! & ! & ! & nbsp demarrer
& ! & ! & ! & nbsp pour i:=1 de 10 ne
& ! & ! & ! & ! & ! & nbsp Accumuler(Data1[i])
& ! & ! & ! & nbsp writeln('Signifie'=', Signifie:6:4)
& ! & ! & ! & nbsp writeln ('Total = ', Total:6:4)
{Imprimer resume quantitatif}
& ! & ! & ! & nbsp pour j'ai := 0 de pred(Comte) ne
& ! & ! & ! & ! & ! & nbsp writeln(Objets[i].Bin:6:2,#44,les Objets[i].Le comte,#44,les Objets[i].Le comte/des Objets[pred(Comte de)].Count:6:3)
{Imprimer brut 'histogramme'}
& ! & ! & ! & nbsp pour i := 0 de pred(le Comte) ne
& ! & ! & ! & ! & ! & nbsp demarrer
& ! & ! & ! & ! & ! & nbsp pour j:=1 de trunc(40*les Objets[i].Le comte/des Objets[pred(Comte de)].Le comte) ne
& ! & ! & ! & ! & ! & ! & ! & nbsp write('*')
& ! & ! & ! & ! & ! & nbsp writeln
& ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp Gratuit
& ! & ! & ! & nbsp fin
a la fin.


Tdistribution classe

Tdistribution classe : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation