Appariement de deux groupes de personnes

Résolu
borisparis -  
 borisparis -
Bonjour,

je dois faire un travail d'appariement de deux groupes de personnes (des patients)..

Je mets un fichier d'exemple ici: http://www.cjoint.com/c/GGAjN56ZLR3

Un peu compliqué, je reconnais...

j'ai une liste de 96 personnes (qui ont fait un infarctus) - classeur 1
Je dois chercher dans une liste de 3043 témoins (des personnes qui n'ont pas d'infarctus) des personnes qui ressemblent le plus au premier groupe- classeur 2

En clair pour chaque personne de la première liste je dois trouver dans la seconde, une (voire deux idéalement) personne qui est voisine pour les variables des colonnes C (âge), D (IMC), E (HbA1c) F (HDL), G (sexe) et H (tabac)

Pour la C ca peut être +/- 2
Pour la D ca peut être +/-6%
Pour la E ca peut être +/- 6%
pour la F ca peut être +/- 6%
Pour la G et H ca doit être exacte (variable oui/non)

Il se peut que je doive ajouter ou enlever une variable plus tard dans un autre appariement pour d'autres calculs...

Si c'est quelqu'un a déjà fait cela ou sait le faire...;

Merci

5 réponses

Résumé de la discussion

L’appariement de 96 patients infarctés avec 3043 témoins consiste à trouver, pour chaque patient, un témoin compatible par âge (+/-2), IMC (+/-6%), HbA1c (+/-6%), HDL (+/-6%), et des correspondances exactes sur sexe et tabac. Des échanges sur la flexibilité des critères et la possibilité d’ajouter ou retirer une variable ont émergé, notamment pour autoriser des dépassements lorsque aucune solution parfaite n’existe. Plusieurs solutions techniques ont été discutées, incluant l’utilisation d’une table mémoire, des critères de tolérance progressifs et l’interdiction d’utiliser un témoin pour plusieurs patients sans ajustement. Des ajustements pratiques incluaient le retrait de témoins avec données manquantes et la garantie que le témoin soit utilisé une seule fois, avec des méthodes d’activation d’appariement adaptées.

Bobot (l'IA à votre service)
  1. borisparis Messages postés 87 Statut Membre 1
     
    Ca l'air très bien.
    Je peux changer le % ?
    et si je veux enlever une variable ?

    en fait je n'arrive pas à ouvrir le code
    1
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Dans le groupe 2 tu as des données absentes.
      On peut éliminer ces témoins sans autre forme de procès ?
      Ca rajoute des tests inutiles qui rallongent les temps de calcul pour rien.
      0
    2. borisparis Messages postés 87 Statut Membre 1
       
      Oui on peut effectivement les enlever
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    est-ce qu'un témoin peut être associé à 2 personnes ou plus ?
    S'il n'y a pas de solution est-ce qu'un dépassement des 6% sur qq lignes est toléré ou tu te mets en quête d'autres témoins ?
    eric
    0
  3. borisparis
     
    1) non un témoin ne doit être utilisé qu'une seule fois
    2) oui on peut tolérer plus si aucune solution. En faut à la fin que les deux groupes ait des moyennes qui ne soient pas statistiquement significatives

    Merci de ton aide...
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Heuuuu, attend pour le merci, pas dit que je trouve comment l'attaquer ;-)
      Surtout si ça doit évoluer dans les variables. En vba peu de souplesse, et je ne vois pas comment présenter ton truc au solveur... :-s
      0
  4. via55 Messages postés 14396 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonsoir à vous deux

    Un essai par fonction personnalisée par macro avec pour l'instant un nombre fixe de variables et de % de variation :

    https://mon-partage.fr/f/Yz8z5D8g/

    Cdlmnt
    Via
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Salut via,

      Pour l'age c'est +/- 2 ans, j'ai bien l'impression que tu as mis +/- 2%... ;-)
      eric
      0
    2. borisparis Messages postés 87 Statut Membre 1
       
      C'est peut être pour cela que beaucoup n'ont pas de correspondants ?
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Ca n'aide pas oui :-)
      0
    4. via55 Messages postés 14396 Date d'inscription   Statut Membre Dernière intervention   2 759 > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Bonjour à vous deux

      Exact j'ai mis +/- 2 %
      Pour ouvrir le code ALT+F11
      Pour corriger :
      Au début des IF remplacer les 2 premiers par :
      If age <= .Range("C" & n) +2 and age >= .Range("C" & n) -2...

      Cdlmnt
      Via
      0
    5. borisparis > via55 Messages postés 14396 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci++ J'ai fait le changement.
      Mais je ne sais pas comment je fais tourner le programme mis à jour...
      désolé de ces questions basiques
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour à tous,

    Je suis parti sur un traitement en table mémoire nécessairement plus rapide.
    - comme indiqué, j'élimine les lignes avec rubriques vides
    - ceux qui ne sont pas appariés à 6% sont repris par pas de 1%
    - j'ai mis le numéro apparié et à côté les caractéristiques paire avec le seuil de tolérance utilisé.

    http://www.cjoint.com/c/GGBuieYOLUl

    L'appariement s'effectue avec clic sur le bouton "Apparier".
    Il reste un vide mais c'est pour confirmer la règle ! ;-)
    0
    1. borisparis
       
      Excellent !
      comment est mesuré le seuil de tolérance ?

      si je veux enlever des variables, c'est possible sans tout casser ou non?
      0
    2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      Le seuil de tolérance est ajusté avec la variable 'tlc' (tolérance courante) qui varie depuis la valeur de 'tln' jusqu'à la valeur de 'tlx' par pas de 1%.

      Pour enlever des variables, tu mets en commentaire (') le test correspondant qui est indiqué dans le code ainsi que le 'End If' correspondant.
      0
    3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      re
      Une version plus conviviale car tu enlèves les variables à la volée, il te suffit de choisir "N" dans la liste pour que le paramètre de cette colonne soit ignoré.

      http://www.cjoint.com/c/GGCihWnSGsl
      0
    4. borisparis
       
      C'est juste génial !
      une dernière petite demande: est-ce qu'on peut ajouter 3 colonnes de variables qualitatives aussi en 0/1 variables comme pour tabac et sexe ?
      Je ne voudrais pas toucher au code moi-même au risque de tout casser...
      0
    5. borisparis
       
      J'avais encore une dernière des dernières demandes (si possible....) : c'est d'avoir la possibilité de mettre un deuxième apparié par patient. Mais que ce soit en option...
      0