[Excel] Médiane à deux dimensions
parly
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
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
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 ?
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
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:
- Médiane pondérée excel
- Moyenne pondérée - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
4 réponses
Bonjour,
une proposition avec une fonction personnalisée en vba :
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
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
Dans ton exemple, quelle serait la médiane ?
21,7 ou 2,33 ?
21,7 ou 2,33 ?
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?
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?
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.
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.
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
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
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
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