Aller au contenu

Un outil de détection des inconforts

woman in gray top sitting beside gray tea pot and cup on brown wooden table

En tant qu’humains, vous connaissez certainement cette situation : vous avez mal au dos, peinez à trouver une position confortable, et votre petit frère déboule en trombe en sautant partout, gesticulant et criant sa joie d’avoir réussi un niveau super difficile dans son jeu vidéo. Il ne vous a pas même pas encore touché que vous vous crispez déjà rien qu’à le voir sauter partout, de peur que dans son débordement il s’approche de vous, ce qui pourrait vous mener à faire un faux mouvement pour vous proréger de ses frasques, ce qui ne manquera pas de réveiller la douleur… Du coup vous lui aboyez dessus de faire gaffe aux autres et d’arrêter de sauter dans tous les sens !

Autre situation du même ordre : un matin, vous arrivez au travail, vous déposez un dossier sur le bureau d’un collègue, et celui-ci s’emporte de manière complètement démesurée parce que vous ne l’avez « encore pas mis sur la bonne pile, et qu’il en a marre qu’on lui tape des trucs comme ça n’importe comment, que c’est un manque de respect total pour son boulot ! ». Ok, vous auriez pu faire attention, mais il aurait pu le dire de manière plus sympa, ce n’est clairement pas son habitude de s’emporter comme ça sur des broutilles. A la pause déjeuner, vous en rediscutez, et votre collègue s’excuse de s’être énervé, en vous expliquant qu’il était à cran parce qu’il crève de mal au bide depuis la veille…

Vous voyez l’idée ? Lorsqu’on est inconfortable, qu’on a des douleurs ou qu’on a mal dormi, notre seuil de réaction aux stimuli extérieurs s’abaisse, tout comme notre capacité à « prendre sur nous » pour gérer nos émotions

En tant qu’humain·e·s, nous avons non seulement la capacité d’être conscient·e·s de nos ressentis et de prendre un peu de recul, mais en plus nous avons la capacité de les verbaliser pour les exprimer à notre entourage.

brown short coated dog lying on white snow during daytime

Nos chiens sont tout autant impactés que nous par les douleurs et les inconforts physiologiques… sauf qu’ils n’ont pas la capacité de l’exprimer. Pas intentionellement du moins, et bien plus difficilement encore lorsqu’il s’agit d’un inconfort chronique, a fortiori s’ils vivent avec depuis toujours.

Il nous revient donc de devoir procéder par des observations indirectes pour arriver à détecter ces inconforts et les prendre en charge pour améliorer le bien-être de notre chien, et également sa capacité à appréhender son environnement. Sans quoi, on risque de passer des années à faire des exercices de contre-conditionnement pour traiter la « réactivité » de notre chien, alors que ce dernier est douloureux, et que s’il réagit sur les vélos qui passent, c’est peut-être simplement la même situation que notre premier exemple : la crainte d’avoir encore plus mal si le vélo s’approche et le force à faire un mouvement douloureux pour l’éviter… Non seulement notre chien n’est pas en capacité émotionnelle de bien apprendre, mais en plus l’origine du problème de « réactivité » est mal diagnostiquée.

Une des pistes pour détecter ces inconforts, est de faire une collecte de données. Mais pour qu’une collecte de données soit utile, elle doit réunir deux critères qui deviennent vite contradictoires : il faut à la fois que le résultat soit exploitable (des feuilles volantes gribouillées à la main rendent très difficile l’exploitation des données), et que l’encodage soit suffisamment pratique pour qu’on le fasse réellement (si il faut ouvrir un tableau Excel sur l’ordinateur pour encoder une réaction observée en cours de balade, le temps de rentrer à la maison et de se mettre devant l’ordinateur, on a oublié ce qu’il fallait noter).

Ajoutons encore à cela que, même une fois qu’on a analysé la collecte, il faut encore pouvoir présenter les résultats à notre vétérinaire d’une façon qui lui permette de les prendre au sérieux pour qu’il puisse envisager des pistes à investiguer. C’est vite la quadrature du cercle…

Avec Aurélie Maillard, de Pawsome Comportement, nous avons réfléchi à quoi observer, et à comment mettre en place une telle collecte, et nous avons pu développer un outil à vous proposer…

Il ne s’agit en aucun cas d’un outil qui vise à poser un diagnostic, ni à remplacer un bilan comportemental, et il ne s’agit pas non plus d’un outil exhaustif. Il ne couvre par exemple pas les symptômes de douleur aigus ou des observations comportementales non-ponctuelles comme être « plus actif », « plus apathique » ou avoir « moins d’appétit » que d’habitude.

Il s’agit uniquement d’un outil supplémentaire pour enrichir la collaboration entre gardien·ne, vétérinaire et comportementaliste, à combiner avec tous les autes outils déjà disponibles.

Le principe de l’outil

L’outil que nous proposons fonctionne en 3 étapes (2+1 en réalité) :

  1. Un formulaire de collecte dans Notion, pour qu’encoder une entrée puisse être fait en 20 secondes sur son smartphone.
  2. Une application web qui fait l’analyse de manière automatisée, et qui fournit un zip avec le rapport d’analyse et toutes les données utiles.
  3. Un Agent ChatGPT qui permet, si on le désire, d’approfondir l’analyse sur base du zip produit par l’application. Cette étape n’est pas indispensable, et l’utilisation de l’IA générative soulève des questions éthiques et environnementales, donc on laisse à chacun la possibilité de peser le pour et le contre pour son propre usage.

Le principe général de cet outil est de considérer, dans la lignée de la littérature académique et vétérinaire, que les inconforts et douleurs chroniques s’expriment souvent par des symptômes comportementaux indirects.

On ne va donc pas faire un lien strict « tel comportement » = inconfort, mais considérer que les inconforts s’exprimeront par un plus grand nombre de comportements divers au moment où l’inconfort est présent. On va donc voir s’il y a des pics de comportements à certains moments, et si ces pics de comportements sont statistiquement corrélés à des événements particuliers (comme le repas, ou la pratique du sport).

On va donc encoder à chaque fois qu’un événement survient (prendre le repas, déféquer, faire une balade, prendre un médicament, etc.) avec son heure, et on va également encoder à chaque fois qu’on voit un des comportements listés, avec son heure également.

Le système va alors pouvoir calculer des corrélations, et repérer, par exemple, que notre chien est en moyenne plus agité 1h20 après son repas, ou 4h après la prise de tel médicament (ce qui peut signifier que son effet s’atténue à ce moment-là). Il va également analyser ce qu’on appelle les facteurs confondants, autrement dit : vérifier qu’on a pas attribué l’inconfort à la balade alors qu’en réalité il est lié au repas qui a été pris juste avant la balade.

Pour avoir une analyse plus pertinente, on va séparer les comportements en deux groupes :

  • Les comportements spécifiques aux inconforts physiologiques : ce sont des comportements, précisément listés dans le formulaire, qui sont presque toujours représentatifs d’un inconfort physiologique (comme roter ou montrer des signes de reflux)
  • Les comportements non spécifiques : là, c’est très variable selon les chiens, et ces comportements peuvent autant être symptômatiques d’un inconfort que de tout autre chose. C’est leur volume et leur fréquence qui vont suggérer qu’ils pourraient être liés à un inconfort. Par exemple, un chien peut tourner en rond pour plein de raisons différentes, tout comme aboyer… mais si systématiquement il tourne en rond juste après le repas et qu’il aboie, ça peut nous amener à nous poser la question de voir si ça ne serait pas lié à un inconfort lié au repas, qui ferait qu’il est plus agité à ce moment-là.

Collecter

On va donc faire un encodage à chaque fois qu’il y a un événement, ou une prise de médicament, et à chaque fois qu’on voit un des comportements listés. Ca fait évidemment beaucoup sur une journée, et c’est pourquoi il était indispensable que chaque encodage ne prenne que quelques secondes.

Concrètement, mon chien fait caca : j’ouvre l’app Notion, je clique sur le bouton d’encodage, je mets l’heure, je coche la case « 💩 », et je fais envoyer. Mon chien mange : pareil, j’ouvre l’app Notion, je clique sur le bouton, je note l’heure et je coche « repas », puis « envoyer ».

Il ne faut pas remplir tous les champs à chaque fois : on encode la date et l’heure, le type d’événement, et puis seulement les champs qui correspodent à ce qu’on vient d’observer (par exemple, si on encode un repas, on va cocher le repas, on ne va pas forcément cocher de cases relatives aux médicaments sauf si on en a donné en même temps que le repas).

Il faudra au moins 3 jours d’encodage pour pouvoir lancer une analyse, mais l’avantage est que, justement, vu que l’encodage est très complet et précis, en quelques jours de collecte on a très vite des résultats intéressants qui apparaissent. C’est bien moins lourd qu’il n’y parait.

Les comportements spécifiques aux inconforts physiologiques sont une liste établie sur base de la littérature scientifique et vétérinaire : il n’y a donc en général pas besoin de la modifier.

Par contre, la liste des événements, des médicaments et des comportements non spécifiques sera vraiment particulière à votre chien : vous pouvez vous baser sur les choix déjà encodés, mais il y aura certainement des éléments manquants. Par exemple, vous aurez peut-être remarqué que quand votre chien n’est pas bien, il va se coucher dans le couloir, ou que lorsqu’il est tendu, il va se figer devant la porte-fenêtre à aboyer sur tout ce qui passe. Vous voudrez donc sans doute ajouter ces options pour noter quand votre chien fait ça, et voir si c’est effectivement lié à quelque chose ou non.

Analyser

Ici, on va entrer dans une partie plus technique. Vous n’avez pas besoin de comprendre tout cela pour utiliser l’outil, mais il est important que la méthodologie d’analyse soit clarifiée au cas où vous voulez savoir de quoi il retourne.

Globalement, l’application va relever l’heure de chaque événement, comportement spécifique (SP) et comportement non-spécifique (NS).

Elle va ensuite répartir d’une part tous les comportements spécifiques et d’autre part tous les comportements non-spécifiques sur la journée, pour voir d’abord s’ils comment ils se distribuent par rapport au moment de la journée, ce qui permet de voir si il y a des pics d’activités liés plutôt à l’heure en général qu’à des événements particuliers. La journée est calculée de manière un peu décalée, comme si elle se terminait à 3h du matin plutôt qu’à minuit, pour éviter d’attribuer à une autre journée un éléments qui arrive en fin de soirée, mais après minuit, dans les cas où on ne va se coucher que plus tard…

Ensuite, l’application va calculer, pour chaque événement, d’une part les comportements spécifiques (tous pris ensemble) et d’autre part les comportements non-spécifiques (tous pris ensemble), qui surviennent soit dans les 8h après, soit avant le prochain événement du même type. Concrètement : si j’ai un repas à 10h et un repas à 16h

  • Pour le repas de 10h : puisque le repas suivant survient moins de 8h après, le système va prendre en compte tous les comportements survenus entre 10h et le repas suivant (16h).
  • Pour le repas de 16h : puisqu’il n’y a plus de repas dans les 8h après ce repas de 16h, le système va plafonner sa comparaison aux comportements survenus dans les 8h après le repas, donc avant minuit.

Le système va donc calculer les délais entre l’événement (le repas) et chacun des comportements retenus. Il va ensuite pouvoir analyser la répartition, pour déterminer s’il y a des pics de comportements spécifiques et/ou non spécifiques après cet événement.

Après, sur le même principe, le système va analyser les facteurs confondants : il va comparer ces distributions avec la distribution « moment de la journée », pour voir par exemple si ce serait plus lié au moment de la journée qu’au repas, et comparer aussi les événements entre eux, pour voir si la corrélation est mieux expliquée par un autre événement (facteur confondant).

S’il en a la possibilité, il va ensuite proposer aussi d’autres analyses, comme analyser les jours avec et les jours sans un événement / médicament, pour voir si il y a une différence. On va par exemple remarquer que notre chien est plus agité les jours où on a fait des activités sportives intenses que les journées calmes. Attention toutefois à rester critique sur les corrélations, et à ne pas les prendre erronément pour des causalités (c’est parfois le cas, parfois pas): évidemment, on va voir plus d’inconforts les jours où on a donné un pansement gastrique… puisqu’on a justement donné le pansement gastrique parce qu’il y avait des inconforts.

Tout ce tableau devrait permettre de faire émerger des pistes qu’on pourrait louper au quotidien, sans la puissance de l’analyse statistique.

L’application vous livre alors un ficher zip contenant :

  • Un rapport pdf complet avec toute l’analyse
  • Un rapport succint destiné au vétérinaire, si vous pensez (et ce serait logique) qu’il ne veuille pas lire le long rapport complet
  • Tous les graphiques en images png séparées, pour au cas où vous voudriez les utiliser isolément dans un mail par exemple
  • un fichier technique « json » qui contient des éléments d’analyse destinés à l’Agent ChatGPT si vous l’utilisez.

Interpréter via l’IA (optionnel)

a computer screen with a program running on it

L’application étant construite en code « classique » (Python), elle ne peut pas donner d’interprétation en fonction du sens de ce qu’elle traite : elle calcule de la même manière les corrélations avec les repas ou les balades, entre un ISRS et un pansement gastrique. C’est ce qui est voulu : c’est une analyse statistique neutre.

Par contre, il peut être intéressant de pouvoir aller plus loin, en faisant appel à un outil capable de comprendre le sens1 de ce qu’il traite, et de faire des inférences à partir de ce qu’il va trouver dans la littérature académique et vétérinaire. Evidemment, il faut rester critique, c’est indispensable. Mais cela peut valoir la peine de lui poser des questions prudentes sur notre jeu de données pour voir s’il trouve des sources académiques ou vétérinaires qui pourraient éclairer la situation qu’on lui présente, ou lui demander de faire des analyses statistiques autres que celles qui sont présentes dans le rapport. Il est par exemple possible de lui expliquer ce que nous on pense observer de notre chien, et si le jeu de données confirme cela ou non. Il n’est évidemment absolument pas question de lui demander ni un diagnostic ni un plan de travail complet, mais il peut nous aider à débrouissailler des pistes à discuter avec notre vétérinaire et/ou avec notre comportementaliste.

Et maintenant, concrètement ?

Eh bien maintenant, concrètement, il vous suffit de cliquer sur le bouton ci-dessous pour vous rendre sur la page de l’outil, et de suivre les instructions concrètes pour vous lancer !


  1. On peut discuter longuement de savoir si l’IA « comprend » ou non ce qu’elle traite, et je n’ai aucun souci à rentrer dans ce débat philosophique, mais dans le cas qui nous occupe, cette subtilité n’est pas pertinente : ChatGPT est capable de traiter différemment un mot en fonction de ce à quoi il renvoie, et de faire des inférences différentes en fonction de cela. Il est tout à fait capable de chercher à quoi « fluvox » fait référence comme médicament, quel est son rôle d’après la littérature, et de comparer si cela correspond ou non à ce qu’il voit dans le jeu de données. Donc à ce niveau de discussion on peut tout à fait dire qu’il « comprend », puisqu’il fait exactement ce que ferait une personne humaine qui « comprend » ce qu’il fait.* ↩︎
Vous avez apprécié cet article ? N'hésitez pas à le partager !