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

PL/SQL Oracle Discussion :

Courbe de lissage


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Etudiant
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 48
    Points
    48
    Par défaut Courbe de lissage
    Bonjour la communauté,

    J'aimerais effectuer sur une série de valeurs, un calcul qui me retourne la valeur autour de laquelle les valeurs de la série sont le plus étalées.
    Je m'explique:
    Supposons que mes calculs portent sur la série ci-dessous:
    On voit que les éléments de la série sont majoritairement proches de 5, et la valeur 5000 apparait un peu comme polluante.
    Alors j'aimerais que mes calculs me renvoient une valeur proche de 5.

    Je ne sais pas exactement comment nommer cela, mais je ne trouve pas la fonction statistique qui me permette d'obtenir mon résultat, ni exactement comment le calculer.

    Alors si quelqu'un peut m'aider ...

    Merci d'avance!

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Pour votre exemple, vous pouvez filtrer les lignes dont la valeur n'est pas comprise dans l'intervalle moyenne + ou - ecart-type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT  
    	AVG(num) as _avg
    FROM	LaTable
    WHERE num BETWEEN (
    		SELECT AVG(num) - STDEV(num) FROM LaTable)
    		AND(
    		SELECT AVG(num) + STDEV(num) FROM LaTable)
    Avec votre série, on obtient 5

    Mais cependant, cette méthode aura ses limites pour certaines séries (si on ajoute un 1000 à la série que vous avez proposée, on obtient 147...).

    Peut-etre devriez vous expliquer un peu le contexte pour une solution plus adaptée

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 412
    Points : 807
    Points
    807
    Par défaut
    Je trouve toujours ça rigolo d'enlever les résultats qui gênent.

    Sinon: Vous pourriez regarder avec ntile. Ntile ça vous permet de faire la médiane[1], mais à autre chose que 50%.
    D'une manière plus complète, moi je faisais un truc plus ou moins similaire de la manière suivante:
    Sans enlever aucune valeur j'affichait la moyenne, la déviation standard, et Ntile à 87%. [2] Ainsi, l'utilisateur pouvait voir en un coup d'oeil si la moyenne avait du sens, la répartition, et éventuellement en fonction de ça si il n'y avait pas une ou deux grande valeur qui "pourrissaient" les autres.

    Ou alors, en vous basant là-dessus, vous pouvez de vous même enlever les valeurs 5% les plus grande, ou celles à plus de 3 déviations standards.

    Mais le plus simple pour le cerveau humain, ça reste un graphique baton.

    [1]: La médiane c'est pas la moyenne. C'est 50% des gens au dessus de cette valeur, et 50% en dessous.
    [2]: Je prenais 87% parce que j'avais 14 valeurs en tout. Ainsi ça m'affichait la valeur de la 12ème, laissant un tout petit peu de marge pour une erreur.

  4. #4
    Membre du Club
    Profil pro
    Etudiant
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    Merci déjà pour ces retours qui vont certainement aider à résoudre mon problème.

    S'il faut expliquer plus clairement mon problème, je dirais ceci:
    J'ai un ensemble de vendeurs et je veux déterminer sur un mois, le top 100 des vendeurs avec un CA important, mais surtout avec les meilleures moyennes de ventes quotidiennes, i.e. sur 30 jours, si un vendeur fait 4000$ de vente en moyenne sur 25 jours et disons 25000$ et voire plus en moyenne sur les autres jours, je ne voudrais considérer que les 4000$ comme sa moyenne quotidienne en estimant que les CA réalisés les autres jours ne représentent pas vraiment le comportement habituel de son marché.

    Voila en bref ce que je veux réaliser, connaissant le nombre et le montant des ventes quotidiennes de chaque vendeur.

Discussions similaires

  1. [Fortran 77][Débutant] Méthode de lissage de courbe
    Par fp_81-69 dans le forum Fortran
    Réponses: 9
    Dernier message: 29/06/2007, 15h17
  2. Lissage de courbe
    Par Tchaill39 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 17/09/2006, 09h53
  3. lissage de courbe
    Par athomaspascal dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 03/09/2006, 18h44
  4. Réponses: 4
    Dernier message: 24/11/2005, 19h51

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