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

Statistiques, Data Mining et Data Science Discussion :

Algorithme de tirage avec équilibre ?


Sujet :

Statistiques, Data Mining et Data Science

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut Algorithme de tirage avec équilibre ?
    Bonjour à tous,

    Voici ma problèmatique (les valeurs données le sont à titre indicatif et sont susceptibles de changer) :

    Je dispose d'un ensemble d'éléments NE=500 à présenter à un ensemble d'individus NI=1500. Je souhaite que chaque individu voit NC=50 éléments parmis les NE.
    Je suis donc à la recherche d'un algorithme qui me permettrait de tirer des ensemble de NC=50 éléments parmis les NE=500 pour chacun de mes individus de sorte qu'au global, sur l'ensemble des individus, chaque élément soit vu un nombre similaire de fois (équilibre).

    Je connais quelques modèles de plan d'expériences mais ils ne m'ont pas semblé convenir à ce cas précis et j'ai eu du mal à trouver quels mots-clés utiliser pour une recherche.
    Je m'adresse donc à vous, si ce genre de problématique vous parle, je suis intéressée par toutes vos suggestions.

    Merci d'avance !


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  2. #2
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Bonjour,

    À première vue je tenterais une approche naïve. Chaque élément doit être réparti sur NEI=NE*NI/NC individus. Donc pour chaque élémént je choisi NEI individus distincts aléatoirement parmi ceux qui ont le moins d'éléments et je leur attribue l'élément en cours. En supposant qu'il y a un nombre suffisant d'individus, d'éléments, etc ...

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Sa chant que Ni >> à Ne, je me demande pourquoi tu ne fait pas un tirage sans remis, jusqu'au moment où tu n'as plus d'éléments dans Ne. A ce moment là, tu remets en "jeu" l'ensemble des éléments de Ne.

    Si tu as peur qu'un groupe de 10 individues ne soit pas en mesure de déterminer Ne facilement (car 10*50 = 500 = Ne = Un tirage complet). Il t'es possible de faire les 1500 tirages de 50 éléments. Ainsi tu aura une liste de 1500 tirage de 50 éléments que tu n'aura plus qu'à mélanger avant de distribuer pour t'assurer que personne ne détermine ton Ne facilement.

    Il t'es possible de faire des groupes de tirage plus petit genre 100 tirage de 50 (ce qui fait 10 fois Ne). Et refaire un nouveau 100 tirage de 50 quand il aura besoin de plus.

    C'est d'ailleurs ce que font les casinos pour le poker quand il mélange plusieurs paquet de carte pour faire la pioche.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Re-bonjour,

    Tout d'abord merci à tous les deux pour vos réponses

    Je me demandais s'il n'existait pas des algorithmes "prêts à l'emploi" pour ce genre de "tirage avec équilibre", ce qui m'aurait évité de l'écrire moi-même (si j'avais un "nom" d'algo, j'aurais pu chercher s'il existait déjà dans un des packages de mon langage de programmation...). Si jamais vous avez des noms à me donner, cela dit je suis preneuse ^^

    Du coup, j'ai écris un petit programme en suivant le conseil de kolodz, à savoir tirage aléatoire sans remise et re-remplissage de la pile une fois vide (ou presque). Je me suis assurée de faire ça de telle sorte qu'un même individu ne pourra pas tomber plusieurs fois sur le même élément (dans le cas où le nombre d'éléments à tirer NC n'est pas un multiple du nombre total d'éléments NE).

    -> Ma dernière question est la suivante : comment tester de manière "maligne" qu'aucun des individus ne voit exactement la même sélection de NC éléments (l'ordre n'a pas d'importance, ie. [ 1 , 2 , 5 ] et [ 5 , 1 , 2 ] sont considérées comme la même sélection) ?
    En effet, je ne vois pas a priori de manière "simple" et pas trop "coûteuse en temps" de faire un tel test...

    Merci d'avance !


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 289
    Par défaut
    Bonjour,

    En effet, je ne vois pas a priori de manière "simple" et pas trop "coûteuse en temps" de faire un tel test...
    Ben moi, j'en vois une facile: toujours tirer un nombre strictement supérieur à son voisin de gauche ! Ainsi 5-2-1 n'existera pas.

  6. #6
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Merci pour le retour Flodelarab

    En fait l'ordre n'est pas vraiment un problème (je peux trier facilement les éléments), c'était juste afin de préciser les différents cas possibles d'égalité de "combinaisons".

    Ma question était plutôt, comment s'assurer que je n'aurais pas deux individus avec exactement la même sélection de NC éléments ? Et par extension, comment tester/vérifier que ce n'est pas le cas ?


    Merci d'avance !


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  7. #7
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Merci kolodz pour ta réponse

    Je me demandais juste s'il n'y avait pas une manière plus "fine" ou "maligne" que de tester tous les "Set" entre eux.
    Si je choisis de faire un tel test, tu penses qu'il est plus judicieux de le faire tout à la fin (car il est très peu probable d'avoir un nombre élevé de combinaisons dupliquées) ou bien au fur et à mesure du remplissage (mais cela implique un nombre de tests bien plus conséquent) ?

    Merci de ton aide en tout cas !


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  8. #8
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 289
    Par défaut
    J'en remets une couche: la façon "maligne", comme tu dis, n'est pas de tester que la combinaison est unique mais de tirer une combinaison que tu sais unique. Personne n'a parler de trier en ordre croissant.

  9. #9
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Il faudrait que tu compare les "Set" un à un.
    En fonction du langage que tu utilise cela est plus ou moins facilité. Par exemple en Java tu as l'interface Set qui dispose de la méthode equals(Object o). Celle-ci retourne vraie si :
    Citation Envoyé par Javadoc
    Returns true if the specified object is also a set, the two sets have the same size, and every member of the specified set is contained in this set (or equivalently, every member of this set is contained in the specified set).
    Tout les langages qui propose un minimum d'API standard propose un équivalant.

    Il ne reste "plus" qu'à faire un boucle de vérification sur les différents set. Mais, un vrai random doit laisser ce genre possibilité. Enigma est tombé justement pour une bêtise de ce style ! (A savoir qu'une lettre ne pouvait pas être crypté entant qu'elle-même.)

    Source :
    http://docs.oracle.com/javase/7/docs...lang.Object%29
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. algorithme de tirage par roue biaisé
    Par rei.uchiwa dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 06/07/2010, 23h46
  2. [MySQL] recherche avec un algorithme de correspondance avec MySQL
    Par archer dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/02/2010, 10h10
  3. interprêtation de la macro tirage avec remise
    Par nostress dans le forum Macro
    Réponses: 6
    Dernier message: 09/06/2008, 15h58
  4. Algorithme de recherche avec retour de propositions.
    Par zeavan dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 18/11/2007, 12h48
  5. Probleme de tirage avec rand ?
    Par sunshine33 dans le forum MFC
    Réponses: 5
    Dernier message: 14/01/2004, 15h57

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