Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

A la recherche d'un test statistique



  1. #1
    Evil.Saien

    A la recherche d'un test statistique


    ------

    Salut tout le monde,

    J'ai une question un peu simplette, mais pas moyen de mettre la main sur un test comme je le souhaite. Voici ce que j'aimerais trouver.

    Je possede une suite de nombre, a chacun d'eux est attribue une classe. Par exemple:

    1.2563 ---> a
    1.96563 ---> a
    2.01244 ---> b
    2.568 ---> a
    5.3257 ---> a
    5.9623 ---> a
    6.245 ---> a
    7.0231 ---> b
    8.23564 ---> b
    9.2354 ---> b
    10.58 ---> b
    12.36 ---> b
    15.364 ---> b

    La question est: comment determiner intelligemment une valeur S separant les donnees en 2 classes: celles ou il y a beaucoup de a (x < S), celle ou c'est surtout des b (x > S)... Je precise que les donnees que j'ai vraiment sont plus longues et qu'il est moins evident de trancher que dans ce cas la.

    Voila !!

    Merci beaucoup pour votre aide,

    ++

    -----
    Mon psychiatre, pour quinze mille francs, il m'a débarrassé de ce que j'avais : quinze mille francs

  2. Publicité
  3. #2
    manup

    Re : A la recherche d'un test statistique

    Si l'objectif est juste de discriminer les données selon leur valeur et que tu fais pas du temps réel, je pense pas, c'est évident: une boucle de pré traitement, tu captes le min et le max, moyenne = min plus max sur 2 ou alors le 3/4 de la valeur max enfin le critère que tu veux et reboucle.
    Si l'objectif est d'avoir final le même nombre de données dans a que dans b, la encore c'est facile même si c'est un peu plus long : tu classe les données du min au max ou du max au min selon, et tu balance la moitiée du tableau dans l'un (a) et l'autre dans l'autre (b). gros du boulot : écrire l'algorithme du "tri par bulle", pas franchement dur qui consiste en 3 boucles, mais je viens de te donner la réponse.
    Dernière modification par manup ; 20/05/2006 à 03h55.

  4. #3
    fderwelt

    Re : A la recherche d'un test statistique

    Bonjour,

    Aaargghhh. Rien ne dit que les deux classes correspondent à un seuil (encore que, au vu des données, c'est probable).

    Et, de grâce: si vous ne connaissez pas le tri par bulle, ne cherchez pas à en savoir plus. Un bon vieux ShellSort ou HeapSort est aussi facile à programmer, mais tellement plus efficace (en n log n au lieu de n², on sent tout de suite la différence).

    -- françois

    P.S. Pour le seuil oki, j'avais lu le post initial un peu trop vite. Désolé.
    Les optimistes croient que ce monde est le meilleur possible. Les pessimistes savent que c'est vrai.

  5. #4
    manup

    Re : A la recherche d'un test statistique

    Merci beaucoup François, car je ne connaissais pas ces algorithmes, si biensûr les fonctions sort() des softs mais elles sont bien sûr opaque en code source et donc en méthode. Celles ci sont libres apparemment.
    Quelle est la base du raisonnement pour établir un calul en n log n plutôt qu'en n² ? c'est quoi un algo mal foutu en n² ?
    Dernière modification par manup ; 20/05/2006 à 12h32.

  6. #5
    fderwelt

    Re : A la recherche d'un test statistique

    Citation Envoyé par manup
    Merci beaucoup François, car je ne connaissais pas ces algorithmes, si biensûr les fonctions sort() des softs mais elles sont bien sûr opaque en code source et donc en méthode. Celles ci sont libres apparemment.
    Quelle est la base du raisonnement pour établir un calul en n log n plutôt qu'en n² ? c'est quoi un algo mal foutu en n² ?
    Bonjour,

    Pas de quoi me remercier. Tu as n éléments à trier. En étant bourrin, tu dois comparer chacun des n aux (n-1) autres. Et tu oublies à chaque fois l'information obtenue à chaque comparaison. Si tu procèdes par dichotomie, tu coupes à chaque fois ton ensemble en deux, d'où le n log n, et même n log2 n.

    Cela dit, HeapSort est une implémentation par arbre binaire du principe de dichotomie. ShellSort est un truc immoral: un BubbleSort, qui joue ouvertement sur l'hypothèse que les données "naturelles" ne sont pas équidistribuées.

    Enfin, pour la mesure de complexité: si tu as 1000 chiiffres à trier, un algorithme en n² va te faire faire environ un million de comparaisons/échanges. Un algorithme en n log n, environ 7000. Si tu as un million de données, tu passes de 10^20 à 20 millions. Pas photo?

    Et aussi: les sort() de bibliothèque sont le plus souvent des HeapSort, dans le pire des cas des QuickSort. En tout état de cause, on ne fait jamais un tri sans hypothèse sérieuse sur la distribution initiale.

    -- françois
    Les optimistes croient que ce monde est le meilleur possible. Les pessimistes savent que c'est vrai.

  7. A voir en vidéo sur Futura
  8. #6
    fderwelt

    Re : A la recherche d'un test statistique

    Rebonjour,

    J'en rajoute une couche: ma citation sur BubbleSort vient de "Numerical Recipes". Si je me souviens bien, www.nr.com, ou peut-être .org. Pas le plus terrible, mais très bien pour les basiques.

    -- françois
    Les optimistes croient que ce monde est le meilleur possible. Les pessimistes savent que c'est vrai.

  9. Publicité
  10. #7
    Evil.Saien

    Re : A la recherche d'un test statistique

    Salut,

    Merci pour vos réponses.

    Je connaissais ces tris.

    En fait, pour être plus précis, il est très probable qu'un simple seuil puisse séparer ces 2 classes avec éventuellement quelques valeurs males placées de part et d'autre. Dans l'éxemple, on aurait tendance à dire S=6.245, mais il me semble qu'aucun des algo ne donneraient cette solution...

    Merci encore,

    ++
    Mon psychiatre, pour quinze mille francs, il m'a débarrassé de ce que j'avais : quinze mille francs

  11. #8
    Sylvestre

    Re : A la recherche d'un test statistique

    Salut,

    Je te conseille de regarder ce que l'on appelle le test de Gini, cela devrait t'aider.
    http://en.wikipedia.org/wiki/Gini_coefficient

    Cordialement

  12. #9
    manup

    Re : A la recherche d'un test statistique

    Salut,
    pourrais tu nous m'en dire un peu plus sur la contexte de ton programme parce que je ne comprend pas en quoi une valeur peut être "mal" placée au demeurant.
    Si on constate que les valeurs correspondent à une loi de distribution, alors on peut toujours calculer les différents moments associé à cette loi mais c'est du cas par cas.

  13. #10
    Evil.Saien

    Re : A la recherche d'un test statistique

    Salut,

    En fait le probleme est le suivant: j'ai un capteur qui sert a mesurer la presence ou non d'une particule. Dans mon exemple, a correspond à "non-vue", b à "vue". Le nombre associé est le volume de la particule.

    Ainsi, j'aimerais déterminer automatiquement un seuil S tels que on va appeler le particules dont le volume est inférieur à S "petites particules" (c'est-à-dire forte chance de ne pas être vue), et celles dont le volume est au-dessus de S "grande particules".

    J'appelle valeurs males placées les mesures contradictoires par rapport a S (V<S mais détectée).

    J'ai environ 300 mesures, il est difficile de décider manuellement mais il semblerait quand même que la situation soit proche de mon petit exemple.

    Ma question est de savoir si à votre connaissance il éxiste un test automatique pour classifier en fonction du volume "petite particule" ou "grande particule".

    Merci bien

    ++
    Mon psychiatre, pour quinze mille francs, il m'a débarrassé de ce que j'avais : quinze mille francs

  14. #11
    camaron

    Re : A la recherche d'un test statistique

    Bonjour,

    Désolé si je suis trop basique mais je n'ai aucune notion sur les experimentations concernant les particules.

    Cependant si les valeurs trouvées correspondent à des distributions normales, ne peut on pas simplement utiliser un test de student pour savoir si les deux classes sont séparées. Et dans ce cas pouvoir faire une estimation de cet ecart. La valeur S etant ensuite calculée au lieu de croisement des deux courbes de répartition théorique.

    en recherchant donc la valeur S qui correspond à distrib(a)-distrib(b)=0 .

  15. #12
    manup

    Re : A la recherche d'un test statistique

    Salut,
    A la fin de ton tirage (expérience), tu rapportes un nombre N total de particules et un évènement "particule détectée".
    Une statistique existe donc désormais mais tu ne peux pas l'affûbler d'un autre critère statistique qui est issu d'une loi de probabilité dont tu ne dispose pas.
    L'évènement "particule détectée" est indépendant de N (de la même façon que l'on dit que la pièce qui retombe sur pile ou face le fait de la même façon au bout du Nieme lancer que du premier) en revanche, il dépend du "volume de LA particule".

    Il faudrait donc créer le tirage qui associe l'évènement "particule détectée" au "volume de LA particule" (que je renomme comme je vois venir "Ensemble Elementaire de Volumes de Particules") et qui te permettrait de rajouter une colonne au tableau.
    Lorsqu'une des N lignes du tableau ou l'évènement "particule détecté" existe, il faudrait se reporter à la probabilité qu'a une particule du même groupe de volume d'être détectée pour juger si la detection a été réellement abusive ou non et changer sa classe.

    Pour obtenir cette probabilité, il faut effectuer un grand nombe de campagne de mesures supplémentaire :
    .
    1 - il faut mener autant de mesures pour chaque valeur de v, car c'est la base même de dire que la detection est probabiliste, donc grand nombre de mesure par volume nécessaire
    2 - Si on ne discrétise pas l'ensemble des valeurs prises par les volumes on ne peut s'en sortir.
    3- bien sûr l'hypothèse que tu maitrise plus ou moins la sélection des volume des particules envoyées mais je pense que ça doit être le cas, car j'ai le sentiment que veux caractériser ton capteur.

    bien sûr on sent que la probabilité va augmenter plus le volume des particules va augmenter, alors si tu peux pas faire tout çà on peut établir peut être un modèle (mais on passe à coté des anomalies du capteur) genre : P(v)= une courbe exponentielle (??) en fonction de v asymptotiique à 1.

    A part une réorganisation don on a déja parlé il reste la décision "si la detection a lieu alors qua la proba associée au volume est en dessous de ...%, alors je change de classe" ben pour le moment il me semble que tu doives le décider selon une vraimsemblance qui t'es personnelle.

  16. Publicité
  17. #13
    Sylvestre

    Re : A la recherche d'un test statistique

    Bonjour,

    Je vous propose une approche que j'ai moi-même appliquée lorsque j'ai du trouver un seuil optimal pour séparer deux groupes.

    Le concept fondamental pour ce genre d'étude est, je crois la courbe de Gini.
    Voici comment on la construit :
    Tu as une suite de n termes :

    aaabaababbabbbabbbbbbbbb

    On définit maintenant deux fonctions p(k) et q(k) telle que
    p(k)=(Nombre de "a" dans les k premiers termes de la suite)/(nombre total de "a")
    q(k)=(Nombre de "b" dans les k premiers termes de la suite)/(nombre total de "b")

    La courbe de Gini est alors la courbe qui relier les points (p(k),q(k)) par des segments de droites.

    Cette courbe part du point (0,0) et arrive au point (1,1). Tu observeras que plus cette courbe s'éloigne de la diagonale, plus les "a" et les "b" sont séparés.
    Une mesure possible de cette séparation est donc l'aire entre la courbe de Gini et la diagonale.
    Si les "a" et les "b" sont parfaitement séparés comme dans la suite aaabbb, alors cette mesure vaut 0.5, ce qui est le maximum possible. (la courbe de Gini passe par les points (0,0) (1,0) (1,1))

    Ce que tu dois faire maintenant pour séléctionner le k qui partage le mieux ta suite est celui qui est tel que le triangle (0,0) (p(k),q(k)) (1,1) a l'aire la plus grande possible.

    Dans le cas de l'exemple de départ :

    1.2563 ---> a
    1.96563 ---> a
    2.01244 ---> b
    2.568 ---> a
    5.3257 ---> a
    5.9623 ---> a
    6.245 ---> a
    7.0231 ---> b
    8.23564 ---> b
    9.2354 ---> b
    10.58 ---> b
    12.36 ---> b
    15.364 ---> b

    la courbe de Gini passe par les points (0,0) (1/6,0) (2/6,0) (2/6,1/7) (3/6,1/7) (4/6,1/7) (5/6,1/7) (1,1/7) (1,2/7) (1,3/7) (1,4/7) (1,5/7) (1,6/7) (1,1)

    Il faut trouver lequel de ces point donne le triangle (0,0) (p(k),q(k)) (1,1) le plus grand.
    Si je ne me suis pas trompé, c'est le point (1,1/7).

    Donc tu peux placer le seuil entre 6.245 et 7.0231.

    Voilà, j'espère avoir aidé

  18. #14
    Evil.Saien

    Re : A la recherche d'un test statistique

    Merci beaucoup pour toutes ces precisions !

    Je vais voir ce que ca donne.

    ++
    Mon psychiatre, pour quinze mille francs, il m'a débarrassé de ce que j'avais : quinze mille francs

Discussions similaires

  1. TEST statistique
    Par sandrine1609 dans le forum Mathématiques du supérieur
    Réponses: 8
    Dernier message: 19/05/2008, 15h46
  2. Test statistique
    Par cyberantoine dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 19/10/2007, 01h47
  3. Recherche test statistique
    Par gaspard33 dans le forum Mathématiques du supérieur
    Réponses: 16
    Dernier message: 05/07/2007, 14h56
  4. Test Statistique
    Par CollatzFan dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 07/06/2007, 16h54
  5. test statistique
    Par samia* dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 14/08/2006, 17h40