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

Mathématiques Discussion :

Algorithme de discrétisation par quantiles


Sujet :

Mathématiques

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Algorithme de discrétisation par quantiles
    Bonjour,

    Dans le but de développer une application pour l'analyse de communications réseaux, je souhaiterai développer un algorithme qui me permet d'effectuer une discrétisation par quantiles de différentes variables aléatoires tel que le nombre de trames par heure, le nombre de paquets par trame etc ...

    La méthode sur laquelle je me base propose de diviser l'axe des axis en 13 intervalles [0,k1], [k1,k2], ..., [k12,inf] et de calculer les quantiles q5%, q10%, q15%, q20%, q25%, q30%, q40%, q50%, q60%, q70%, q80%, q90% avec k1 = q5%, k2 = q10% etc.
    Dans l'espace résultant, chaque éléments i représente le nombre de fois que la variable aléatoire possède une valeur dans l'intervalle Ki-1 à ki.

    Mon problème est que je ne comprends pas comment savoir qu'elle est la taille de l'espace qui représente mon quantile dans mon tableau de données, et donc, quel ensemble de valeurs je dois additionner et affecter au quantile.

    Merci par avance.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par fflash Voir le message
    Mon problème est que je ne comprends pas comment savoir qu'elle est la taille de l'espace qui représente mon quantile dans mon tableau de données, et donc, quel ensemble de valeurs je dois additionner et affecter au quantile.
    ll faut calculer la fonction de répartition cdf(), puis chercher les valeurs k1, k2, ... telles que cdf(k1)=5%, cdf(k2)=10%, ...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci pour votre réponse,

    après quelques recherches, il s'agit d'appliquer la fonction quantile qui est la réciproque de la fonction cdf et qui permet de trouver Ki pour qi%. L'idée serait donc de pouvoir donner en paramètre à une fonction un tableau de valeurs et le pourcentage correspondant au quantile voulu.

    J'ai trouvé un algo et plusieurs implémentations (java) de la fonction quantile.

    Algo:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    Coefficients in rational approximations.
       a(1) <- -3.969683028665376e+01
       a(2) <-  2.209460984245205e+02
       a(3) <- -2.759285104469687e+02
       a(4) <-  1.383577518672690e+02
       a(5) <- -3.066479806614716e+01
       a(6) <-  2.506628277459239e+00
     
       b(1) <- -5.447609879822406e+01
       b(2) <-  1.615858368580409e+02
       b(3) <- -1.556989798598866e+02
       b(4) <-  6.680131188771972e+01
       b(5) <- -1.328068155288572e+01
     
       c(1) <- -7.784894002430293e-03
       c(2) <- -3.223964580411365e-01
       c(3) <- -2.400758277161838e+00
       c(4) <- -2.549732539343734e+00
       c(5) <-  4.374664141464968e+00
       c(6) <-  2.938163982698783e+00
     
       d(1) <-  7.784695709041462e-03
       d(2) <-  3.224671290700398e-01
       d(3) <-  2.445134137142996e+00
       d(4) <-  3.754408661907416e+00
     
       Define break-points.
     
       p_low  <- 0.02425
       p_high <- 1 - p_low
     
       Rational approximation for lower region.
     
       if 0 < p < p_low
          q <- sqrt(-2*log(p))
          x <- (((((c(1)*q+c(2))*q+c(3))*q+c(4))*q+c(5))*q+c(6)) /
                ((((d(1)*q+d(2))*q+d(3))*q+d(4))*q+1)
       endif
     
       Rational approximation for central region.
     
       if p_low <= p <= p_high
          q <- p - 0.5
          r <- q*q
          x <- (((((a(1)*r+a(2))*r+a(3))*r+a(4))*r+a(5))*r+a(6))*q /
               (((((b(1)*r+b(2))*r+b(3))*r+b(4))*r+b(5))*r+1)
       endif
     
       Rational approximation for upper region.
     
       if p_high < p < 1
          q <- sqrt(-2*log(1-p))
          x <- -(((((c(1)*q+c(2))*q+c(3))*q+c(4))*q+c(5))*q+c(6)) /
                 ((((d(1)*q+d(2))*q+d(3))*q+d(4))*q+1)
       endif
    Implémentations :
    http://home.online.no/~pjacklam/note...m/impl/karimov

    http://home.online.no/~pjacklam/note...orm/impl/misra

    Seulement, ces implémentations ne prennent pas de tableau de valeurs mais seulement le quantile recherché. A partir de quoi peuvent t-ils donc calculer la fonction quantile?

    Pour finir, une petite illustration des données que j'ai en entrées (figure1) et de ce que je souhaiterai avoir en sortie (figure2).
    Images attachées Images attachées   

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par fflash Voir le message
    après quelques recherches, il s'agit d'appliquer la fonction quantile qui est la réciproque de la fonction cdf et qui permet de trouver Ki pour qi%. L'idée serait donc de pouvoir donner en paramètre à une fonction un tableau de valeurs et le pourcentage correspondant au quantile voulu.
    Tu peux trier ton tableau de valeurs tab[size], et prendre les quantiles:

    k1 = tab[size*5%]
    k2 = tab[size*10%]
    ...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Désolé pour le temps de réponse, week-end prolongé sans internet ...

    J'ai bien essayé de calculer les quantiles comme proposé, seulement je n'arrive pas a retrouver les bon résultats suivant la figure 2.

    Si par exemple j'ai les quantiles suivants :
    [0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5] calculés à partir de la figure 1, je ne retrouve pas la valeur 2 pour le quantile 0.25 ni 22 pour le quantile 0.5 et 0 pour les autres comme le montre pourtant la figure 2.

    Quel est le lien entre les deux figures ?
    Images attachées Images attachées   

Discussions similaires

  1. algorithme de segmentation par projection
    Par modafine dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 08/12/2010, 23h22
  2. Réponses: 2
    Dernier message: 17/07/2009, 17h28
  3. algorithme de tri par comptage
    Par charrynsasi dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 10/10/2008, 13h20
  4. algorithme de dénombrement par formules [DEBUTANT]
    Par jacques64 dans le forum Excel
    Réponses: 1
    Dernier message: 13/06/2007, 13h45
  5. Algorithme d'optimisation par colonie de fourmis
    Par floopy dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 08/11/2006, 15h03

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