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

From Free Pascal wiki
Jump to navigationJump to search
m
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>
 +
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 39: Line 100:
 
   end;
 
   end;
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
+
<br/>

Revision as of 09:46, 14 March 2017

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;