Documentation du code de SPIP et de ses plugins

Librairie Mathématique & Statistique

Documentation

Table of Contents

Packages

SPIP

Constants

_EZMATH_RAYON_TERRE_KM  = 6371.009
Rayon de la terre en kilomètre selon l'UGGI.
_EZMATH_TAI_METHODE  = 'moyenne'
Indique la méthode de calcul du TAI avec la moyenne ou la valeur centrale (défaut `moyenne`).

Functions

serie_indice_huntsberger()  : null|float
Calcule l'indice de Hunstberger qui permet de définir le nombre de classes optimale pour la discrétisation d'une série de valeurs en utilisant une formule basée uniquement sur l'effectif.
serie_indice_brooks()  : null|float
Calcule l'indice de Brooks qui permet de définir le nombre de classes optimale pour la discrétisation d'une série de valeurs en utilisant une formule basée uniquement sur l'effectif.
serie_indice_yule()  : null|float
Calcule l'indice de Yule qui permet de définir le nombre de classes optimale pour la discrétisation d'une série de valeurs en utilisant une formule basée uniquement sur l'effectif.
serie_indice_scott()  : null|float
Calcule l'indice de Scott qui permet de définir le nombre de classes optimale pour la discrétisation d'une série de valeurs en utilisant une formule basée sur l'effectif, l'étendue et l'écart type.
serie_indice_diaconis()  : null|float
Calcule l'indice de Freedman-Diaconis qui permet de définir le nombre de classes optimale pour la discrétisation d'une série de valeurs en utilisant une formule basée sur l'effectif, l'étendue et la distance interquartile.
serie_discretisation()  : array<string|int, mixed>
Discrétise une série de valeurs en un nombre de classes donné en appliquant une méthode de discrétisation choisie parmi les méthodes mathématiques ou statistiques classiques et, eventuellement, en transformant mathématiquement la série pour la normaliser.
classe_equivalence()  : array<string|int, mixed>
Construit, pour une série de valeur, la liste des classes d'égales étendues.
classe_progression_arithmetique()  : array<string|int, mixed>
Construit, pour une série de valeur, la liste des classes selon une progression arithmétique.
classe_progression_geometrique()  : array<string|int, mixed>
Construit, pour une série de valeur, la liste des classes selon une progression géométrique.
classe_quantile()  : array<string|int, mixed>
Construit, pour une série de valeur, la liste des classes basée sur les quantiles (effectifs égaux).
classe_standard()  : array<string|int, mixed>
Construit, pour une série de valeur, la liste des classes standardisées (moyenne et écart-type).
classe_standard_k()  : array<string|int, mixed>
Construit, pour une série de valeur, la liste des classes standardisées (moyenne et écart-type) en adaptant l'étendue de chaque classe pour que celles-ci restent incluses dans le domaine de la série.
classe_standard_cote_z()  : array<string|int, mixed>
Construit, pour une série de valeur, la liste des classes basée la méthode des cotes Z.
classe_moyenne_emboitee()  : array<string|int, mixed>
Construit, pour une série de valeur, la liste des classes basée sur les moyennes emboîtées.
classe_jenks()  : array<string|int, mixed>
Construit, pour une série de valeur, la liste des classes basée sur les ruptures naturelles de Jenks.
serie_ruptures_naturelles()  : array<string|int, mixed>
Détermine les ruptures naturelles d'une série de valeurs par l'algorithme exact de Fisher-Jenks.
discretisation_indice_tai()  : null|float
Calcule l'indice TAI de Jenks (Tabular Accuracy Index) qui permet d'évaluer l'homogénéité d'une discrétisation.
discretisation_indice_i()  : null|float
Calcule l'indice I donné par le rapport des variances (ou des sommes carrées) intra et inter classes qui donne une information sur l'homogénéité des classes.
discretisation_indice_redondance()  : null|float
Calcule l'indice de redondance (dérivé de l'entropie de Shannon) qui mesure le niveau d'information apporté par la discrétisation.
discretisation_indice_d()  : null|float
Calcule l'indice D de Jenks qui permet d'évaluer la qualité d'une discrétisation.
discretisation_indice_c()  : null|float
Calcule l'indice C de Geary qui permet d'évaluer la qualité d'une discrétisation.
discretisation_ssw_ssb()  : array<string|int, mixed>
Calcule la sommes des carrés intra et inter classes qui donne une information sur l'homogénéité des classes.
classe_nb_constructible()  : null|int
Détermine le nombre de classes réellement constructible pour une série de valeurs donnée.
classe_trouver()  : null|int
Détermine l'index de la classe (intervalle) dans laquelle se trouve une valeur.
serie_couper()  : array<string|int, mixed>
Scinde une série de valeurs en deux séries de part et d'autre d'une valeur donnée.
serie_transtyper()  : array<string|int, mixed>
Transtype les valeurs d'une série dans un type numérique donné.
serie_transformer()  : array<string|int, mixed>
Transforme les valeurs d'une série en appliquant une fonction donnée à chaque valeur.
valeur_transformer()  : float
Transforme une valeur entière ou réelle en appliquant une fonction donnée.
expa()  : float
Calcule l'exponentielle pour une base donnée.
sphere_point_valider()  : null|array<string|int, mixed>
Vérifie qu'un point est bien un couple (latitude, longitude) exploitable et renvoie ses coordonnées réindexées de zéro et transtypées en réels.
distance_euclidienne()  : null|float
Calcule la distance euclidienne entre deux points connus par leur coordonnées cartésiennes dans un espace à n dimensions.
sphere_distance_haversine()  : null|float
Calcule la distance géodésique en utilisant la formule d'Haversine qui permet de déterminer la distance du grand cercle entre deux points d'une sphère, à partir de leurs longitudes et latitudes.
sphere_distance_loi_sinus()  : null|float
Calcule la distance entre deux points d'une sphère en utilisant la loi des sinus à partir de leurs longitudes et latitudes.
sphere_distance_euclidienne()  : null|float
Calcule la distance euclidienne entre deux points d'une sphère, à partir de leurs longitudes et latitudes.
matrice_ponderation_spatiale()  : array<string|int, mixed>
Calcule la matrice de pondération spatiale d'une liste de coordonnées exprimés en (latitude, longitude).
matrice_multiplier()  : array<string|int, mixed>
Effectue le produit de deux matrices compatibles.
matrice_transposer()  : array<string|int, mixed>
Transpose une matrice, c'est-à-dire échange ses lignes et ses colonnes : la transposée d'une matrice d'ordre m × n est d'ordre n × m.
matrice_dimensionner()  : array<string|int, mixed>
Détermine les dimensions d'une matrice et vérifie au passage qu'elle est correctement formée, c'est-à-dire que toutes ses lignes comptent le même nombre de colonnes.
serie_statistiques()  : null|array<string|int, mixed>
Renvoie, pour une série quantitative donnée, la liste des indicateurs de position, de dispersion et de forme.
serie_mode()  : null|array<string|int, mixed>
Calcule le mode d'une série de valeurs.
serie_moyenne()  : null|float
Calcule la moyenne arithmétique d'une série de valeurs.
serie_moyenne_geometrique()  : null|float
Calcule la moyenne géométrique d'une série de valeurs.
serie_moyenne_harmonique()  : null|float
Calcule la moyenne harmonique d'une série de valeurs.
serie_moyenne_ponderee()  : null|float
Calcule la moyenne d'une série de valeurs pondérée par une liste de poids.
serie_mediane()  : null|float
Calcule la médiane d'une série de valeurs.
serie_centile()  : null|float
Calcule le p-ième centile d'une série de valeurs.
serie_quantiles()  : null|array<string|int, mixed>
Calcule les quantiles d'une série de valeurs pour un ordre donné.
serie_quartiles()  : null|array<string|int, mixed>
Calcule les quartiles d'une série de valeurs, c'est-à-dire les 3 quantiles d'ordre 4, nommés Q₁, Q₂ et Q₃.
serie_etendue()  : null|float
Calcule l'étendue d'une série de valeurs.
serie_interquartile()  : null|float
Calcule la distance interquartile.
serie_variance()  : null|float
Calcule la variance d'une série de valeurs.
serie_ecart_type()  : null|float
Calcule l'écart type d'une série de valeurs.
serie_moment()  : null|float
Calcule le moment à l'origine ou centré d'ordre `p`, pour `p` supérieur à 1.
serie_asymetrie_fisher()  : null|float
Calcule le coefficient d'asymétrie de Fisher à partir du moment centré d'ordre 3.
serie_asymetrie_yule()  : null|float
Calcule le coefficient d'asymétrie de Yule à partir des quartiles.
serie_asymetrie_pearson()  : null|float
Calcule le coefficient d'asymétrie de Pearson à partir de la médiane (asymétrie de médiane).
serie_kurtosis_pearson()  : null|float
Calcule le coefficient d'aplatissement - kurtosis - de Pearson à partir du moment centré d'ordre 4.
serie_kurtosis_fisher()  : null|float
Calcule le coefficient d'aplatissement - kurtosis - de Fisher qui normalise le coefficient d'aplatissement de Pearson.
serie_autocorrelation_geary()  : null|float
Calcule l'indice de Geary qui mesure l'autocorrélation spatiale qui exprime la corrélation des observations adjacentes d'un même phénomène.

Constants

_EZMATH_RAYON_TERRE_KM

Rayon de la terre en kilomètre selon l'UGGI.

public mixed _EZMATH_RAYON_TERRE_KM = 6371.009

_EZMATH_TAI_METHODE

Indique la méthode de calcul du TAI avec la moyenne ou la valeur centrale (défaut `moyenne`).

public mixed _EZMATH_TAI_METHODE = 'moyenne'

Correspond au choix de la variable μₖ dans la formule.

Functions

serie_indice_huntsberger()

Calcule l'indice de Hunstberger qui permet de définir le nombre de classes optimale pour la discrétisation d'une série de valeurs en utilisant une formule basée uniquement sur l'effectif.

serie_indice_huntsberger(array<string|int, mixed> $serie) : null|float
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|float

Indice ou null si erreur (série vide)

serie_indice_brooks()

Calcule l'indice de Brooks qui permet de définir le nombre de classes optimale pour la discrétisation d'une série de valeurs en utilisant une formule basée uniquement sur l'effectif.

serie_indice_brooks(array<string|int, mixed> $serie) : null|float
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|float

Indice ou null si erreur (série vide)

serie_indice_yule()

Calcule l'indice de Yule qui permet de définir le nombre de classes optimale pour la discrétisation d'une série de valeurs en utilisant une formule basée uniquement sur l'effectif.

serie_indice_yule(array<string|int, mixed> $serie) : null|float
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|float

Indice ou null si erreur (série vide)

serie_indice_scott()

Calcule l'indice de Scott qui permet de définir le nombre de classes optimale pour la discrétisation d'une série de valeurs en utilisant une formule basée sur l'effectif, l'étendue et l'écart type.

serie_indice_scott(array<string|int, mixed> $serie) : null|float
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|float

Indice ou null si erreur (série vide, réduite à un élément ou d'écart type nul)

serie_indice_diaconis()

Calcule l'indice de Freedman-Diaconis qui permet de définir le nombre de classes optimale pour la discrétisation d'une série de valeurs en utilisant une formule basée sur l'effectif, l'étendue et la distance interquartile.

serie_indice_diaconis(array<string|int, mixed> $serie) : null|float
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|float

Indice ou null si erreur (série vide ou de distance interquartile nulle)

serie_discretisation()

Discrétise une série de valeurs en un nombre de classes donné en appliquant une méthode de discrétisation choisie parmi les méthodes mathématiques ou statistiques classiques et, eventuellement, en transformant mathématiquement la série pour la normaliser.

serie_discretisation(array<string|int, mixed> $serie[, null|string $methode = 'equivalence' ][, null|int $nb_classes = 5 ][, null|array<string|int, mixed> $transformation = [] ]) : array<string|int, mixed>

Les méthodes mathématiques disponibles sont :

  • discrétisation en classes d'égales étendues (equivalence)
  • discrétisation selon une progression arithmétique (progression_arithmetique)
  • discrétisation selon une progression géométrique (progression_geometrique)

Les méthodes statistiques disponibles sont :

  • discrétisation selon les quantiles (quantile)
  • discrétisation selon la moyenne et l'écart-type (standard)
  • discrétisation selon les moyennes emboîtées (moyenne_emboitee)
  • discrétisation de Jenks basée sur la notion de variance (jenks)

Pour toutes les méthodes sauf celle de Jenks, les intervalles de classes sont fermés à gauche et ouverts à droite. Dans le cas de la méthode de Jenks, c'est le contraire.

Les transformations mathématiques autorisées sont : puissance, racine, logarithme, box-cox, 1/x et les fonctions inverses.

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$methode : null|string = 'equivalence'

Identifiant de la méthode de discrétisation (par défaut, égales étendues)

$nb_classes : null|int = 5

Nombre de classes de la discrétisation (défaut 5 sauf pour les moyennes emboitées)

$transformation : null|array<string|int, mixed> = []

Opération mathématique à appliquer à la valeur décrite sous forme de tableau :

  • string fonction : fonction mathématique PHP à appliquer
  • float parametre : le parametre éventuel de la fonction PHP autre que la valeur (null sinon)
  • bool inverser : indique si on doit inverser la valeur transformée
Return values
array<string|int, mixed>

Tableau des classes et de la série discrétisée, à savoir :

  • index serie_classe : la série avec les index conservé et les valeurs remplacées par l'index de la classe d'appartenance
  • index classes : La liste des classes avec pour chaque classe,
  • binf et bsup, les bornes de l'intervalle
  • effectif et frequence, le nombre d'éléments et la fréquence
  • centre, la valeur centrale de la classe
  • etendue et etendue_ponderee, l'étendue et l'étendue pondérée par la moyenne de la classe, cette dernière valant null pour une classe vide, qui n'a pas de moyenne
  • etendue_ponderee_theorique, l'étendue pondérée par le centre de la classe, valant null pour une classe centrée sur zéro
  • serie, le tableau des éléménts de la série inclus dans la classe
  • index qualite : les indicateurs de la qualité de la discrétisation (TAI, I, et R)

classe_equivalence()

Construit, pour une série de valeur, la liste des classes d'égales étendues.

classe_equivalence(array<string|int, mixed> $serie[, null|int $nb_classes = 5 ]) : array<string|int, mixed>
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$nb_classes : null|int = 5

Nombre de classes de la discrétisation (défaut 5)

Return values
array<string|int, mixed>

Tableau des classes, à savoir :

  • index binf : borne inférieure de l'intervalle
  • index bsup : borne supérieure de l'intervalle

classe_progression_arithmetique()

Construit, pour une série de valeur, la liste des classes selon une progression arithmétique.

classe_progression_arithmetique(array<string|int, mixed> $serie[, null|int $nb_classes = 5 ]) : array<string|int, mixed>
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$nb_classes : null|int = 5

Nombre de classes de la discrétisation (défaut 5)

Return values
array<string|int, mixed>

Tableau des classes, à savoir :

  • index binf : borne inférieure de l'intervalle
  • index bsup : borne supérieure de l'intervalle

classe_progression_geometrique()

Construit, pour une série de valeur, la liste des classes selon une progression géométrique.

classe_progression_geometrique(array<string|int, mixed> $serie[, null|int $nb_classes = 5 ]) : array<string|int, mixed>

La progression reposant sur les logarithmes des valeurs, la série doit être strictement positive.

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$nb_classes : null|int = 5

Nombre de classes de la discrétisation (défaut 5)

Return values
array<string|int, mixed>

Tableau des classes, à savoir :

  • index binf : borne inférieure de l'intervalle
  • index bsup : borne supérieure de l'intervalle Le tableau est vide en cas d'erreur, notamment si la série n'est pas strictement positive.

classe_quantile()

Construit, pour une série de valeur, la liste des classes basée sur les quantiles (effectifs égaux).

classe_quantile(array<string|int, mixed> $serie[, null|int $nb_classes = 5 ]) : array<string|int, mixed>
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$nb_classes : null|int = 5

Nombre de classes de la discrétisation (défaut 5)

Return values
array<string|int, mixed>

Tableau des classes, à savoir :

  • index binf : borne inférieure de l'intervalle
  • index bsup : borne supérieure de l'intervalle

classe_standard()

Construit, pour une série de valeur, la liste des classes standardisées (moyenne et écart-type).

classe_standard(array<string|int, mixed> $serie[, null|int $nb_classes = 5 ][, null|float $k = 1 ]) : array<string|int, mixed>
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$nb_classes : null|int = 5

Nombre de classes de la discrétisation (défaut 5)

$k : null|float = 1

Coefficient appliqué à l'écart-type pour adapter les classes (défaut 1)

Return values
array<string|int, mixed>

Tableau des classes, à savoir :

  • index binf : borne inférieure de l'intervalle
  • index bsup : borne supérieure de l'intervalle

classe_standard_k()

Construit, pour une série de valeur, la liste des classes standardisées (moyenne et écart-type) en adaptant l'étendue de chaque classe pour que celles-ci restent incluses dans le domaine de la série.

classe_standard_k(array<string|int, mixed> $serie[, null|int $nb_classes = 5 ]) : array<string|int, mixed>

Pour cela, on calcule un coefficient d'adaptation de l'écart-type toujours compris entre 0 et 1.

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$nb_classes : null|int = 5

Nombre de classes de la discrétisation (défaut 5)

Return values
array<string|int, mixed>

Tableau des classes, à savoir :

  • index binf : borne inférieure de l'intervalle
  • index bsup : borne supérieure de l'intervalle

classe_standard_cote_z()

Construit, pour une série de valeur, la liste des classes basée la méthode des cotes Z.

classe_standard_cote_z(array<string|int, mixed> $serie[, null|int $nb_classes = 5 ]) : array<string|int, mixed>
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$nb_classes : null|int = 5

Nombre de classes de la discrétisation (défaut 5)

Return values
array<string|int, mixed>

Tableau des classes, à savoir :

  • index binf : borne inférieure de l'intervalle
  • index bsup : borne supérieure de l'intervalle

classe_moyenne_emboitee()

Construit, pour une série de valeur, la liste des classes basée sur les moyennes emboîtées.

classe_moyenne_emboitee(array<string|int, mixed> $serie[, null|int $nb_classes = 4 ]) : array<string|int, mixed>

Le nombre de classes doit être une puissance de 2, l'emboîtement étant dyadique par construction.

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$nb_classes : null|int = 4

Nombre de classes de la discrétisation (défaut 4), puissance de 2

Return values
array<string|int, mixed>

Tableau des classes, à savoir :

  • index binf : borne inférieure de l'intervalle
  • index bsup : borne supérieure de l'intervalle Le tableau peut compter moins de classes que demandé si la série ne se subdivise pas assez, et il est vide en cas d'erreur (série non discrétisable, nombre de classes non puissance de 2).

classe_jenks()

Construit, pour une série de valeur, la liste des classes basée sur les ruptures naturelles de Jenks.

classe_jenks(array<string|int, mixed> $serie[, null|int $nb_classes = 5 ]) : array<string|int, mixed>
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$nb_classes : null|int = 5

Nombre de classes de la discrétisation (défaut 5)

Return values
array<string|int, mixed>

Tableau des classes, à savoir :

  • index binf : borne inférieure de l'intervalle
  • index bsup : borne supérieure de l'intervalle

serie_ruptures_naturelles()

Détermine les ruptures naturelles d'une série de valeurs par l'algorithme exact de Fisher-Jenks.

serie_ruptures_naturelles(array<string|int, mixed> $serie, int $nb_classes) : array<string|int, mixed>

La méthode cherche la partition de la série en $nb_classes classes qui minimise la somme des carrés des écarts intra-classes, autrement dit celle qui rend les classes les plus homogènes possible tout en les séparant au mieux les unes des autres. C'est la définition même de la méthode, et elle admet une solution exacte obtenue par programmation dynamique - il ne s'agit donc pas d'une heuristique.

Le calcul repose sur deux éléments :

  1. Le coût d'un segment, c'est-à-dire la somme des carrés des écarts à sa moyenne, s'obtient en temps constant grâce aux sommes cumulées des valeurs et de leurs carrés :

                          ⟮∑xᵢ⟯²
    

    coût⟮i,j⟯ = ∑⟮xᵢ²⟯ - ------ où i et j délimitent le segment et n son effectif n

  2. La récurrence : le coût minimal d'une partition des j premières valeurs en m classes se déduit du coût minimal d'une partition en m-1 classes, en essayant toutes les positions de début possibles pour la dernière classe.

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$nb_classes : int

Nombre de classes à construire, au plus égal au nombre de valeurs de la série

Tags
note

L'algorithme est en O($nb_classes × n²). Il reste immédiat jusqu'à quelques milliers de valeurs, ce qui couvre largement les usages cartographiques courants, mais devient coûteux au-delà.

Return values
array<string|int, mixed>

Liste des $nb_classes+1 bornes successives : le minimum de la série, puis la valeur maximale de chacune des classes. Les intervalles ainsi décrits sont ouverts à gauche et fermés à droite, ce qui correspond au mode d'inclusion bsup retenu pour cette méthode.

discretisation_indice_tai()

Calcule l'indice TAI de Jenks (Tabular Accuracy Index) qui permet d'évaluer l'homogénéité d'une discrétisation.

discretisation_indice_tai(array<string|int, mixed> $serie, array<string|int, mixed> $classes[, null|string $methode = _EZMATH_TAI_METHODE ]) : null|float

il mesure l'écart entre les valeurs de la série et les valeurs correspondantes des classes. Il compare les écarts (en valeur absolue) des valeurs à la moyenne de chaque classe aux écarts de ces mêmes valeurs à la moyenne générale de la série (toujours en valeur absolue).

        K   Nₖ
        ∑   ∑ |xᵢₖ - μₖ|
       k=1 i=1

TAI = 1 - -------------------- où K désigne le nombre de classes, N l'effectif de la série, Nₖ l'effectif de la classe k, N xᵢₖ les valeurs xᵢ de la classe k, xᵢ les valeurs de la série, ∑ |xᵢ - μ| μₖ la moyenne de la classe k et μ la moyenne globale de la série i=1

  • TAI ∈ [0, 1]
  • TAI proche de 1 : la somme des écarts intra-classes est plus faible que la somme des écarts à la moyenne générale. la discrétisation crée des classes homogènes (satisfaisant à partir de 0,8, excellent à partir de 0,9 et médiocre en dessous de 0,7)
  • TAI proche de 0 : la somme des écarts intra-classes est peu différente de la somme des écarts à la moyenne générale. la discrétisation crée des classes peu homogènes
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$classes : array<string|int, mixed>

Les classes issues de la discrétisation

$methode : null|string = _EZMATH_TAI_METHODE

moyenne (défaut) si μₖ est la moyenne arithmétique, centre si μₖ est le centre de la classe

Return values
null|float

Indice ou null si erreur (série vide)

discretisation_indice_i()

Calcule l'indice I donné par le rapport des variances (ou des sommes carrées) intra et inter classes qui donne une information sur l'homogénéité des classes.

discretisation_indice_i(array<string|int, mixed> $serie, array<string|int, mixed> $classes) : null|float

σ²(intra) SSW I = --------- = ----- où SSW est la somme des carrés intra-classes et SSB la somme des carrés inter-classes σ²(inter) SSB

  • I ∈ [0,+∞[
  • Plus I est proche de zéro, plus les groupes sont homogènes : excellent en dessous de 0,1, acceptable entre 0,1 et 0,3 et médiocre au-delà.
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$classes : array<string|int, mixed>

Les classes issues de la discrétisation

Return values
null|float

Indice ou null si erreur (série vide)

discretisation_indice_redondance()

Calcule l'indice de redondance (dérivé de l'entropie de Shannon) qui mesure le niveau d'information apporté par la discrétisation.

discretisation_indice_redondance(array<string|int, mixed> $serie, array<string|int, mixed> $classes[, null|array<string|int, mixed> $probabilites = [] ]) : null|float

H K R = 1 - ---- où H = - ∑ pᵢLog₂(pᵢ) et Hₘ = Log₂(K) Hₘ k=1

K désigne le nombre de classes et pᵢ la probabilité d'apparition des éléments dans la classe i. H est l'entropie de Shannon de la discrétisation et Hₘ l'entropie maximale atteignable pour K classes, obtenue lorsque celles-ci sont équiprobables.

La probabilité d'apparition pᵢ est, par défaut, calculée à partir des effectifs de classe. Néanmoins, il est possible de calculer cette probabilité en utilisant d'autres concepts comme la surface couverte par le phénomène.

  • R ∈ [0, 1], plus R est proche de zéro, plus l'information est importante (l'entropie se rapproche du max pour le nombre de classes choisi).
  • R < 0.2 est généralement considéré comme le signe d'une bonne discrétisation.
  • 0.2 ≤ R < 0.5, une certaine perte d'information est inévitable, mais la discrétisation est encore acceptable.
  • R ≥ 0.5, une grande partie de l'information est perdue, et la discrétisation est probablement sous-optimale
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$classes : array<string|int, mixed>

Les classes issues de la discrétisation.

$probabilites : null|array<string|int, mixed> = []

Si non vide, fournit la probabilité pᵢ à utiliser pour chaque classe. Si vide, la probabilité correspond à la fréquence de chaque classe

Return values
null|float

Indice ou null si erreur (série vide)

discretisation_indice_d()

Calcule l'indice D de Jenks qui permet d'évaluer la qualité d'une discrétisation.

discretisation_indice_d(array<string|int, mixed> $classes) : null|float

Il compare les moyennes des classes observées à des moyennes estimées, attendues, en fonction des limites définies. Cet indice mesure l'écart à l'intérieur de chaque classe : plus la somme des écarts est faible, plus l'indice est faible.

 1

D = --- ∑|Epᵢ - εpᵢ| où K désigne le nombre de classes, Epᵢ l'étendue pondérée de la classe i, K et εpᵢ l'étendue théorique pondérée de la classe i

  • D proche de 0 : la somme des écarts intra-classes est peu différente de la somme des écarts à la moyenne générale.
  • D inférieur à 0,1 : excellent
  • D entre 0,1 et 0,25 : acceptable
  • D supérieur à 0,25 : médiocre
Parameters
$classes : array<string|int, mixed>

Les classes issues de la discrétisation

Tags
note

L'indice n'est pas défini si la discrétisation comporte une classe vide, celle-ci n'ayant pas de moyenne observée. Substituer une valeur de repli à son étendue pondérée fausserait l'indice dans le sens le plus trompeur qui soit : il s'améliorerait à mesure que le nombre de classes vides augmente, alors que la discrétisation se dégrade. On renvoie donc une erreur, comme le fait discretisation_indice_redondance() dans la même situation.

Return values
null|float

Indice ou null si erreur (aucune classe, classe vide ou classe centrée sur zéro)

discretisation_indice_c()

Calcule l'indice C de Geary qui permet d'évaluer la qualité d'une discrétisation.

discretisation_indice_c(array<string|int, mixed> $classes, array<string|int, mixed> $ponderation) : null|float

C'est le même calcul qui est fait sur la série - fonction serie_autocorrelation_geary() - mais en ne l'appliquant que sur les classes et non la série elle-même. L'indice obtenu est à comparer à celui de la série initiale.

Plus l'indice est proche de celui de la série, plus la discrétisation sera considérée proche de la répartition initiale. On peut dire :

  • inférieur à 10% d'écart est très bon
  • jusqu'à 25% c'est acceptable
  • au-delà c'est médiocre, donc à rejeter
Parameters
$classes : array<string|int, mixed>

Les classes issues de la discrétisation

$ponderation : array<string|int, mixed>

Matrice de pondération spatiale

Return values
null|float

Indice ou null si erreur (série vide)

discretisation_ssw_ssb()

Calcule la sommes des carrés intra et inter classes qui donne une information sur l'homogénéité des classes.

discretisation_ssw_ssb(array<string|int, mixed> $serie, array<string|int, mixed> $classes) : array<string|int, mixed>

La somme des carrés intra-classes (SSW) correspond à la dispersion totale des observations autour de leurs moyennes de classe respectives. La somme des carrés inter-classes mesure la dispersion des moyennes des classes par rapport à la moyenne globale, pondérée par la taille des classes.

  K   Nₖ

SSW = ∑ ∑ (xᵢₖ - μₖ)² où K désigne le nombre de classes, Nₖ l'effectif de la classe k, k=1 i=1 xᵢₖ les valeurs xᵢ de la classe k, μₖ la moyenne de la classe k et μ la moyenne globale de la série K SSB = ∑ Nₖ(μₖ - μ)² k=1

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$classes : array<string|int, mixed>

Les classes issues de la discrétisation

Return values
array<string|int, mixed>

Les sommes SSW et SSB ou tableau vide sinon (série vide)

classe_nb_constructible()

Détermine le nombre de classes réellement constructible pour une série de valeurs donnée.

classe_nb_constructible(array<string|int, mixed> $serie, null|int $nb_classes) : null|int

Une série ne peut pas être discrétisée en plus de classes qu'elle ne compte de valeurs distinctes, et une série réduite à une seule valeur distincte (série constante) n'est pas discrétisable du tout : toutes les classes construites seraient de bornes identiques, donc impossibles à départager lors de l'affectation des valeurs.

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$nb_classes : null|int

Nombre de classes souhaité

Tags
note

C'est la règle appliquée par le paquet R classInt, référence de la classification choroplèthe, qui refuse une série à valeur unique et bascule sur autant de classes que de valeurs distinctes le cas échéant.

Return values
null|int

Nombre de classes constructible, au plus égal au nombre de valeurs distinctes de la série, ou null si la série n'est pas discrétisable (série vide ou constante, nombre de classes invalide)

classe_trouver()

Détermine l'index de la classe (intervalle) dans laquelle se trouve une valeur.

classe_trouver(float|int $valeur, array<string|int, mixed> $classes[, null|string $inclusion = 'binf' ]) : null|int
Parameters
$valeur : float|int

Valeur numérique à localiser

$classes : array<string|int, mixed>

Tableau des classes. L'intervalle est défini par les index binf et bsup.

$inclusion : null|string = 'binf'

Borne incluse dans l'intervalle, l'autre étant excluse. Vaut binf (défaut) ou bsup.

Return values
null|int

Index de la classe ou null si non trouvée

serie_couper()

Scinde une série de valeurs en deux séries de part et d'autre d'une valeur donnée.

serie_couper(array<string|int, mixed> $serie, float|int $valeur_coupe) : array<string|int, mixed>
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$valeur_coupe : float|int

Valeur permettant de construire les deux séries de part et d'autre

Return values
array<string|int, mixed>

Tableau des séries résultantes, l'index 0 pour la série à gauche de la valeur de coupe et l'index 1 pour la série à droite. Renvoie vide si erreur.

serie_transtyper()

Transtype les valeurs d'une série dans un type numérique donné.

serie_transtyper(array<string|int, mixed> $serie, string $type) : array<string|int, mixed>

Si le type choisi n'est pas numérique aucun transtypage est effectué.

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$type : string
Return values
array<string|int, mixed>

Série transtypée ou non si le type n'est pas valide.

serie_transformer()

Transforme les valeurs d'une série en appliquant une fonction donnée à chaque valeur.

serie_transformer(array<string|int, mixed> $serie, array<string|int, mixed> $transformation[, null|bool $reciproque = false ]) : array<string|int, mixed>

La série doit appartenir au domaine de définition de la fonction choisie : le logarithme exige des valeurs strictement positives, la racine carrée des valeurs positives ou nulles, et l'inversion des valeurs non nulles. Hors domaine, la transformation produit des valeurs non finies (NAN ou INF) qui, propagées jusqu'aux bornes de classe, casseraient silencieusement la discrétisation. La série entière est donc rejetée dans ce cas.

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$transformation : array<string|int, mixed>

Opération mathématique à appliquer à la valeur décrite sous forme de tableau :

  • string fonction : fonction mathématique PHP à appliquer
  • float parametre : le parametre éventuel de la fonction PHP autre que la valeur (null sinon)
  • bool inverser : indique si on doit inverser la valeur transformée
$reciproque : null|bool = false

Indique si l'on veut appliquer la réciproque de la fonction décrite dans $transformation (défaut false).

Return values
array<string|int, mixed>

Série transformée, non transformée si la fonction n'est pas valide, ou vide si la série sort du domaine de définition de la fonction.

valeur_transformer()

Transforme une valeur entière ou réelle en appliquant une fonction donnée.

valeur_transformer(float|int $valeur, null|array<string|int, mixed> $transformation[, null|bool $reciproque = false ]) : float
Parameters
$valeur : float|int

Valeurs entière ou décimale à transformer.

$transformation : null|array<string|int, mixed>

Opération mathématique à appliquer à la valeur décrite sous forme de tableau :

  • string fonction : fonction mathématique PHP à appliquer
  • float parametre : le parametre éventuel de la fonction PHP autre que la valeur (null sinon)
  • bool inverser : indique si on doit inverser la valeur transformée
$reciproque : null|bool = false

Indique si l'on veut appliquer la réciproque de la fonction décrite dans $transformation (défaut false).

Return values
float

Valeur transformée ou non si la fonction n'est pas valide.

expa()

Calcule l'exponentielle pour une base donnée.

expa(float $num[, null|float $base = M_E ]) : float
Parameters
$num : float

La valeur pour laquelle on calcule l'exponentielle

$base : null|float = M_E

La base optionnelle à utiliser (par défaut, e)

Return values
float

Valeur calculée

sphere_point_valider()

Vérifie qu'un point est bien un couple (latitude, longitude) exploitable et renvoie ses coordonnées réindexées de zéro et transtypées en réels.

sphere_point_valider(array<string|int, mixed> $point) : null|array<string|int, mixed>

Les bornes retenues sont celles du système géodésique mondial : la latitude appartient à [-90, 90] et la longitude à [-180, 180]. Les fonctions trigonométriques étant périodiques, des coordonnées hors de ces bornes produiraient un résultat d'apparence plausible : les refuser est le seul moyen de signaler une donnée aberrante plutôt que de la cartographier silencieusement.

Parameters
$point : array<string|int, mixed>

Coordonnées du point exprimé en (latitude, longitude), en degrés décimaux

Tags
note

Certains jeux de données expriment la longitude sur l'intervalle [0, 360] et non [-180, 180]. Ils doivent être ramenés à la convention ci-dessus avant d'être fournis à ces fonctions.

Return values
null|array<string|int, mixed>

Couple (latitude, longitude) réindexé de zéro ou null si le point n'est pas un couple de valeurs numériques comprises dans les bornes géographiques

distance_euclidienne()

Calcule la distance euclidienne entre deux points connus par leur coordonnées cartésiennes dans un espace à n dimensions.

distance_euclidienne(array<string|int, mixed> $point_p, array<string|int, mixed> $point_q) : null|float

d(p,q) = √∑(pᵢ - qᵢ)² où pᵢ et qᵢ désignent les ième coordonnées des points p et q.

Parameters
$point_p : array<string|int, mixed>

Coordonnées du premier point

$point_q : array<string|int, mixed>

Coordonnées du deuxième point

Return values
null|float

Valeur de la distance euclidienne ou null si erreur (point vide ou points exprimés dans des espaces de dimensions différentes)

sphere_distance_haversine()

Calcule la distance géodésique en utilisant la formule d'Haversine qui permet de déterminer la distance du grand cercle entre deux points d'une sphère, à partir de leurs longitudes et latitudes.

sphere_distance_haversine(array<string|int, mixed> $point1, array<string|int, mixed> $point2) : null|float

Latitude et longitude sont exprimés en degrés (non sexagésimaux). √a φ₂-φ₁ λ₂-λ₁ d(p₁,p₂) = 2r.arctan(------) avec a = sin²(-----) + cos(φ₁).cos(φ₂).sin²(-----) √(1-a) 2 2 où r est le rayon de la terre, soit 6371,009 km φ₁ et φ₂ sont les latitudes des points p₁ et p₂ λ₁ et λ₂ sont les longitudes des points p₁ et p₂

Cette formule est plus précise grâce à l'utilisation de la fonction arctangente que celle classique avec l'arcsinus.

Parameters
$point1 : array<string|int, mixed>

Coordonnées du premier point exprimé en (latitude, longitude)

$point2 : array<string|int, mixed>

Coordonnées du deuxième point exprimé en (latitude, longitude)

Return values
null|float

Distance en kilomètres ou null si un point n'est pas un couple (latitude, longitude) valide, au sens de sphere_point_valider()

sphere_distance_loi_sinus()

Calcule la distance entre deux points d'une sphère en utilisant la loi des sinus à partir de leurs longitudes et latitudes.

sphere_distance_loi_sinus(array<string|int, mixed> $point1, array<string|int, mixed> $point2) : null|float

Latitude et longitude sont exprimés en degrés (non sexagésimaux).

d(p₁,p₂) = r.arccos(cos_β) avec cos_β = sin(φ₁).sin(φ₂) + cos(φ₁).cos(φ₂).cos(λ₂-λ₁), β étant appelé l'angle central où r est le rayon de la terre, soit 6371,009 km φ₁ et φ₂ sont les latitudes des points p₁ et p₂ λ₁ et λ₂ sont les longitudes des points p₁ et p₂

Parameters
$point1 : array<string|int, mixed>

Coordonnées du premier point exprimé en (latitude, longitude)

$point2 : array<string|int, mixed>

Coordonnées du deuxième point exprimé en (latitude, longitude)

Tags
note

Cette formule perd en précision sur les points proches : le cosinus de l'angle central y vaut presque 1 et l'arc cosinus amplifie alors l'erreur d'arrondi, au point de renvoyer plusieurs centimètres pour la distance d'un point à lui-même. Lui préférer sphere_distance_haversine(), dont l'arc tangente ne souffre pas de ce défaut.

Return values
null|float

Distance en kilomètres ou null si un point n'est pas un couple (latitude, longitude) valide, au sens de sphere_point_valider()

sphere_distance_euclidienne()

Calcule la distance euclidienne entre deux points d'une sphère, à partir de leurs longitudes et latitudes.

sphere_distance_euclidienne(array<string|int, mixed> $point1, array<string|int, mixed> $point2) : null|float

Latitude et longitude sont exprimés en degrés (non sexagésimaux).

Les coordonnées sphériques (φ,λ) sont converties en coordonnées cartésiennes (x,y,z) de la façon suivante:

  • x = r.cos(φ).cos(λ)
  • y = r.cos(φ).sin(λ)
  • z = r.sin(φ) où r est le rayon de la terre, soit 6371,009 km Il suffit alors de calculer la distance euclidienne d(p, q).

La distance obtenue est celle de la corde, c'est-à-dire du segment qui traverse la sphère, et non celle de l'arc parcouru à sa surface : elle sous-estime donc toujours la distance géodésique, d'autant plus que les points sont éloignés. L'écart reste négligeable à l'échelle régionale - de l'ordre du dixième de pour mille sur quelques centaines de kilomètres - mais atteint 10% d'un pôle à l'équateur.

Parameters
$point1 : array<string|int, mixed>

Coordonnées du premier point exprimé en (latitude, longitude)

$point2 : array<string|int, mixed>

Coordonnées du deuxième point exprimé en (latitude, longitude)

Return values
null|float

Distance en kilomètres ou null si un point n'est pas un couple (latitude, longitude) valide, au sens de sphere_point_valider()

matrice_ponderation_spatiale()

Calcule la matrice de pondération spatiale d'une liste de coordonnées exprimés en (latitude, longitude).

matrice_ponderation_spatiale(array<string|int, mixed> $coordonnees[, null|string $f_distance = 'sphere_distance_haversine' ]) : array<string|int, mixed>

Latitude et longitude sont exprimés en degrés (non sexagésimaux).

Chaque unité spatiale est pondérée par l'inverse de sa distance aux autres : plus deux unités sont proches, plus leur pondération est forte. La diagonale est nulle, une unité n'étant pas sa propre voisine. La matrice obtenue alimente notamment le calcul de l'indice d'autocorrélation spatiale de Geary.

Parameters
$coordonnees : array<string|int, mixed>

Coordonnées des points exprimés en (latitude, longitude), indexées par l'identifiant de l'unité spatiale, numérique ou non

$f_distance : null|string = 'sphere_distance_haversine'

Fonction de calcul de la distance entre points. Par défaut méthode d'Haversine

Tags
note

Deux unités de coordonnées identiques donneraient une pondération infinie : un epsilon est donc ajouté à la distance, qui plafonne la pondération sans altérer sensiblement les autres.

Return values
array<string|int, mixed>

Matrice carrée des pondérations, indexée dans les deux dimensions par les identifiants fournis, ou tableau vide si la fonction de distance est inconnue ou si une distance n'est pas calculable

matrice_multiplier()

Effectue le produit de deux matrices compatibles.

matrice_multiplier(array<string|int, mixed> $matrice1, array<string|int, mixed> $matrice2) : array<string|int, mixed>

Le produit n'est défini que si les matrices sont compatibles, à savoir la première d'ordre m × n et la seconde d'ordre n × p, le résultat étant alors d'ordre m × p.

Le produit hérite des identifiants des matrices d'origine : ses lignes portent les clés de lignes de la première matrice et ses colonnes les clés de colonnes de la seconde.

Parameters
$matrice1 : array<string|int, mixed>

Matrice de gauche, d'ordre m × n

$matrice2 : array<string|int, mixed>

Matrice de droite, d'ordre n × p

Return values
array<string|int, mixed>

La matrice produit ou tableau vide si les matrices sont mal formées ou incompatibles

matrice_transposer()

Transpose une matrice, c'est-à-dire échange ses lignes et ses colonnes : la transposée d'une matrice d'ordre m × n est d'ordre n × m.

matrice_transposer(array<string|int, mixed> $matrice) : array<string|int, mixed>

Les clés sont elles aussi échangées : les clés de colonnes de la matrice deviennent les clés de lignes de sa transposée, et réciproquement. Transposer une matrice symétrique - une matrice de pondération spatiale, par exemple - restitue donc exactement la matrice de départ, identifiants compris.

Parameters
$matrice : array<string|int, mixed>

Matrice à transposer

Return values
array<string|int, mixed>

La matrice transposée ou tableau vide si la matrice est mal formée

matrice_dimensionner()

Détermine les dimensions d'une matrice et vérifie au passage qu'elle est correctement formée, c'est-à-dire que toutes ses lignes comptent le même nombre de colonnes.

matrice_dimensionner(array<string|int, mixed> $matrice) : array<string|int, mixed>
Parameters
$matrice : array<string|int, mixed>

Tableau de lignes, chaque ligne étant elle-même un tableau de valeurs

Return values
array<string|int, mixed>

Dimensions de la matrice, à savoir :

  • index rows : nombre de lignes
  • index cols : nombre de colonnes, ramené à zéro si la matrice est mal formée, ce qui permet aux fonctions appelantes d'identifier l'erreur

serie_statistiques()

Renvoie, pour une série quantitative donnée, la liste des indicateurs de position, de dispersion et de forme.

serie_statistiques(array<string|int, mixed> $serie[, bool $correction_bessel = false ]) : null|array<string|int, mixed>

L'indice de Geary n'est pas renvoyé (requiert des données autres que la série elle-même).

Parameters
$serie : array<string|int, mixed>

Tableau représentant la série

$correction_bessel : bool = false

Indique si la correction de Bessel doit être appliquée sur la variance et l'écart-type (défaut false, aucune correction)

Return values
null|array<string|int, mixed>

Liste des indicateurs statistiques (position, dispersion et forme) ou null si erreur (série vide). Chaque indicateur vaut null s'il n'est pas calculable sur la série fournie.

serie_mode()

Calcule le mode d'une série de valeurs.

serie_mode(array<string|int, mixed> $serie) : null|array<string|int, mixed>

Le mode est la valeur distincte correspondant à l’effectif le plus élevé. Il n'est pas nécessairement unique.

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|array<string|int, mixed>

Tableau des modes même si la série ne possède qu'un seul mode ou null si erreur (série vide).

serie_moyenne()

Calcule la moyenne arithmétique d'une série de valeurs.

serie_moyenne(array<string|int, mixed> $serie) : null|float

∑⟮xᵢ⟯ µ = ----- où xᵢ désigne la ième valeur de la série et n l'effectif de la série n

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|float

Valeur de la moyenne ou null si erreur (série vide).

serie_moyenne_geometrique()

Calcule la moyenne géométrique d'une série de valeurs.

serie_moyenne_geometrique(array<string|int, mixed> $serie) : null|float

La moyenne géométrique n'est définie que sur des valeurs positives ou nulles.

G = ⁿ√∏⟮xᵢ⟯ où xᵢ désigne la ième valeur de la série et n l'effectif de la série

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Tags
note

Le calcul passe par la somme des logarithmes - G = exp(∑ln⟮xᵢ⟯/n) - et non par le produit direct des valeurs qui dépasserait très vite la capacité des flottants (INF) sur des séries un peu longues.

Return values
null|float

Valeur de la moyenne ou null si erreur (série vide ou contenant une valeur négative).

serie_moyenne_harmonique()

Calcule la moyenne harmonique d'une série de valeurs.

serie_moyenne_harmonique(array<string|int, mixed> $serie) : null|float

n H = ------- où xᵢ désigne la ième valeur de la série et n l'effectif de la série ∑(1/xᵢ)

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|float

Valeur de la moyenne ou null si erreur (série vide, contenant une valeur nulle ou dont la somme des inverses est nulle).

serie_moyenne_ponderee()

Calcule la moyenne d'une série de valeurs pondérée par une liste de poids.

serie_moyenne_ponderee(array<string|int, mixed> $serie, array<string|int, mixed> $poids) : null|float

∑⟮wᵢxᵢ⟯ P = ------ où xᵢ désigne la ième valeur de la série et wᵢ le ième poids ∑⟮wᵢ⟯

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$poids : array<string|int, mixed>

Tableau des poids de même taille que la série.

Return values
null|float

Valeur de la moyenne ou null si erreur (série vide ou liste de poids invalide).

serie_mediane()

Calcule la médiane d'une série de valeurs.

serie_mediane(array<string|int, mixed> $serie) : null|float

n+1

  • si n est impair : M = --- ème valeur de la série 2 n n
  • si n est pair : M = la moitié de la somme de la - ème et de la -+1 ème valeurs de la série 2 2.
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|float

Valeur de la médiane ou null si erreur (série vide).

serie_centile()

Calcule le p-ième centile d'une série de valeurs.

serie_centile(array<string|int, mixed> $serie, float $p) : null|float

La méthode utilisée correspond au type 6 de la fonction quantile() du langage R, recommandée par le NIST. p(n+1)

  1. Le rang k est calculé de la façon suivante : k = ------ 100
  2. La valeur k est ensuite séparée en deux valeurs, sa partie entière (e) et sa partie décimale (d). Le centile est ensuite déterminé selon la règle suivante (avec xᵢ la ième valeur observée dans la série ordonnée) :
    • si e = 0 alors le centile est v₁ (la première valeur observée)
    • si e >= n alors le centile est vₙ (la dernière valeur observée)
    • sinon le centile se calcule par interpolation linéaire et est égale à : vₑ + d*(vₑ₊₁ - vₑ).
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$p : float

Le centile à calculer, non nécessairement entier (ex: 33.33 pour le premier tercile).

Tags
note

Le type 6 n'est pas le type par défaut de la fonction quantile() de R qui utilise le type 7 : les valeurs renvoyées ici peuvent donc différer de celles de R si ce dernier est appelé sans préciser type = 6.

Return values
null|float

Valeur du p-ième centile ou null si erreur (série vide)

serie_quantiles()

Calcule les quantiles d'une série de valeurs pour un ordre donné.

serie_quantiles(array<string|int, mixed> $serie, int $ordre) : null|array<string|int, mixed>

Les ordres les plus utilisés sont :

  • 2 : médiane
  • 4 : quartiles
  • 5 : quintiles
  • 10 : déciles
  • 100 : centiles.
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$ordre : int

Valeur de l'ordre

Return values
null|array<string|int, mixed>

Tableau des ($ordre-1) quantiles pour l'ordre choisi ou null si erreur (série vide).

serie_quartiles()

Calcule les quartiles d'une série de valeurs, c'est-à-dire les 3 quantiles d'ordre 4, nommés Q₁, Q₂ et Q₃.

serie_quartiles(array<string|int, mixed> $serie) : null|array<string|int, mixed>
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|array<string|int, mixed>

Tableau des 3 quartiles ou null si erreur (série vide).

serie_etendue()

Calcule l'étendue d'une série de valeurs.

serie_etendue(array<string|int, mixed> $serie) : null|float

E = max(x) - min(x) où x est la variable représentée par la série de valeurs

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|float

Valeur de l'étendu de la série ou null si erreur (série vide).

serie_interquartile()

Calcule la distance interquartile.

serie_interquartile(array<string|int, mixed> $serie) : null|float

IQ = Q₃ - Q₁

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

Return values
null|float

Distance interquartile ou null si erreur (série vide)

serie_variance()

Calcule la variance d'une série de valeurs.

serie_variance(array<string|int, mixed> $serie[, bool $correction_bessel = false ]) : null|float

Le calcul dépend du contexte choisi, à savoir, de tenir compte ou pas de la correction de Bessel pour les échantillons. Ce contexte se règle via le paramètre $correction_bessel (défaut false, aucune correction).

  ∑⟮xᵢ - μ⟯²

σ² = --------- où xᵢ désigne la ième valeur de la série, μ la moyenne arithmétique et ν les degrés de liberté ν qui coincide avec l'effectif de la série, n, ou avec n-1 (correction de Bessel)

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$correction_bessel : bool = false

Indique si la correction de Bessel doit être appliquée ou pas (défaut)

Return values
null|float

Variance (corrigée ou non) ou null si erreur (série vide ou réduite à un élément si Bessel)

serie_ecart_type()

Calcule l'écart type d'une série de valeurs.

serie_ecart_type(array<string|int, mixed> $serie[, bool $correction_bessel = false ]) : null|float

Le calcul dépend du contexte comme pour la variance.

σ = √⟮σ²⟯ où σ² désigne la variance corrigée ou non.

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$correction_bessel : bool = false

Indique si la correction de Bessel doit être appliquée ou pas (défaut)

Return values
null|float

Ecart type (corrigé ou non) ou null si erreur (série vide ou réduite à un élément si Bessel)

serie_moment()

Calcule le moment à l'origine ou centré d'ordre `p`, pour `p` supérieur à 1.

serie_moment(array<string|int, mixed> $serie, int $ordre[, null|bool $centre = true ]) : null|float
  • Moment à l'origine : ∑⟮xᵢ⟯ᴾ m'ₚ = ------- où xᵢ désigne la ième valeur de la série et p l'ordre n
  • Moment centré : ∑⟮xᵢ - µ⟯ᴾ m'ₚ = --------- où xᵢ désigne la ième valeur de la série, µ la moyenne arithmétique et p l'ordre n
Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$ordre : int

Valeur de d'ordre du moment (puissance)

$centre : null|bool = true

Indique si on veut le moment à l'origine ou le moment centré (défaut)

Tags
note

Le moment m'₁ correspond à la moyenne µ et le moment centré m₂ à la variance (non corrigée).

Return values
null|float

Moment centré ou pas d'ordre p ou null si erreur (série vide)

serie_asymetrie_fisher()

Calcule le coefficient d'asymétrie de Fisher à partir du moment centré d'ordre 3.

serie_asymetrie_fisher(array<string|int, mixed> $serie) : null|float

m₃ γ₁ = ---- où m₃ est le moment centré d'ordre 3 et σ l'écart type de la série de valeurs. σ³

L'interprétation du coefficient est le suivant:

  • γ₁ = 0 pour une distribution symétrique,
  • γ₁ > 0 pour une distribution asymétrique à gauche,
  • γ₁ < 0 pour une distribution asymétrique à droite.
Parameters
$serie : array<string|int, mixed>
Return values
null|float

serie_asymetrie_yule()

Calcule le coefficient d'asymétrie de Yule à partir des quartiles.

serie_asymetrie_yule(array<string|int, mixed> $serie) : null|float

(Q₃ + Q₁ - 2Q₂ ) Yₖ = ----------------- où Qᵢ désigne chacun des 3 quartiles. (Q₃ - Q₁)

L'interprétation est la même que pour le coefficient de Fisher sachant que -1 ≤ Yₖ ≤ 1.

Parameters
$serie : array<string|int, mixed>
Return values
null|float

serie_asymetrie_pearson()

Calcule le coefficient d'asymétrie de Pearson à partir de la médiane (asymétrie de médiane).

serie_asymetrie_pearson(array<string|int, mixed> $serie) : null|float

3(µ - M) Sₖ = -------- où µ désigne la moyenne arithmétique, M la médiane et σ l'écart type. σ

L'interprétation est la même que pour le coefficient de Fisher sachant que -3 ≤ Sₖ ≤ 3.

Parameters
$serie : array<string|int, mixed>
Return values
null|float

serie_kurtosis_pearson()

Calcule le coefficient d'aplatissement - kurtosis - de Pearson à partir du moment centré d'ordre 4.

serie_kurtosis_pearson(array<string|int, mixed> $serie) : null|float

m₄ β₂ = ---- où m₄ désigne le moment centré d'ordre 4 et σ l'écart type. σ⁴

Le coefficient β₂ >= 1 et oscille autour de 3 pour une distribution normale. C'est pourquoi on utilise souvent le coefficient de Fisher.

Parameters
$serie : array<string|int, mixed>
Return values
null|float

serie_kurtosis_fisher()

Calcule le coefficient d'aplatissement - kurtosis - de Fisher qui normalise le coefficient d'aplatissement de Pearson.

serie_kurtosis_fisher(array<string|int, mixed> $serie) : null|float

γ₂ = β₂ - 3

L'interprétation du coefficient est le suivant:

  • γ₂ = 0 kurtosis normale (mésokurtique), la distribution a une forme similaire à une distribution normale
  • γ₂ > 0 kurtosis positif (leptokurtique), la distribution est plus concentrée au centre avec des queues épaisses
  • γ₂ < 0 kurtosis négatif (platykurtique), la distribution est plus aplatie avec des queues fines
Parameters
$serie : array<string|int, mixed>
Return values
null|float

serie_autocorrelation_geary()

Calcule l'indice de Geary qui mesure l'autocorrélation spatiale qui exprime la corrélation des observations adjacentes d'un même phénomène.

serie_autocorrelation_geary(array<string|int, mixed> $serie, array<string|int, mixed> $ponderation) : null|float

(N-1) ∑ ∑wᵢⱼ⟮xᵢ - xⱼ⟯² i j C = --------------------- où N désigne le nombre de valeurs de la série x, (wᵢⱼ) la matrice de pondération spatiale 2W∑⟮xᵢ - µ⟯² et W la somme des wᵢⱼ

La valeur de l'indice de Geary s'étend de 0 à 2 :

  • = 1 : signifie qu'aucune autocorrélation spatiale n'est présente dans les mesures effectuées.
  • < 1 : signifie une autocorrélation spatiale positive (valeurs similaires sont proches les unes des autres).
  • 1 : signifie une autocorrélation spatiale négative (valeurs dissimilaires sont proches les unes des autres).

Parameters
$serie : array<string|int, mixed>

Tableau des valeurs de la série.

$ponderation : array<string|int, mixed>

Matrice de pondération spatiale

Return values
null|float

Indice ou null si erreur (série ou coordonnées vides ou incohérents, série constante ou pondération toute nulle)

Search results