Difference between revisions of "Functions for descriptive statistics/fr"

From Free Pascal wiki
Jump to navigationJump to search
m
m (Fixed syntax highlighting)
 
(3 intermediate revisions by one other user not shown)
Line 26: Line 26:
  
 
== Fonctions personnalisées ==
 
== Fonctions personnalisées ==
 +
 +
Certaines fonctions ne sont pas définies dans la RTL. La section ci-dessous donne du code source de certaines mesures communément utilisées dans la centralité et la dispersion. Si ce n'est pas spécifié autrement, le code est fourni sous licence BSD.
 +
Ensemble avec les autres codes statistiques utiles
 +
 +
Avec d'autres codes statistiques utiles, des versions étendues et rigoureusement testées de ces fonctions sont également disponibles dans le projet [http://quantum-salis.sf.net/ QUANTUM SALIS].
 +
 +
=== Médiane ===
 +
 +
Le terme ''médiane'' dénote les quantile de 50% d'un échantillon, i.e. la valeur séparant la moitié la plus élevée d'une donnée de la moitié la moins élevée. Elle peut être calculée avec :
 +
 +
<syntaxhighlight lang=pascal>
 +
type
 +
  TExtArray = array of Extended;
 +
 +
function SortExtArray(const data: TExtArray): TExtArray;
 +
{ Based on Shell Sort - avoiding recursion allows for sorting of very
 +
  large arrays, too }
 +
var
 +
  data2: TExtArray;
 +
  arrayLength, i, j, k: longint;
 +
  h: extended;
 +
begin
 +
  arrayLength := high(data);
 +
  data2 := copy(data, 0, arrayLength + 1);
 +
  k := arrayLength div 2;
 +
  while k > 0 do
 +
  begin
 +
    for i := 0 to arrayLength - k do
 +
    begin
 +
      j := i;
 +
      while (j >= 0) and (data2[j] > data2[j + k]) do
 +
      begin
 +
        h := data2[j];
 +
        data2[j] := data2[j + k];
 +
        data2[j + k] := h;
 +
        if j > k then
 +
          dec(j, k)
 +
        else
 +
          j := 0;
 +
      end;
 +
    end;
 +
    k := k div 2
 +
  end;
 +
  result := data2;
 +
end;     
 +
 +
function median(const data: TExtArray): extended;
 +
var
 +
  centralElement: integer;
 +
  sortedData: TExtArray;
 +
begin
 +
  sortedData := SortExtArray(data);
 +
  centralElement := length(sortedData) div 2;
 +
  if odd(length(sortedData)) then
 +
    result := sortedData[centralElement]
 +
  else
 +
    result := (sortedData[centralElement - 1] + sortedData[centralElement]) / 2;
 +
end;
 +
</syntaxhighlight>
 +
 +
Bien sûr, la fonction '''SortExtArray''' peut être remplacée par un autre algorithme de tri, p.ex. QuickSort. Le tri Shell présente ici l'avantage de pouvoir trier des vecteurs même très larges sur des machines ayant peu de mémoire (bien  qu'avec une vitesse plus réduite que le tri QuickSort).
  
 
=== Erreur type  ===
 
=== Erreur type  ===
Line 33: Line 94:
 
Le calcul de l'erreur type est simple :
 
Le calcul de l'erreur type est simple :
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
   function sem(const data: array of Extended): real;
 
   function sem(const data: array of Extended): real;
 
   begin
 
   begin
Line 40: Line 101:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
=== Coefficient de variation ===
  
[[Category:Mathematics/fr]]
+
Le coefficient de variation, aussi connu comme l'écart type realtif, est une mesure de la dispersionqui est normalisée par rapport à la moyenne des données.
[[Category:Statistical algorithms/fr]]
+
 
 +
Il peut être calculé avec :  
 +
 
 +
<syntaxhighlight lang=pascal>
 +
function cv(const data: array of Extended): extended;
 +
{ calculates the coefficient of variation (CV or CoV) of a vector of extended }
 +
begin
 +
  result := stddev(data) / mean(data);
 +
end;
 +
</syntaxhighlight>

Latest revision as of 06:22, 16 February 2020

English (en) français (fr)

La statistique descriptive a pour but de caractériser des données empirique à l'aide de paramètres sommatifs (et aussi avec des tables et des graphiques).

Fonctions standard définies dans l'unité math

L'unité math de la RTL fournit une pléthore de routines pour la statistique descriptive.

  • mean : Retourne la valeur moyenne d'un tableau.
  • stddev : Retourne l'écart moyen type (échantillon) d'un tableau.
  • popnstddev : Retourne l'écart moyen type (population) d'un tableau.
  • meanandstddev : Retourne la moyenne et l'écart moyen type d'un tableau.
  • momentskewkurtosis : Retourne le 4 permiers moments d'un tableau.
  • variance : Retourne la variance (échantillon) d'un tableau.
  • popnvariance : Retourne la variance (population) d'un tableau.
  • totalvariance : Retourne la variance d'un tableau.
  • sumofsquares : Retourne la somme des carrés d'un tableau.
  • sum : Retourne la somme des valeurs d'un tableau.
  • sumsandsquares : Retourne la somme et la somme des carrés des valeurs d'un tableau.

Ces fonctions attendent un tableau de taille prédéfinie (p.ex. array[1..100] of float) ou un tableau ouvert à base 0 (p.ex. array of extended) avec l'appel sous-jacent à la procédure SetLength.

Fonctions standard défines dans d'autres unités

  • length : Donne la longueur d'un tableau.

Fonctions personnalisées

Certaines fonctions ne sont pas définies dans la RTL. La section ci-dessous donne du code source de certaines mesures communément utilisées dans la centralité et la dispersion. Si ce n'est pas spécifié autrement, le code est fourni sous licence BSD. Ensemble avec les autres codes statistiques utiles

Avec d'autres codes statistiques utiles, des versions étendues et rigoureusement testées de ces fonctions sont également disponibles dans le projet QUANTUM SALIS.

Médiane

Le terme médiane dénote les quantile de 50% d'un échantillon, i.e. la valeur séparant la moitié la plus élevée d'une donnée de la moitié la moins élevée. Elle peut être calculée avec :

type
  TExtArray = array of Extended;

function SortExtArray(const data: TExtArray): TExtArray;
{ Based on Shell Sort - avoiding recursion allows for sorting of very
  large arrays, too }
var
  data2: TExtArray;
  arrayLength, i, j, k: longint;
  h: extended;
begin
  arrayLength := high(data);
  data2 := copy(data, 0, arrayLength + 1);
  k := arrayLength div 2;
  while k > 0 do
  begin
    for i := 0 to arrayLength - k do
    begin
      j := i;
      while (j >= 0) and (data2[j] > data2[j + k]) do
      begin
        h := data2[j];
        data2[j] := data2[j + k];
        data2[j + k] := h;
        if j > k then
          dec(j, k)
        else
          j := 0;
      end;
    end;
    k := k div 2
  end;
  result := data2;
end;       

function median(const data: TExtArray): extended;
var
  centralElement: integer;
  sortedData: TExtArray;
begin
  sortedData := SortExtArray(data);
  centralElement := length(sortedData) div 2;
  if odd(length(sortedData)) then
    result := sortedData[centralElement]
  else
    result := (sortedData[centralElement - 1] + sortedData[centralElement]) / 2;
end;

Bien sûr, la fonction SortExtArray peut être remplacée par un autre algorithme de tri, p.ex. QuickSort. Le tri Shell présente ici l'avantage de pouvoir trier des vecteurs même très larges sur des machines ayant peu de mémoire (bien qu'avec une vitesse plus réduite que le tri QuickSort).

Erreur type

L'erreur type de la moyenne (SEM en anglais) est la mesure qui estime avec quelle précision la vraie moyenne de la population peut être connue.

Le calcul de l'erreur type est simple :

  function sem(const data: array of Extended): real;
  begin
    sem := stddev(data) / sqrt(length(data));
  end;

Coefficient de variation

Le coefficient de variation, aussi connu comme l'écart type realtif, est une mesure de la dispersionqui est normalisée par rapport à la moyenne des données.

Il peut être calculé avec :

function cv(const data: array of Extended): extended;
{ calculates the coefficient of variation (CV or CoV) of a vector of extended }
begin
  result := stddev(data) / mean(data);
end;