IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Deski Discussion :

Calcul de médiane


Sujet :

Deski

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Calcul de médiane
    Bonjour,

    Je cherche à calculer dans un rapport de synthèse les médianes d'une série statistiques selon différents critères.

    Ma série statistique est construite dans BO à partir de 2 fournisseurs de données qui ont une clef commune (=le n° de contrat) et qui me fournissent les éléments dont j'ai besoin.

    Il faut préciser que :
    - mes 2 fournisseurs ne me retournent pas les même n° de contrat (les univers ne le permettent pas) et, seuls les contrats apparaissant dans le 1° fournisseur m'intéressent.
    - les critère1 et critère2 sont présents dans le 1° fournisseur
    - les MT sont présents dans le 2° fournisseurs

    Ma série se présente ainsi (dans un rapport DETAIL) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TEST | n° ctra | critère1 | critère2 | MT
    La variable TEST me permet de poser un filtre pour zoomer uniquement sur les n° de contrat qui m'intéressent.

    Ce que je souhaite obtenir en synthèse, se présente ainsi (dans un rapport SYNTHESE) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TEST | critère 1 | critère 2 | somme MT | moyenne MT | médiane MT
    Les calculs de somme et moyenne sont OK.

    Ma difficulté est d'obtenir la médiane dans le rapport de synthèse :
    * le calcul de la médiane sur le rapport DETAIL est bon avec la formule médiane() et j'obtiens bien les données voulues en posant des filtres sur critère1 et critère2
    * le calcul de la médiane est faux : BO me renvoie un chiffre que je ne comprends pas.


    J'ai essayé d'introduire dans le calcul de la médiane() le contexte qui me paraissait logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    médiane(MT) dans (TEST, critère1, critère2)
    puis différents contexte au hasard mais sans succès...

    Avez vous une idée ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    Dans ton exemple, tu pose un contexte d'affichage.

    As-tu essayé avec contexte de calcul ET d'affichage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =médiane([toto] dans (TEST, critère1, critère2)) dans Test
    Par exemple.

    Je ne garantis pas que ces contextes ci-dessus soient les bons mais pour le calcul des agrégations différentes de nombre et somme, il faut souvent se préoccuper des deux contextes.

    Cordialement,

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Je comprends le principe mais ne parviens pas à l'appliquer (il me manque quelques subtilités sans doute....).

    La syntaxe que tu me propose n'est effectivement pas la bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =médiane(MT dans (TEST, critère1, critère2)) dans TEST
    BO me renvoie la même valeur sur toutes les lignes de mon tableau de synthèse

    J'ai également essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =médiane(MT dans (TEST, critère1, critère2)) dans (critère1, critère2)
    Ce contexte me donne des résultats faux que je ne parviens pas à expliquer.

    Et puis aussi d'autres contextes plus aléatoires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =médiane(MT dans (critère1, critère2)) dans TEST
    Sans surprise, j'ai obtenu une valeur identique sur toutes les lignes du tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =médiane(MT dans (TEST)) dans (critère1, critère2)
    j'ai obtenu un résultat similaire : une autre valeur dans toutes les lignes.

    D'autres idées ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Peux-tu poster une miniature du rapport contenant les médianes qui fonctionnent après l'avoir mis en mode Structure s'il te plaît. Les valeurs ne m'intéressent pas dans ce cas.

    S'agissant des contextes je ne promets jamais d'avoir la solution avant d'avoir expérimenté un peu.

    Cordialement,

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci pour tes réponses dira_

    S'agissant des contextes je ne promets jamais d'avoir la solution avant d'avoir expérimenté un peu.
    Je te rejoins sur ce point... pas toujours facile d'obtenir le résultat escompté.


    Ci-joint, un aperçu (en mode structure) de ma série stats qui me permet d'avoir le calcul de la médiane juste (dans la cellule jaune).

    les n° de contrat sont des n° de compte
    mes critères1 et critère2 sont les colonnes nommées "DA-TRANCHE"
    mon montant est : "FDT-MT_MOY_MENS_par_compte"

    Pour obtenir mon rapport de synthèse : je supprime la colonne n° de compte et ajoute les somme et moyenne dans les colonne du tableau obtenu.
    Images attachées Images attachées  

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Si le rapport où ta médiane fonctionne, ne contient pas de section ni de rupture.

    et si <DATEST>, <FDPS>,<Tranche 1>, <Tranche 2> sont des dimensions, alors la médiane qui apparaît en pied de bloc (non filtré) a le contexte suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Médiane(MT dans(<DATEST>, <FDPS>,<Tranche 1>, <Tranche 2>) dans Rapport
    Si ton rapport de détail est inclus dans une section, la dimension du maître de section doit être incluse dans les contextes de Calcul ET d'affichage.

    Dans ton tableau de récap, si tu veux obtenir la médiane de tous les <FDPS> pour chaque ensemble de critères
    <DATEST>,<Tranche 1>, <Tranche 2> qui correspond à une ligne d'affichage,

    alors la formule est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Médiane(MT dans(<DATEST>, <FDPS>,<Tranche 1>, <Tranche 2>)
    Il n'est pas nécessaire de redéfinir le contexte d'affichage car à cet endroit là (corps du tableau) c'est déjà <DATEST>,<Tranche 1>, <Tranche 2>.

    Ai-je bien compris ce que tu veux faire ?
    Cordialement

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Tu as bien compris ce que je veux.

    J'ai essayé ce que tu me dis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Médiane(MT dans(<DATEST>, <FDPS>,<Tranche 1>, <Tranche 2>)
    mais le résultat du calcul de la médiane dans ma synthèse est faux...

    Pour info, si je demande à BO d'évaluer la formule de médiane dans son contexte, il me met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =médiane(MT) dans Rappport
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <s>=Médiane(MT dans(<DATEST>, <FDPS>,<Tranche 1>, <Tranche 2>) dans Rapport</s>
    comme tu le suggères.

    Pas facile ces contextes.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Certes, lorsque tu visualises le contexte en survolant la zone de totalisation de ton rapport de détail, il ne te met pas le contexte d'affichage mais si tu saisis la formule que je t'ai donnée dans cette zone, il devrait te donner le résultat juste.

    Es-tu d'accord avec le tableau qui suit (fait sur un tableur) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    CTRA Crit   Valeur 
    1       A       57 
    1       B       66 
    1       C       75 
    2       A       83
    2       B       89
    2       C       95
    3       A       55
    3       B       58 
     
    Médiane totale = 70,5
     
    Crit    Mediane par Crit
    A       57
    B       66
    C       85
    Edit : J'ai modifié le code pour correspondre mieux au fonctionnement de BO.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    J'ai pu tester dans BO les données du post précédent que j'avais faites avec un tableur.

    J'obtiens le même calcul de médiane dans le tableau de récap avec la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =Médiane(<Valeur> dans (<CTRA>, <Crit>)
    Si on transpose dans ton jeu de données, cette formule est celle que je t'ai communiquée précédemment.

    Maintenant, en regardant ton indicateur, je vois qu'il s'agit d'une moyenne.

    Il est possible que le résultat soit également faussé par le calcul de cette moyenne (qui utilise aussi les deux contextes pour s'évaluer).

    Pour essayer d'objectiver la validité de la moyenne, Je proposerais d'ajouter deux colonnes à ton tableau global.

    Dans la première tu colles la formule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =max(MT dans(<DATEST>, <FDPS>,<Tranche 1>, <Tranche 2>))
    dans la deuxième tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =min(MT dans(<DATEST>, <FDPS>,<Tranche 1>, <Tranche 2>))
    Si tu n'y retrouves pas les mêmes valeurs que le maximum et minimum de ton jeu de détail, il va falloir ajuster le calcul de la moyenne.

    Si tu y retrouves les mêmes valeurs, alors la moyenne ne devrait pas être en cause. Dans ce cas, je t'avoue que sans données complémentaires, je ne sais plus trop où chercher.

    Cordialement.

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Citation Envoyé par dlra_ Voir le message
    Es-tu d'accord avec le tableau qui suit (fait sur un tableur) ?
    Oui, je suis d'accord.
    Je sais ce qu'est une médiane
    et je me sers d'Excel pour (in)valider les résultats de BO.

    Citation Envoyé par dlra_ Voir le message
    Il est possible que le résultat soit également faussé par le calcul de cette moyenne
    C'est probable... Pour essayer d'avancer, je vais travailler sur le montant "brut". Je verrai plus tard pour le calcul de moyenne.

    Ton idée de calculer le Min. et le Max. est intéressante.

    Intéressante mais surtout révélatrice : BO se trompe dans les calculs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MA =max.(MT dans(<DATEST>, <FDPS>,<Tranche 1>, <Tranche 2>))
    MI =min.(MT dans(<DATEST>, <FDPS>,<Tranche 1>, <Tranche 2>))
    Il me donne la somme correspondante, je me retrouve donc avec mon tableau de synthèse pour chaque ligne :
    Somme = Min = Max = Mediane (avec somme juste...)


    Autre remarque :
    Si dans mon rapport détail, je créé des ruptures et intègre mes calculs de Min., Max., Médiane il me sort un résultat faux (correspondant à mon tableau de synthèse) au niveau de chque rupture.
    Mais, le résultat du même calcul est juste (lorsque je pose les filtres correspondant) en bas du tableau = dans la zone de total.


    A mon avis, BO ne sait pas faire de calculs de statistiques descriptives (min, max, mediane) lorsqu'on croise 2 fournisseurs de données.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Au fil de la discussion l'aspect fournisseurs de données multiples m'a échappé.

    Deux pistes :

    Si on a deux fournisseurs de données synchronisés (A / B).
    Le fournisseur A contient les dimensions Département / Ville et l'indicateur Nb Habitants.
    Le fournisseur B contient les dimensions Pays / Région/ Département/Ville.
    On a une hiérarchie 1 pays, plusieurs régions / 1 région, plusieurs départements ...
    On veut le NB habitants par région. BO ne sait pas faire directement. Pour obtenir le résultat il faut le forcer à explorer les dimensions liées avec la fonction MultiCube(). Peut être cela pourrait-il améliorer tes résultats.


    Si tu n'arrives pas à avoir tes résultats avec deux fournisseurs de données et qu'il proviennent tous les deux du même univers ou, à tout le moins, qu'ils s'appuient sur la même base de données, il est probablement possible de modifier le SQL sous-jacent pour n'avoir qu'une seule requête. Plus de synchronisation, plus d'inquiétude à ce sujet.

    Cordialement,

    PS : Il est même fort probable que tu sois meilleur que moi en stats, mais je voulais toutefois vérifier qu'on parlait de la même chose. On ne sait jamais

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    D'autres obligations m'ont éloignées de ce sujet... J'y reviens.

    Citation Envoyé par dlra_ Voir le message
    Le fournisseur A contient les dimensions Département / Ville et l'indicateur Nb Habitants.
    Le fournisseur B contient les dimensions Pays / Région/ Département/Ville.
    On a une hiérarchie 1 pays, plusieurs régions / 1 région, plusieurs départements ...
    On veut le NB habitants par région. BO ne sait pas faire directement. Pour obtenir le résultat il faut le forcer à explorer les dimensions liées avec la fonction MultiCube(). Peut être cela pourrait-il améliorer tes résultats.
    Le cas est un peu différent car les hiérarchies sont moins nettes :
    Fournisseur A : Ville / Région / NB Habitant
    Fournisseur B : Ville / 1° Parti politique / 1° Secteur éco
    Résultat espéré : Parti politique / Secteur éco / Région / Med(NB Habitant)

    La fonction Multicube() est intéressante (je ne la connaissais pas) mais ne fonctionne pas pour le calcul de médiane (= #ERREUR) alors que le calcul de la somme est OK.

    Pour essayer d'avancer, les formules de Min. et Max. renvoient des résultats faux également.

    Citation Envoyé par dlra_ Voir le message
    Si tu n'arrives pas à avoir tes résultats avec deux fournisseurs de données et qu'il proviennent tous les deux du même univers ou, à tout le moins, qu'ils s'appuient sur la même base de données, il est probablement possible de modifier le SQL sous-jacent pour n'avoir qu'une seule requête. Plus de synchronisation, plus d'inquiétude à ce sujet.
    Je m'appuie sur 2 univers bien distincts.
    Et il m'est impossible de modifier le SQL... J'aimerai bien mais cette solution est exclue, je ne suis pas administrateur BO et je n'ai pas les moyens de faire une demande pour avoir ce type de droits.

    Je suis vraiment sec sur le sujet...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    Si ta requête
    Fournisseur B : Ville / 1° Parti politique / 1° Secteur éco
    ne te ramène qu'une ligne par ville, on va peut être y arriver. Sinon, il va falloir la trafiquer jusqu'à n'avoir qu'une ligne par ville.

    Question subsidiaire : Combien de villes dans ton jeu de données ?

    Cordialement,

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par dlra_ Voir le message
    Question subsidiaire : Combien de villes dans ton jeu de données ?
    17000 lignes = 17000 villes
    Par contre, dans mon Fournisseur B : 58000 villes dont seulement 5000 concernés par le calcul de la médiane.

    • L'opérateur "Dans liste" & "Sélectionner les résultats de la requête" disponible dans l'éditeur de requête BO n'est pas fonctionnel dans ce cas.
    • L'opérateur "Dans liste" & Sous-requête n'est pas possible puisque mes données ne proviennent pas toute du même univers .

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    • L'opérateur "Dans liste" & "Sélectionner les résultats de la requête" disponible dans l'éditeur de requête BO n'est pas fonctionnel dans ce cas.
    • L'opérateur "Dans liste" & Sous-requête n'est pas possible puisque mes données ne proviennent pas toute du même univers .
    Dommage mais on pouvait toujours essayer.

    T'est-il possible de passer un mini jeu de test que je puisse bidouiller à mes heures perdues. En remplaçant les villes par des prénoms, les partis politiques par des fleurs et les secteurs d'activité par des peintres si tu as des problèmes de confidentialité.

    Cordialement,

Discussions similaires

  1. Calculer une médiane
    Par Au pays des stats dans le forum SAS STAT
    Réponses: 9
    Dernier message: 18/05/2012, 13h22
  2. Arbre ORB et calcul de médiane
    Par Heimdall dans le forum Programmation parallèle, calcul scientifique et de haute performance (HPC)
    Réponses: 0
    Dernier message: 16/01/2012, 23h30
  3. [AC-2000] Erreur "ByRef" pour un calcul de Médiane
    Par Cantalou dans le forum VBA Access
    Réponses: 16
    Dernier message: 24/11/2009, 12h47
  4. Stat calculer : Quartile ? Médiane ? ...
    Par Beamish dans le forum Access
    Réponses: 8
    Dernier message: 01/12/2005, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo