|
Conférencier
|
Transcription
|
| Josué W Lambert |
Bonjour. |
| ROBYN GODFREY |
Salut, je suis Robin, moi Josh. |
| |
Oui. |
| ROBYN GODFREY |
Le néo. |
| Josué W Lambert |
ouais, ravi de te rencontrer aussi, désolé, j'ouvre juste le PowerPoint ici. |
| ROBYN GODFREY |
D'accord. |
| |
Avez-vous des co-présentateurs ? |
| Josué W Lambert |
Non. |
| ROBYN GODFREY |
Très bien, je vais juste parcourir la liste ici, donc nous enregistrons cela, donc juste pour que vous me donniez verbalement une affirmation verbale que vous savez que vous êtes enregistré. |
| |
Oui. |
| ROBYN GODFREY |
Les notifications Internet des téléphones portables sont désactivées. |
| Josué W Lambert |
Oui. |
| ROBYN GODFREY |
ouais, je pense que je suis comme la barre des tâches de Windows et tout ça et bien sûr, c'est comme si ton e-mail disparaissait au milieu. |
| Josué W Lambert |
Et je ne pense pas que j'ai tout éteint, ils n'ont jamais eu à faire ça avant. |
| ROBYN GODFREY |
Je pense que c'est dans la barre des tâches. |
| |
Voyons voir ici. |
| |
Fermez simplement votre messagerie et tout ira bien. |
| |
D'accord. |
| Josué W Lambert |
j'ai eu les tacos. |
| ROBYN GODFREY |
Ok, super, je vais me cacher ici. |
| |
Pour faire ça, à chaque fois que je fais ça, je dois, je dois me dire : « Ok, qu'est-ce que j'ai fait ? » |
| Josué W Lambert |
Alors alors. |
| |
En ce qui concerne la présentation, je suppose que vous allez couper à partir du moment où je commence. |
| |
ouais, et qu'est-ce que tu as des questions que tu vas poser ou. |
| ROBYN GODFREY |
Non, non, donc vous ferez simplement votre présentation comme vous le feriez normalement. |
| |
c'est vrai et juste, tu sais que tu fais apparaître tes diapositives et tout. |
| |
Si vous souhaitez d'abord parler et ensuite afficher vos diapositives, c'est très bien, si vous avez besoin de recommencer ou quelque chose comme ça, faites-le-moi savoir et nous pourrons le faire, ce n'est pas grave. |
| |
Ok, tu es un petit clip comme si tu étais la caméra, y a-t-il un moyen de reculer un peu parce que tu es vraiment proche. |
| |
Je ne peux même pas voir tout ton visage, je peux voir comme... |
| Josué W Lambert |
savoir que j'ai oublié. |
| ROBYN GODFREY |
Ouais, juste un petit peu. |
| |
Ou peut-être baisser un peu votre appareil photo. |
| |
c'est bien. |
| |
c'est bien ouais, on peut voir plus de tes épaules et tout, ok. |
| |
Alors je vais passer en mode muet, alors donnez-moi juste quelques secondes, et ensuite vous pourrez. |
| |
Commencez quand vous êtes prêt, ok. |
| |
Super. |
| Josué W Lambert |
Bonjour à tous. Je m'appelle Josh Lambert. Je suis professeur adjoint à l'Université de Cincinnati et j'utilise JMP depuis environ 10 ans. |
| |
Et je suis ravi de partager avec vous certains travaux que j'ai réalisés autour de l'exploration des interactions dans les modèles de régression à l'aide d'un module complémentaire que j'ai créé et qui utilise un algorithme que j'ai développé appelé l'algorithme de solution faisable. |
| |
Donc |
| |
quelques éléments dont nous allons parler aujourd'hui. Je vais donc commencer par un petit exemple, qui motivera notre discussion, ainsi que ce sur quoi j'ai travaillé, un aperçu du problème. |
| |
Une solution potentielle. |
| |
Et puis je discuterai de la façon dont j'ai implémenté la solution dans un package R, puis je l'ai transférée vers un module complémentaire JMP et du processus que j'ai suivi pour y parvenir. Et puis je parlerai de certains projets futurs et de certaines choses que j'ai apprises en cours de route. |
| |
Alors, motivons notre discussion d'aujourd'hui avec un petit exemple. Je vais appeler cela Tom le Data Scientist. Alors, rencontrez Tom. C'est un data scientist et Tom effectue de nombreuses activités typiques de science des données, en particulier Tom crée des modèles de régression multivariable dans JMP. |
| |
Il traite principalement de données tabulaires comportant de nombreuses variables, et Tom se rend compte que ces modèles de régression multivariable manquent de complexité, en particulier de termes d'interaction et de termes quadratiques. |
| |
Et Tom... cela frustre Tom, et Tom ne veut pas se lancer directement dans l'apprentissage automatique. |
| |
Il aimerait donc disposer d’un moyen d’explorer les effets d’interaction dans ses modèles de régression. |
| |
il a des interactions qu'il aimerait tester, mais il devrait les créer manuellement dans la plateforme de modèle d'ajustement dans JMP. |
| |
Et vous savez, exécuter toutes ces opérations va prendre beaucoup de temps. Par exemple, si Tom a 200 variables dans son ensemble de données et qu'il doit rechercher toutes les interactions bidirectionnelles, cela représente 19 900 interactions bidirectionnelles à vérifier. C'est un peu trop. |
| |
Tom se demande donc s'il existe un moyen algorithmique et basé sur les données pour explorer les effets d'interaction dans les modèles de régression sans avoir à les fabriquer tous à la main et à vérifier toutes ces combinaisons possibles ? |
| |
Examinons donc ce problème d'une manière un peu plus rigoureuse, mathématiquement et statistiquement. Nous avons donc affaire à un problème de volume et de complexité. |
| |
Donc volume et complexité |
| |
va continuer à croître à un rythme très rapide. Nous disposons en permanence de plus en plus de données, et la complexité de ces données augmente également. |
| |
Le problème avec les interactions est qu’il y en a tout simplement trop pour pouvoir les vérifier. |
| |
Habituellement, un data scientists, un statisticien, un scientifique va devoir se lancer dans l'analyse avec un ensemble connu d'interactions à vérifier. |
| |
et ensuite procéder à leur vérification. C'est un problème pour plusieurs raisons, |
| |
qui sont celles pour lesquelles vous n'avez peut-être pas une bonne idée des interactions qui peuvent ou non exister, et vous aimeriez pouvoir les explorer dans vos données |
| |
sans avoir à recourir à des modèles, comme la forêt aléatoire ou même l'analyse en composantes principales pour effectuer une sorte de réduction des données, en y ajoutant un peu plus de complexité. Vous aimeriez vraiment pouvoir faire des choses au fur et à mesure que vous construisez un modèle de régression. |
| |
L’autre problème avec les forêts aléatoires et les composantes principales, ainsi que d’autres types de tâches d’apprentissage automatique, est que ces choses sont souvent difficiles à interpréter et nous aimerions ajouter… conserver l’interprétabilité des modèles de régression pendant que nous explorons les interactions. |
| |
Donc, généralement, notre flux de travail en régression |
| |
le statisticien passe donc beaucoup de temps à construire un modèle parcimonieux, ce que j'appellerai, de base avec les variables nécessaires et aucun effet d'interaction ajouté. |
| |
Ce modèle de base, le statisticien va y consacrer beaucoup de temps, beaucoup de ressources, de soins, du temps pour réfléchir s'ils sont interprétables ou non et s'ils auront un bon sens contextuel. |
| |
Le problème avec ces modèles de base qui n’incluent pas la complexité est qu’ils supposent que les effets… que les effets qu’ils estiment sont cohérents dans tous les sous-groupes possibles comme le sexe, la race, l’âge, et ce n’est généralement pas vrai. |
| |
Ce manque de complexité |
| |
empêche vraiment les gens de pouvoir l'utiliser, par rapport à un modèle d'apprentissage automatique, par exemple, qui fait un très bon travail de modélisation de cette complexité. Le problème peut donc être résumé de la manière suivante. |
| |
Existe-t-il un moyen de ne pas aller jusqu'aux modèles de régression multivariable traditionnels et de ne pas aller jusqu'aux modèles d'apprentissage automatique ? |
| |
mais trouvons un bon point d'équilibre au milieu, où nous sommes capables de prendre la belle interprétabilité de nos modèles de régression qui ajoutent une ou deux interactions |
| |
que nous avons trouvé dans ces big data, afin que nous puissions ajouter des nuances intéressantes à nos modèles et à leur complexité, ce qui, encore une fois, ajoute des performances prédictives ainsi qu'un bon sens contextuel. |
| |
Donc, s’il existe un moyen d’y parvenir, ce que nous aimerions vraiment faire, c’est développer un outil permettant aux statisticiens, aux scientifiques des données et aux enquêteurs d’explorer les interactions après avoir construit un modèle de base. |
| |
le modèle de base se produit en premier, puis l'exploration de la complexité se produit généralement en second. |
| |
Nous avons donc certaines contraintes et préférences si nous devions développer un outil comme celui-ci. Nous souhaiterions qu'il y ait, sur la base de modèles statistiques traditionnels, une régression logistique linéaire, |
| |
nous aimerions qu'ils restent interprétables. Nous voulons vérifier moins de modèles, si possible, et nous préférerions que ce soit faisable plutôt qu'optimal. J'expliquerai un peu plus ce que cela signifie plus tard, mais en substance, ce que cela signifie vraiment, c'est que |
| |
nous souhaiterions qu'il y ait une pléthore de solutions plutôt qu'une seule qui soient bonnes et que nous appellerons réalisables. |
| |
Nous aimerions aussi qu'il soit flexible. Il pourrait être adapté pour pouvoir fonctionner avec la régression linéaire, la régression logistique, la régression proportionnelle de Cox. Nous pourrions l'utiliser pour la régression de Poisson, n'importe quel type de régression, ce cadre ou cet outil pourrait être utilisé pour cela. |
| |
Et encore une fois, ce sera un mélange de méthodes statistiques traditionnelles et d'apprentissage automatique. Les résultats qui en sortiront ne seront pas nécessairement inférentiels, mais ils seront exploratoires et ils motiveront et influenceront ce que nous ferons à l'avenir. |
| |
Parlons maintenant de cette solution potentielle, l’algorithme de solution réalisable. |
| |
L'algorithme... l'algorithme de solution faisable parfois appelé FSA, ou c'est comme ça que j'aime l'appeler, |
| |
a été discuté pour la première fois dans cet article... vraiment discuté en détail pour la première fois dans cet article que j'ai écrit en 2018. |
| |
Et |
| |
Je vais résumer ici ce que fait l'algorithme. |
| |
Donc, le but de l'algorithme est d'identifier les interactions d'ordre m (donc si m était 2, ce serait une interaction à double sens ; si m était 3, ce serait une interaction à trois sens), |
| |
avec un critère faisable, donc c'est un critère qui n'est pas nécessairement le meilleur critère, mais c'est un |
| |
critère qui est |
| |
peut-être considéré comme semi-optimal d'une certaine manière. |
| |
Pour ce faire, nous allons suivre les étapes suivantes. La première chose que nous allons faire est de commencer par une interaction aléatoire d'ordre m, donc pour notre cas, supposons qu'il s'agisse d'une interaction à double sens, donc m est 2. |
| |
Nous allons considérer tous les échanges d'une des variables et l'interaction pour toutes les autres variables. Par exemple, disons que nous la démarrons de manière aléatoire. |
| |
Nous avons cinq variables, donc c'est juste un petit exemple, juste pour motiver les étapes ici, mais disons que nous avons cinq variables et que nous commençons aléatoirement à X3, X5 et notre critère, qui est R au carré pour ce point de départ aléatoire, est de 0,5. |
| |
Et disons que la façon dont fonctionne l'algorithme est qu'il envisagerait d'échanger l'une des variables, X3 ou X5, contre l'une des autres. Nos choix sont donc les suivants |
| |
X3 X1, X3 X2, X3 X4, X5 X1, X5 X2 et X5 X4. Notez donc que parmi tous les échanges possibles, ce que j'appellerai, il y a au moins une des variables de lieu de départ, d'accord ? |
| |
Et puis, ce que nous allons faire, c'est de tous ces modèles, nous les adapterons et nous déterminerons quels sont les critères pour ces modèles. Donc, ce que nous pouvons voir ici, c'est que |
| |
pour le modèle X3 X5, nous avons .5 ; X3 X1, le critère est .4. |
| |
Et avec R au carré, nous ne voulons évidemment pas aller dans un endroit pire, nous voulons aller dans un endroit meilleur, un R au carré plus élevé, donc nous découvririons parmi tous les choix possibles, quel est le meilleur endroit où aller. |
| |
Dans cet exemple, le meilleur endroit où aller est l'échange numéro trois, qui est X3 X4. Nous passerions donc à l'étape trois et ferions le meilleur échange à partir de l'étape numéro deux. |
| |
Dans ce cas, nous passerions à la place X3, X4, puis nous reviendrions au numéro deux et répéterions jusqu'à ce qu'aucune amélioration ne puisse être apportée. |
| |
Nous répéterions donc ce processus, en nous déplaçant vers des endroits, en commençant par là, en considérant tous les échanges, jusqu'à ce que finalement nous ne puissions plus apporter d'amélioration. |
| |
Et nous allons appeler cela... cet endroit où nous finirons par trouver une solution réalisable. |
| |
Et nous allons répéter les étapes 1 à 4 pour trouver d'autres solutions réalisables. Nous pouvons le faire encore et encore, et ce processus, cet algorithme de solution réalisable, ne garantit pas de vous donner la solution optimale, bien qu'il puisse vous donner la solution optimale, dans certains cas. |
| |
Parlons donc de certains des sous-produits de l'utilisation de cet algorithme, l'algorithme de solution faisable. Et ceux-ci sont décrits dans un article qui |
| |
Elliott, une de mes collègues, a écrit en 2021, où elle décrit que les solutions réalisables ne sont pas garanties, comme je viens de le dire plus tôt, d’être optimales pour un critère choisi. |
| |
Et cela revient à dire que toutes les solutions optimales sont réalisables, mais que toutes les solutions réalisables ne sont pas optimales. Les solutions réalisables sont donc un type de solution semi-optimale, elles vous donnent de bons critères, des critères réalisables, mais pas nécessairement optimaux. |
| |
Ces critères de solutions réalisables sont généralement très proches des critères optimaux, ils ont donc tendance à être plutôt bons. Ils ne sont simplement peut-être pas aussi bons que les meilleurs. |
| |
Beaucoup... si vous répétez le processus, ceci... ces quatre étapes, vous obtiendrez potentiellement de nombreuses solutions réalisables, donc si vous faites cet algorithme 10 fois, vous pourriez obtenir quatre solutions réalisables. |
| |
Vous pouvez obtenir 10 solutions réalisables. Cela dépend des données que vous utilisez, ainsi que de la variance de covariance de cet ensemble de données, donc c'est un peu |
| |
vous ne savez pas exactement combien de solutions vous allez obtenir. |
| |
Et c'est pourquoi nous encourageons généralement les utilisateurs à répéter l'algorithme de solution faisable plusieurs fois, car cela va augmenter vos chances d'obtenir les solutions optimales, ainsi que les solutions faisables, et vous assurer d'avoir |
| |
j'ai recherché l'espace de manière adéquate. Et nous avons un autre article qui décrit cela (si quelqu'un est intéressé, vous pouvez me contacter) quant au nombre de tris aléatoires que je dois faire pour m'assurer d'avoir une probabilité raisonnable d'obtenir le tri optimal. Nous avons un |
| |
un article théorique sur ce sujet également. |
| |
Mais, en substance, la façon dont cela fonctionne est que certaines de ces interactions sont plus attrayantes. Elles... l'espace bêta les attire plus que d'autres, et donc ce que vous finissez par obtenir parfois, c'est que, même si |
| |
une interaction n'est pas optimale, elle peut parfois conduire... les données peuvent souvent la conduire |
| |
grâce à l'algorithme de solution faisable...faisable, il peut souvent vous conduire à cet endroit plus souvent qu'à l'endroit optimal, et cela a simplement à voir avec la façon dont les données sont corrélées et ainsi de suite. |
| |
Parlons donc du package R et de la façon dont je l'ai déplacé vers le module complémentaire JMP. |
| |
Donc |
| |
le package R s'appelle rFSA, et je sais que nous avons peut-être des personnes qui ont beaucoup utilisé R et d'autres qui ne l'ont pas fait. |
| |
Donc R est un langage de programmation vraiment sympa et il est souvent enseigné dans les programmes de statistiques, et c'est donc le premier endroit où je me suis immédiatement rendu lorsque je travaillais sur ma thèse. |
| |
pour, vous savez, rédiger cet algorithme et fournir réellement un outil à la communauté pour lui permettre d'identifier et d'explorer les interactions dans leurs propres ensembles de données. |
| |
Et donc le package rFSA implémente cet algorithme de solution réalisable dont je viens de parler |
| |
pour les interactions dans de grands ensembles de données, et ce package prend en charge l'optimisation de nombreux critères différents tels que R au carré, R au carré ajusté, AIC |
| |
interaction, valeur P, etc. Il prend également en charge différentes stratégies de modélisation, comme les modèles linéaires et les modèles linéaires généralisés, et peut être facilement adapté pour fonctionner avec d'autres types de modélisation, comme les modèles à risque proportionnel de Cox. |
| |
Et il fournit également plusieurs solutions car il répète l'algorithme autant de fois que vous le spécifiez. |
| |
Alors pourquoi... Je veux parler un peu de ma motivation pour déplacer ce package vers JMP, et je vais parler du pourquoi, du quand et du comment j'allais le faire. |
| |
La première question est donc : pourquoi faire cela ? La première chose est que c'est amusant à faire. J'aime écrire dans différents langages de programmation. Je n'avais pas beaucoup d'expérience en écrivant dans le langage de script JMP, qui est la version de JMP de |
| |
langage de programmation statistique, et donc je voulais apprendre cela et j'ai pensé que ce serait amusant de déplacer ce package R sur lequel j'ai passé la majeure partie de quatre ans, et d'essayer de le déplacer vers JMP, car |
| |
J'aime beaucoup JMP. Je pense que JMP est génial. C'est un outil vraiment génial pour moi et mes données |
| |
pipeline d'analyse. Je commence généralement tous mes projets dans JMP et j'explore les données, je trace les données, j'observe les choses et cela me donne beaucoup de bonnes intuitions sur ces données. Et j'ai découvert que beaucoup de mes |
| |
collègues, en particulier l'un de mes conseillers, il travaille principalement sous JMP et il me demandait toujours le package FSA dans JMP. |
| |
Et donc je me suis dit, vous savez, pourquoi ne pas le lui donner ? Il le mérite sûrement, alors j'ai décidé que ce serait un bon outil et que, j'espère, d'autres personnes le feraient |
| |
en tirer une certaine utilité. Et cela m'amène à mon autre point sur les raisons pour lesquelles il faut faire cela, et j'ai reçu beaucoup de bons retours sur la rFSA. |
| |
Plus précisément, j'ai suivi le nombre de personnes qui ont téléchargé mon package R et plus de 16 000 personnes l'ont téléchargé depuis que nous l'avons publié en 2019. |
| |
J'ai reçu d'innombrables e-mails de personnes du monde entier et je souhaite que la même chose soit accessible aux utilisateurs de JMP. J'espère que grâce à ce module complémentaire, les utilisateurs pourront trouver des interactions vraiment intéressantes qui changent la façon dont ils interprètent les données et dont ils les comprennent. |
| |
Et puis vous vous demandez peut-être : « Quand est-ce que je vais faire ça ? » Ce n’est pas exactement quelque chose pour lequel quelqu’un me paie. Vous savez, JMP ne me paie pas pour le faire. |
| |
Mon poste actuel, même si je pense qu'ils le trouveraient intéressant, ils ne sont probablement pas vraiment enthousiastes à l'idée que je passe beaucoup de temps supplémentaire à le faire. |
| |
Mais heureusement, mon poste m'offre du temps libre le vendredi. J'essaie de consacrer mes vendredis après-midi ou matin à des activités ludiques, |
| |
des choses amusantes qui ont un rapport avec mon travail. Et j'appelle ça Fun Friday Free Time, et c'est ce que j'ai décidé de faire ces derniers mois : prendre mon Fun Friday Free Time et le passer à créer un module complémentaire JMP. |
| |
Vous vous demandez peut-être comment j'allais faire ça ? Vous savez, je ne connaissais pas le langage de script JMP. Comment allais-je m'y prendre ? Alors |
| |
La première chose est que j'allais l'apprendre. Il existe donc de très nombreuses ressources très utiles sur la façon d'apprendre le JSL. |
| |
Il existe donc un support de code JMP JSL qui se trouve dans le logiciel JMP lui-même. Allez simplement dans l'aide, vous pouvez aller directement dans |
| |
l'index des scripts qui s'y trouve. Il y a d'innombrables choses qui sont en ligne |
| |
sur la façon de comprendre le langage de script JMP et par où commencer. Et puis il y a le community.jmp.com, |
| |
ce qui est vraiment génial pour commencer, où vous pouvez poser des questions ou consulter d'autres questions que les gens ont posées et emprunter le code qu'ils ont publié publiquement pour pouvoir... pour que les gens puissent en profiter. Et je l'ai fait plusieurs fois ici, et c'était vraiment génial. |
| |
Je vais donc passer en revue chacun d'entre eux un peu plus en profondeur, juste pour que si vous êtes intéressé par le déplacement d'un package R ou par l'écriture de votre propre algorithme ou par l'écriture de votre propre code JSL, |
| |
vous aurez une idée de par où commencer. Et puis, lorsque j'aurai terminé, je vais passer à mon module complémentaire et plus précisément à ce qu'il fait et comment l'utiliser. |
| |
Alors comment apprendre le JSL ? Eh bien, vous pouvez à nouveau... |
| |
vous pouvez l'apprendre grâce à un certain nombre de ressources JSL de JMP dont ils disposent. Ils ont donc un guide de script de 864 pages, dont le lien est ici, |
| |
Vous pouvez le rechercher sur Google ou vous pourrez peut-être récupérer ces diapositives une fois que tout cela sera terminé et obtenir ces liens. Il existe un index de scripts dans JMP, auquel vous pouvez simplement accéder dans Aide, puis Index de scripts. Je l'ai mis ici pour vous, c'est vraiment facile à utiliser et à démarrer. |
| |
Vous pouvez contacter JMP. La première chose que j'ai faite, c'est d'avoir un contact chez JMP. Elle s'appelle Ruth Hummel et je lui ai dit : "Hé, je veux faire ça, par où dois-je commencer ?" |
| |
Elle m'a apporté son soutien et ses encouragements concernant cette idée. Elle a trouvé cela génial et m'a ensuite mis en contact avec un expert en code JSL, |
| |
dont le nom est Mark Bailey. Et Mark a été formidable tout au long de ce processus. Mark m'a aidé simplement avec un support général autour du langage de script, en révisant mon code, en m'aidant à en écrire des parties, |
| |
nous avons commencé à en faire une partie. Et nous avons pris... nous avons fait des allers-retours environ 22 fois par courrier électronique au cours des derniers mois. Et |
| |
les ressources que JMP m'a fournies, en ce qui concerne les employés directs qui étaient prêts à m'aider dans mon projet |
| |
ont été formidables. Je veux dire, je n'aurais pas pu demander mieux. Je veux dire, je n'ai jamais reçu ce type de soutien lorsque j'essayais de créer quelque chose pour une autre plateforme auparavant. Donc félicitations à JMP pour |
| |
ils fournissent cela, et c'est la principale raison pour laquelle cela existe ; c'est parce qu'ils ont fourni des ressources fantastiques. |
| |
Alors, sur community.jmp.com, vous pouvez poser des questions, obtenir des réponses, emprunter du code, vous pouvez y obtenir une certification. |
| |
Langage de script JMP. Vous pouvez rechercher dans la communauté tout ce que vous voulez, vous pouvez... c'est comme Google, mais c'est juste pour JMP. |
| |
Et vous pouvez rechercher tout ce que vous voulez, donc vous pouvez taper en JSL et faire ce que vous voulez en JSL, et il y a probablement quelqu'un qui a déjà posté à ce sujet. Si ce n'est pas le cas, vous pouvez l'ajouter au forum de discussion. |
| |
Et puis il y a l'emprunt de code, et c'est l'une des choses que Mark m'a transmises : hé, emprunter du code. Il y a beaucoup de code sur le site Web de la communauté, |
| |
et les gens l'ont partagé pour une raison. Donc je... sur la droite ici, il y a en fait quelque chose que j'ai emprunté pour mon module complémentaire que j'ai développé. Je voulais que les utilisateurs sachent où ils se trouvaient |
| |
en termes d'exécution de l'algorithme et de combien de temps cela allait prendre ou de progrès déjà réalisés. |
| |
Et donc je ne voulais pas écrire ma propre barre de progression dans JMP, donc j'en ai simplement emprunté une qui se trouvait sur le tableau communautaire et je l'ai ajoutée directement dans mon module complémentaire, donc oui. |
| |
Cette personne, Craige Hales, qui est un membre retraité du personnel de JMP, a écrit ce code et je l'ai emprunté. Merci donc, Craige ; merci, Mark, de m'avoir recommandé d'emprunter le code. Cela m'a fait gagner beaucoup de temps, donc je l'apprécie vraiment et cela a grandement amélioré le module complémentaire. |
| |
Alors maintenant, parlons enfin du module complémentaire. Je vous ai donc expliqué pourquoi ce module complémentaire est nécessaire, n'est-ce pas ? D'autres ont appris à utiliser le package R et pourquoi je pense que les utilisateurs de JMP en bénéficieront, et je vous ai expliqué comment je l'ai fait. |
| |
Et maintenant, je veux vous montrer comment cela fonctionne, ce qui est, je l'espère, la partie la plus amusante de tout cela. J'ai donc déplacé tout ce package, le package R, vers JMP en quelques mois pendant mon temps libre du vendredi, donc ce n'est que quelques heures le vendredi. Et le module complémentaire JMP |
| |
fonctionne actuellement uniquement pour les modèles de régression linéaire et logistique. J'espère pouvoir l'étendre à d'autres modèles plus tard, mais pour l'instant, cela fonctionne pour les modèles de régression linéaire et logistique. L'autre chose est que le module complémentaire, |
| |
il n'a pas beaucoup de fioritures comme tous les autres modules JMP intégrés, vous savez. Par exemple, lorsque vous mettez une variable catégorielle dans la variable de réponse, le type de personnalité ne passe pas automatiquement à la régression logistique. |
| |
Je n'ai pas encore eu le temps de m'en occuper. Il y a beaucoup d'autres choses que je n'ai pas encore eu le temps de faire et que j'espère améliorer avec ce package au fur et à mesure que les gens l'utiliseront et l'apprécieront et me donneront leur avis à ce sujet. |
| |
Il manque donc certaines fonctionnalités. Et ce qui est bien avec le gestionnaire de modules complémentaires, c'est que vous pouvez simplement prendre votre code JSL et il y a un module complémentaire... un gestionnaire de modules complémentaires, un module complémentaire JMP, |
| |
qui vous permet de créer votre propre module complémentaire à partir de votre code JSL, il suffit donc de quelques clics sur un bouton pour prendre votre code JSL et le transformer en un module complémentaire que vous pouvez partager avec toute la communauté JMP. |
| |
Et j'ai posté ceci sur le site Web community.jmp.com pour que tout le monde puisse y accéder et accéder à ce module complémentaire que je suis sur le point de vous montrer. |
| |
et pour accéder à l'ensemble de données que je vais également utiliser. Mais cela fonctionnera avec n'importe lequel de vos ensembles de données, pas seulement avec mon exemple. |
| |
Je vais donc vous donner un tutoriel en direct très rapide sur ce module complémentaire, appelé... le module complémentaire, je l'ai simplement appelé exploration des interactions, et |
| |
tout cela va être fait via l'algorithme de solution faisable dont j'ai parlé plus tôt. L'exemple est un modèle linéaire |
| |
où je vais fixer deux variables, ce qui constituera mon modèle de base. Mon modèle de base aura une variable de réponse continue et deux covariantes que je souhaite pouvoir ajuster. |
| |
Et puis, ce que j'aimerais faire, c'est considérer les interactions de second ordre à ajouter à ce modèle entre l'une des 10 variables que j'ai dans mon ensemble de données. |
| |
Et j'aimerais faire cinq départs aléatoires, et je veux m'assurer que mon critère, et c'est actuellement le seul critère intégré dans le |
| |
Le module complémentaire JMP, c'est que nous voulons minimiser la valeur P de l'interaction. Donc chacune de ces interactions que nous vérifions |
| |
produire une valeur P et ce que je veux faire, c'est que mes solutions soient celles qui ont |
| |
très petites valeurs P. Il va donc rechercher l'espace, en fonction de la valeur P de l'interaction, et aller vers celles qui ont la meilleure. Nos résultats vont donc comporter de nombreuses interactions qui ont de petites valeurs P. Et |
| |
généralement ce que je recommanderai après avoir effectué ce type de procédure, c'est l'algorithme de solution réalisable, |
| |
c'est-à-dire que vous poursuivez en traçant les données, en examinant ces interactions dans votre modèle et en réfléchissant de manière critique à leur sujet dans un sens contextuel, car en fin de compte, nous explorons les données ici. |
| |
Il ne s'agit en aucun cas d'une inférence. Nous utilisons simplement le signal des données pour déterminer les interactions qui peuvent exister dans ces données. |
| |
Et encore une fois, les données et le module complémentaire sont publiés sur le site Web de la communauté. |
| |
Bon, je vais m'arrêter, sortir de là très vite, et je vais remonter le |
| |
Ensemble de données JMP que j'ai. J'espère que vous pourrez voir cela. |
| |
Et comme vous pouvez le voir, juste un aperçu très rapide, il s'agit en fait d'un ensemble de données aléatoires que j'ai générées. Il n'y a pas de structure réelle à tout cela. Ce ne sont pas de vraies données, juste des données générées aléatoirement dans JMP. |
| |
Il y a 20 observations ici. J'ai 10 variables continues, des variables explicatives. |
| |
J'ai une variable de réponse continue et j'ai également catégorisé la variable de réponse comme étant supérieure à zéro ou inférieure à zéro. |
| |
Donc, si vous voulez pouvoir examiner les résultats de la régression logistique, vous pouvez également faire un exemple de régression logistique avec les données. |
| |
Donc, une fois que vous avez obtenu le module complémentaire, allez sur le site Web, téléchargez le module complémentaire, double-cliquez simplement dessus et il s'installe directement sur JMP. C'est vraiment facile. |
| |
Et puis vous pouvez simplement aller ici, donc vous allez dans le module complémentaire, allez... une fois que vous avez ouvert votre ensemble de données, vous allez dans le module complémentaire pour explorer les interactions. |
| |
Et cela va apparaître ici. Nous avons donc plusieurs choses. Nous verrons donc toutes nos variables ici à gauche, comme vous le feriez avec n'importe quel autre module dans JMP. |
| |
Je vais donc choisir ma variable de réponse, qui sera Y, puis je vais la corriger, c'est là que je construis mon modèle de base. Ce sont donc tous les effets principaux linéaires que j'ajoute à mon modèle. Donc, dans celui-ci, j'ai deux variables, |
| |
X1 et X2, que je vais ajouter ici. Maintenant, l'une des choses que vous devez faire est de spécifier le type de modélisation, il y a donc deux types dans mon |
| |
Vous pouvez choisir parmi plusieurs modules complémentaires. L'un est le type de modélisation standard des moindres carrés et l'autre est le type de régression logistique. |
| |
Et cela ne va pas se faire automatiquement, comme je l'ai dit plus tôt, en fonction de ce que vous avez mis ici, donc vous pouvez tout à fait mettre une variable de réponse catégorielle et elle ne va pas changer. Vous devez la changer vous-même. C'est l'une de ces fioritures sophistiquées, j'espère que j'y reviendrai plus tard. |
| |
Débarrassez-vous de ça. Remettez ça ici. |
| |
Très bien, voici donc notre configuration, et cela correspondra donc au modèle y égal à bêta zéro plus bêta un X un plus bêta deux X deux. Et maintenant, c'est ici que je vais mettre les variables que je suis prêt à |
| |
...ou je veux rechercher des interactions entre, donc je vais sélectionner tous les X1 à X10. Je vais les ajouter. |
| |
Et puis je dis ok, combien de fois je veux exécuter l'algorithme ? Donc ici je vais le faire cinq fois, pour gagner du temps, |
| |
et l'ordre des interactions à considérer, donc je ne vais en faire que deux. |
| |
Je recommande de rester à trois ou moins, il devient généralement beaucoup plus difficile d'interpréter les interactions à quatre ou cinq voies, mais |
| |
L'algorithme... ou la façon dont j'ai configuré cela, c'est que vous pouvez aller aussi haut si vous le souhaitez. Je n'ai pas mis de limite en fait, mais sachez simplement que plus vous montez ici, plus il vous faudra de temps pour exécuter cela. |
| |
Je vais donc cliquer sur OK. Cela va prendre une seconde. |
| |
Vous pouvez donc voir le code que j'ai emprunté. |
| |
Vous pouvez le voir apparaître ici et il me dit que j'ai terminé à 20 %, 40 %. |
| |
Voilà donc les solutions. Ainsi, à chaque fois que la vérification est effectuée, une solution réalisable est trouvée, puis ce qui apparaît à la fin est un tableau de données, donc |
| |
vous savez, encore une fois, ce n'est pas l'une de ces fonctionnalités... J'aimerais qu'il y ait une boîte de sélection, où vous pourriez sélectionner l'interaction, puis cliquer sur |
| |
créez un modèle, et il fera tout cela pour vous, tout comme JMP le fait déjà pour beaucoup de choses différentes, mais je n'y suis pas encore arrivé. Cela vous indique simplement quelles étaient les solutions. |
| |
Cela vous donne donc une sorte de résumé de ce qu'il a fait. Il a donc effectué cinq démarrages aléatoires. Il vous indique quelle était la variable de réponse, les variables fixes, |
| |
les variables d'interaction qu'il a trouvées, d'accord, et le R au carré, le R au carré ajusté pour ce modèle, l'erreur quadratique moyenne et ensuite la valeur P de l'interaction. Ok, donc ce que nous pouvons voir ici, c'est que |
| |
(si je clique dessus, cela me montrera) il n'y a que deux solutions, donc il y a... X2 X3 était une interaction et X10 X7 était une autre. |
| |
Et donc maintenant, ce que je peux faire, je ne vais pas le faire maintenant, c'est que je peux aller construire ce modèle et reproduire ces résultats et examiner les résultats pour voir, d'accord, est-ce une bonne statistique |
| |
algorithme... ou une bonne interaction statistique que j'ai trouvée ici ? Vous savez, à quoi ressemblent mes graphiques de levier ? Quels sont tous mes différents critères |
| |
À quoi ressemblent les graphiques ? Et à quoi ressemblent mes graphiques de diagnostic ? Ce genre de choses. Et ensuite, je peux commencer à poser des questions, comme est-ce que cette interaction a du sens en termes d'estimations de paramètres et ainsi de suite ? |
| |
C'est exploratoire, donc cela va vous donner des solutions potentielles, mais vous devez suivre cela avec la diligence raisonnable et réfléchir réellement aux résultats que vous avez obtenus. |
| |
et poser des questions à ceux qui sont des experts contextuels dans ce domaine. C'est généralement ainsi que nous utilisons cela dans les sciences de la santé. Nous utilisons cela avec les données de santé, nous produisons des interactions, puis nous allons voir les médecins pour leur dire si cela a du sens, quel effet cela a, |
| |
vous savez, cela ne serait pas cohérent selon l'âge ou le sexe ou quoi que ce soit. Et ils nous en parlent généralement, vous savez, ils y réfléchissent. L'idée est que cela influencera, espérons-le, les études futures, où nous pourrons alimenter les études pour rechercher ces effets d'interaction de manière plus |
| |
manière bien alimentée. |
| |
Bon, je vais maintenant revenir à mon PowerPoint. Voilà donc ce tutoriel. Vous pouvez voir qu'il est assez facile à utiliser. C'était un tout petit exemple. Vous pouvez l'améliorer, |
| |
sachez simplement que plus les ensembles de données sont volumineux, plus le processus que je viens de faire va prendre du temps. Il ne durera pas 10 secondes, il durera |
| |
vous savez, potentiellement, vous savez, 5 à 10 minutes de long, selon la taille de votre ensemble de données. J'ai fait... utilisé l'algorithme, utilisé le complément pour faire des ensembles de données avec 100 variables, |
| |
variables explicatives, et il a fallu environ ce temps, environ sept minutes, pour l'exécuter et effectuer environ cinq ou dix démarrages aléatoires. |
| |
Les choses sont plus rapides dans le package R que dans le module complémentaire JMP, mais c'est parce que, vous savez, encore une fois, c'est ma première tentative dans ce domaine et, j'espère, à travers des itérations, cela deviendra encore plus rapide et meilleur. |
| |
Parlons donc des améliorations futures. Je souhaite donc permettre aux utilisateurs de pouvoir optimiser ou |
| |
trouver des solutions réalisables en fonction de n'importe quel critère qu'ils souhaitent. Donc s'ils veulent trouver des solutions réalisables en optimisant R au carré ou en optimisant l'AIC ou en optimisant le taux d'erreur de classification, |
| |
Vous savez, dans les modèles de régression logistique, je veux leur permettre de faire cela. Et ce n'est pas si difficile à faire, il suffit d'y aller et de le faire. |
| |
Enregistrez ou sélectionnez automatiquement des personnalités de modélisation en fonction de sélections variables. C'est très simple. Vous entrez un |
| |
variable logistique binaire, vous savez, elle va automatiquement sélectionner la régression logistique pour vous. Je ne pense pas que ce soit très difficile, je pourrais probablement le faire assez rapidement. Je me sens en confiance pour le faire après avoir suivi ce processus de transfert de mon package R. |
| |
Je voudrais améliorer un peu la vitesse. Il y a beaucoup de choses que je pourrais faire pour améliorer la vitesse de ce jeu. |
| |
J'aimerais donc pouvoir faire cela. Un bouton de rappel serait bien. Je ne l'ai pas actuellement. C'est l'une de mes fonctionnalités préférées dans JMP : pouvoir cliquer sur ce bouton de rappel. |
| |
Et puis, j'aimerais pouvoir rationaliser le passage des résultats obtenus avec FSA à la construction d'un modèle. |
| |
vous pouvez déjà le faire, comme lorsque vous faites une sélection directe dans JMP ou Lasso ou n'importe laquelle de ces choses, vous pouvez simplement cliquer sur Créer un modèle et il amène toutes les variables très facilement. |
| |
J'aimerais pouvoir faire cela avec cet algorithme de solution faisable, obtenir simplement ce type de résultats et cliquer simplement sur Créer un modèle et il fait automatiquement tout pour vous |
| |
afin que vous puissiez les explorer et, encore une fois, j'espère, que vous donnerez un bon sens aux interactions que vous avez trouvées. |
| |
Je voudrais donc vous remercier pour ces quelques mots. Tout d'abord, Mark Bailey. Je n'aurais pas pu le faire sans vous. Merci beaucoup pour votre soutien concernant le code JSL. Merci à Ruth |
| |
pour m'avoir simplement mis en contact avec Mark, ainsi que pour être simplement un général, vous savez, |
| |
personne de soutien pour ce projet et je fournis simplement de bons commentaires. Anne et Larry, j'apprécie simplement |
| |
Merci pour votre aide concernant tout ce qui a trait à JMP et à nos relations passées et pour m'avoir encouragé à participer à ce Discovery Summit. C'était vraiment génial et j'ai hâte de rencontrer plus de personnes dans la communauté JMP |
| |
Je vous remercie pour cela. Vous pouvez me contacter de plusieurs manières. Vous pouvez m'envoyer un e-mail à l'adresse e-mail de mon université, vous pouvez me contacter sur Twitter si c'est comme ça que vous aimez faire les choses. |
| |
Et je prévois également de publier ce module complémentaire JMP sur GitHub, ainsi que sur le site Web de la communauté, alors n'hésitez pas à consulter l'un ou l'autre de ces endroits pour les futures mises à jour du module complémentaire. |
| |
Alors oui, merci de m'avoir accueilli et je suis ravi de répondre à vos questions pendant le temps qui nous est imparti, merci. |