[Excel] Médiane à deux dimensions

parly -  
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

La fonction mediane permet de calculer la valeur centrale d'une série (50% au dessus de la médiane, 50% au dessous).
Si j'ai un tableau avec les âges de personnes, c'est facile
Age
10
10
25
25
25
25
30

La fonction =mediane (A2:A9) donne 25, ce qui est parfait.

Mais est-ce que quelqu'un peut m'indiquer comment on peut calculer la médiane dans un tableau à deux dimensions ?
Age nb d'individus
10  2
25  4
30  1


Bien entendu, ce n'est pas pour faire des médianes sur 7 individus que je vous pose la question, mais sur des tableaux avec des milliers d'individus.

Merci de votre réponse


A voir également:

4 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

une proposition avec une fonction personnalisée en vba :
Function medianeMat(plage As Range) As Double
    Dim tablo, nbIndividu, nb, cpt, cpt2 As Boolean
    Dim I%, J%, K%, tmp
    tablo = plage
    ' trier tablo, à désactiver si tablo déjà trié
    For I = LBound(tablo) To UBound(tablo)
        J = I
        For K = J + 1 To UBound(tablo)
            If tablo(K, 1) <= tablo(J, 1) Then J = K
        Next K
        If I <> J Then
            tmp = tablo(J, 1): tablo(J, 1) = tablo(I, 1): tablo(I, 1) = tmp
            tmp = tablo(J, 2): tablo(J, 2) = tablo(I, 2): tablo(I, 2) = tmp
        End If
    Next I
    ' médiane
    For I% = 1 To UBound(tablo)
        nbIndividu = nbIndividu + tablo(I%, 2)
    Next I%
        While nb < nbIndividu / 2
            cpt = cpt + 1
            nb = nb + tablo(cpt, 2)
        Wend
        cpt2 = nb = nbIndividu / 2
    If nbIndividu Mod 2 Then
        ' impair
        medianeMat = tablo(cpt, 1)
    Else
        'pair
        medianeMat = IIf(cpt2, (tablo(cpt, 1) + tablo(cpt + 1, 1)) / 2, tablo(cpt, 1))
    End If
End Function


J'ai testé, ça parait correct mais contrôle bien sur plusieurs exemples car j'ai les yeux qui se croisent un peu...
En particulier tester les cas pairs et impairs, avec la médiane au milieu d'un paquet ou à cheval sur 2 paquets.
Les données peuvent être non triées, si elles le sont tu peux supprimer le tri pour gagner qcq microsecondes.
https://www.cjoint.com/?ALhknQd3I9T

eric
1
Raymond PENTIER Messages postés 58990 Date d'inscription   Statut Contributeur Dernière intervention   17 354
 
Dans ton exemple, quelle serait la médiane ?
21,7 ou 2,33 ?
0
parly
 
Bonjour Raymond,

Je ne parle pas de moyenne, mais de médiane qui est une fonction mathématique un peu différente.

Mais merci pour la réponse
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour tout le monde,
Si j'ai bien compris, et afin d'éclairer tout le monde sur le sujet en cours :
2 cas :
- La médiane d'une série composée d'un nombre impair de valeurs est la valeur située au milieu de cette série.
exemples :
6, 7, 8, 19, 3, 15, 2. Médiane = 19
1, 2, 3, 4, 5. Médiane = 3
- La médiane d'une série composée d'un nombre pair de valeurs est la moyenne des deux valeurs centrales.
exemples :
1, 2, 4, 18, 20, 56, 13, 27. Médiane = 19
1, 2, 3, 4. Médiane = 2,5

Donc les deux exemples donnés par parly plus haut sont identiques ...

C'est bien cela?
0
parly
 
La médiane se calcule sur une suite de valeurs ordonnées. C'est effectivement la valeur qui est au milieu de la suite ordonnée ou la demi-somme des valeurs centrales.
C'est une opération mathématique qui est intéressante car elle filtre les valeurs extrêmes contrairement à la moyenne. Par exemple, si vous avez 10 personnes qui ne touchent rien, 1000 personnes qui gagnent le SMIC et 50 qui gagnent 1 million par mois, vous aurez une valeur moyenne à 100.000 euros par mois (je dis n'importe quoi), mais une valeur médiane au SMIC. Les deux indicateurs mis à côté donne des informations complémentaires : le salaire moyen est de 100.000 euros, mais 50% des gens touchent le SMIC ou moins.

Excel sait très bien calculer cette valeur médiane quand on a une suite de valeurs du type 10 10 25 25 25 25 30.
Mais ce que j'ai réellement, ce sont des valeurs de recensements du type 19285 individus de 19 ans, 32584 individus de 20 ans, 8564 individus de 21 ans, ...
Si je pouvais écrire dans Excel la valeur 19 dans 19285 cases consécutives, puis la valeur 20 dans 32584 cases consécutives, ... je pourrais utiliser la fonction =mediane d'Excel.
Malheureusement, vous comprendez bien que ce n'est pas possible.

Donc ma question est : comment calculer cette valeur médiane lorsque je ne peux pas écrire explicitement toutes les valeurs de la suite. Lorsque je ne peux pas écrire 10 10 25 25 25 25 30, mais lorsque j'écris "j"ai 2 valeurs 10, j'ai 4 valeurs 25, j'ai une valeur 30".

C'est le sens de mon tableau dans ma question initiale.
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
Bonjour
peut être avec cette matricielle à entrer en maintenant les touches ctrl et alt en enfoncées:
=MEDIANE(champ 1*champ 2)
elle doit se retrouver entre accolades dans la barre de formule, après la manip
ctrl+alt+enter
crdlmnt
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut Vaucluse,
Non à priori cela ne fonctionne pas. Ta formule renvoie 30 dans l'exemple de parly au lieu de 25...
0
parly
 
Bonjour,

Merci pour votre réponse, je ne vois pas ce que vous voulez dire avec cette accolade. Avez-vous un dictaticiel avec un exemple ?
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
erreur de ma part, il s'agit de ctrl+shift=enter et non pas alt!!
il n'y a rien à faire pour l"'accolade, simplement écrire la, formule normalement et maintenir les touches ctrl et shift enfoncées en effectuant l'entrée.
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
bonjour

une tentative (très laborieuse) sans macro

https://www.cjoint.com/?ALhqmhYFO6x

RQ1. les valeurs doivent être triées par ordre croissant
RQ2. il faut ajouter la colonne des effectifs cumulés croissants
RQ3. du coup, la formule est elle bien utile ?
RQ4. il doit y avoir plus simple
RQ5. à tester bien sûr !

bonne suite
0