Partage
  • Partager sur Facebook
  • Partager sur Twitter

Quartiles

    15 juillet 2018 à 21:12:12

    bonjour,

    (Désolé pour ce second sujet en peu de temps, mais le sujet étant autre, j'ai préféré en faire un second)

    Ici, je bloque avec les quartiles.

    J'ai bien compris que:

    • le 1er quartile est la donnée de la série qui sépare les 25 % inférieurs des données
    • le 2e quartile est la donnée de la série qui sépare la série en deux parties (médiane)
    • le 3e quartile est la donnée de la série qui sépare les 25 % supérieurs des données

    Mais quand il s'agit de les trouver ... c'est autre choses.

    J'ai diviser les listes en 4 groupes, en fonction de leurs longueurs.

    Si \(X \in 4n+3\), c'est le cas le plus facile, alors: \(Q_a=x_{an+a}\) (a est le numéros du quartile)

    Si \(X \in 4n,\), il me semble que: \(Q_a=\frac{1}{2}(x_{an}+x_{an+a})\)

    Maintenant, il reste les cas ou \(X \in 4n +1\) et \(X \in 4n+2\), et la, je suis perdu.

    J'ai bien tenté quelque chose (Je connais déjà la médiane des deux), mais je n'arrive pas à définir \(Q_1\) et \(Q_3\) dans ces deux situations.

    Enfaite, même sur papier je doute.

    Prenons le cas ou \(X = (1,2,3,4,5,6,7,8,9,10)\). Je suis dans le cas 4n+2. Je connais facilement la médiane, \(Q_2=m=\frac{1}{2}(X_5+X_6)\), ou plus généralement, \(Q_2=m=\frac{1}{2}(X_{2n+1}+X_{2n+2})\). Mais trouver \(Q_1\) et \(Q_3\) me semble plus compliqué ... Je dirais bien que \(Q_1=n+1\) et \(Q_3=3n+2\) ... Mais ça me semble étrange et surtout complètement faux.

    Tous les exemples que j'ai trouvé sur la toile ne se mouillent pas, et parlent du cas 4n+3. J'ai bien tenter de chercher sur Wikipédia, mais la je tombe sur une formule générale pour les quantile, mais ou la formule m'a l'air vachement complexe (J'ai pas compris grand chose ^^)

    Merci !

    -
    Edité par Bhasher 15 juillet 2018 à 21:15:35

    • Partager sur Facebook
    • Partager sur Twitter

    CodeWe is an open-source live code-sharing website.

      16 juillet 2018 à 0:55:13

      Si tu as Excel, tu peux faire des expériences.... ça va te guider.

      Et déjà, tu vas voir que Excel te propose une fonction quartile.inc(), et une fonction quartile.exc(), ce qui veut dire une chose : il n'y a pas de consensus sur cette fonction quartile, il y a plusieurs acceptions qui sont tout à fait cohérentes.

      Personnellement, je travaille beaucoup avec Oracle, et sous Oracle, il y a aussi 2 fonctions : percentile_cont() et percentile_disc() : cont et disc sont les abréviations pour continue et discontinue.

      A priori, percentile_cont() coïncide avec la fonction quartile.inc() d'excel. Percentile_disc() n'a pas d'équivalent dans Excel (en tout cas, je ne le connais pas). Percentile_disc() dit : le quartile, ce sera une des valeurs de la série de données, ce ne sera pas une espèce de moyenne entre 2 termes consécutifs.

      Pour percentile_cont() // quartile.inc(), comment ça marche ?

      Tu as différents nombres, en ordre croissant : a,b,c,d .... n.

      Si tu as 6 nombres par exemple, tu as a, b c d e et f ; tu as donc 5 intervalles. 

      Il faut considérer que a, ça correspond à l'indice 0, et n, à l'indice 1. Et comme on a 5 intervalles dans mon exemple, b correspond à l'indice 0.20, c correspnd à l'indice 0.40 , etc.

      Et le premier quartile, c'est le nombre qui correspond à l'indice 0.25. C'est donc un nombre quelque part entre b et c, plus proche de b que de c. Plus précisément, c'est Q1 = (3*b+c)/4.

      Graphiquement, ce sera peut-être plus clair.

      Sur l'axe des abcisses, on a des nombres qui vont de 0 à 1. Sur l'axe vertical, on a des nombres qui vont de a à n (tous les nombres de notre série de données, en ordre croissant).

      Si on a 6 nombres, on a 5 intervalles, on va donc tracer les points de coordonnées (0,a),(0.20,b),(0.40,c),(0.60,d),(0.80,e) et (1,f).

      Puis on va relier les points consécutifs par des segments de droite. 

      Pour le premier quartile, on trace la droite d'équation x=0.25, et on regarde l'ordonnée du point d'intersection entre cette droite et notre succession de segments. Et idem pour le 3ème quartile (et tu peux vérifier que ça marche aussi pour le 2ème quartile, ouf! )

      J'imagine que l'article de Wikipédia traite le cas le plus général, c'est à dire pas seulement le cas de tous les quantiles, mais aussi des tertile, des déciles, des centiles ...  Par exemple, sur une série de données, on peut vouloir chercher le quantile 0.23. C'est à dire, si on reprend mon calcul ci-dessus, qu'on va chercher le point d'indice 0.23, et non plus 0.25.

      • Partager sur Facebook
      • Partager sur Twitter
        16 juillet 2018 à 7:00:56

        Merci de ta réponse.

        Personnellement, je préféré la version Continue (comment choisir entre deux si je suis pile au millieu ?)

        Je suppose qu'il n'existe pas de formule générique prenant uniquement /(/alpha/) et une liste triée en tant que paramètres. (Ou /(/alpha/) représente l'indice, par exemple 0.25 et 0.75), ce serait trop simple.

        Ou alors il y a les formules (ils en enchaînent plusieurs), mais la, ça devient limite pour quelqu'un de mon niveau

        • Partager sur Facebook
        • Partager sur Twitter

        CodeWe is an open-source live code-sharing website.

          16 juillet 2018 à 11:32:40

          Il y a une formule générique, c'est la fonction quartile () :)

          Tentons de la reprogrammer ... comme ça, à la volée :

          procedure quantile( tab, rang_quantile ) 
          // Tab est un tableau de réels, triés en ordre croissant
          // rang_quantile est un reel, entre 0 et 1 ; en principe rang_quantile vaut 0.25 ou 0.50 ou 0.75, mais l'objectif est que ça marche pour n'importe quelle valeur.
          
          n = dimension(tab)-1
          i = partieentiere (n *rang_quantile) 
          x = n *rang_quantile - i 
          
          resultat = tab[i] + x * (tab[i+1]-tab[i])
          renvoyer resultat

          Résultat pas garanti du tout.  Mais c'est sûr, en corrigeant éventuellement 1 ou 2 bricoles, on peut la construire, cette fonction 'quantile'.

          • Partager sur Facebook
          • Partager sur Twitter
            16 juillet 2018 à 16:00:03

            Merci de ta réponse.

            J'ai une fâcheuse tendances à tout "Mathematiser", donc si j'ai bien compris:

            Si \(\alpha\) est la valeur du quantile à trouver. Donc \(\alpha \in [0,1]\),

            \(n\) le nombre d'élément dans la liste,

            \(X\) la liste,

            Et \([x]\) est la partie entière de x,

            Alors \(Q_{\alpha} = X_{[(n-1)\alpha]} + ((n-1)\alpha -[(n-1)\alpha] ) * (X_{[(n-1)\alpha]+1}-X_{[(n-1)\alpha]})\)

            Ou moins répétitif:

            \(\beta = (n-1)\alpha\)

            \(Q_{\alpha} = X_{[\beta]}+ (\beta -[\beta] ) * (X_{[\beta]+1}-X_{[\beta]})\)

            -
            Edité par Bhasher 16 juillet 2018 à 16:08:55

            • Partager sur Facebook
            • Partager sur Twitter

            CodeWe is an open-source live code-sharing website.

              16 juillet 2018 à 16:50:06

              A priori, oui, c'est ça. 

              Avec comme précision : dans le tableau X, les éléments sont numérotés de 0 à n-1, et non de 1 à n. Vérifie quand même sur quelques cas que ça marche (en particulier avec la médiane).

              L'autre petit souci,c'est si α=1. Dans ce cas, je pense que la formule va aller lire le contenu de X[n], qui n'est pas défini.

              • Partager sur Facebook
              • Partager sur Twitter
                16 juillet 2018 à 18:34:54

                Salut,

                Pour le cas \(\alpha=1\),

                Il n'y a pas de soucis (mathématiquement du moins):

                \(\beta = 1(n-1) = n-1\).

                \(\beta\) reste donc entier, \(\beta=[\beta]\).

                Du coup, la formule se simplifie en \(Q_1 = X_{\beta}\).

                Après bien sur l'algorithme lui ne gère pas ce cas ... mais il suffit de rajouter une condition.

                Pour les tests, n'étant pas chez moi, je n'ai testé que quelques cas simples, et (Pour la médiane) les testes ont été concluant avec/sans partie décimale.

                EDIT: Wikipedia présente la même méthode de calcule, simplement qu'ils ne définissent pas \(\beta\) mais définissent directement la partie entière et décimale de cette valeur.

                Second constat, ils utilisent \(\beta+1\) et \(\beta+2\) contrairement à moi. (Je ne comprend d'ailleurs pas pourquoi).

                Edit 2:

                -
                Edité par Bhasher 16 juillet 2018 à 19:36:14

                • Partager sur Facebook
                • Partager sur Twitter

                CodeWe is an open-source live code-sharing website.

                Quartiles

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown