Ceci est le troisième d'une série d'articles sur la façon d'adapter des fonctions continues par morceaux aux ensembles de données. Je commencerai chaque article par des liens vers tous les autres articles de la série. Elles sont:
Sur la partie 3...
introduction
Si vous avez suivi mes précédents articles de cette série, vous savez que nous avons maintenant développé des équations contenant 10 paramètres inconnus qui doivent être déterminés afin de s'adapter au mieux aux éléments de l'exemple de problème. Comment faisons-nous cela dans JMP ?
Tout d'abord, nous devons utiliser l'éditeur de formules de JMP pour saisir nos équations et paramètres inconnus. Je suppose que le lecteur est généralement familier avec l'éditeur de formules. (Si non, voici un courte vidéo sur la création de formules et un vidéo plus longue avec beaucoup plus de détails sur l'éditeur de formule .)
Configuration des paramètres dans l'éditeur de formules de JMP
Ce que vous ignorez peut-être, c'est la capacité de l'éditeur de formule à configurer des paramètres. Les paramètres sont des variables locales à la formule que vous créez. Ils sont accessibles via les menus déroulants (la valeur par défaut est Variables de table, basculez vers Paramètres comme illustré à la Figure 1.)
Figure 1 : Accès aux paramètres dans l'éditeur de formule
Cela ouvre une option pour ajouter un "Nouveau paramètre" à la formule. Faisons un exemple simple et ajoutons un paramètre appelé "a0" à la liste des paramètres. Cliquez sur Nouveau paramètre, puis changez le nom du paramètre en "a0", et donnez-lui une valeur de 1 :
Figure 2 : Créer un nouveau paramètre et lui donner une valeur initiale
- "Nom" est arbitraire. Vous pouvez choisir n'importe quel nom de variable JSL valide.
- "Valeur" est la valeur de départ pour ce paramètre. Vous devez donner une valeur de départ. Parfois (selon la formule que vous avez choisie), la valeur de départ peut être importante, et doit être sélectionnée pour être proche de la valeur réelle comme vous pouvez le deviner. (Cela permet d'éviter les problèmes de convergence plus tard.) Dans ce cas, je n'ai aucune idée de la valeur, je vais donc choisir arbitrairement une valeur de départ de 1.
Nous pouvons maintenant utiliser ce nouveau paramètre "a0" dans une formule, comme s'il s'agissait d'une variable de colonne. Ajoutons-le simplement aux valeurs de la colonne intitulée "y". Double-cliquez sur a0 dans la liste des paramètres (il devrait apparaître dans le panneau Formule), puis tapez "+", puis double-cliquez sur "y" dans la liste des colonnes. Cela devrait donner la formule suivante :
Figure 3 : Utilisation d'un paramètre dans une formule
Maintenant, lorsque nous cliquons sur OK et regardons le résultat dans le tableau de données, nous avons
Figure 4 : Résultats de l'utilisation d'un paramètre dans une formule
Ainsi, la formule reconnaît maintenant la valeur actuelle du paramètre a0 et l'applique en conséquence. Ce concept important sera utilisé dans le prochain article de blog lorsque nous utiliserons la plate-forme non linéaire JMP pour résoudre les paramètres inconnus.
Saisie des paramètres pour les fonctions par morceaux
Dans la partie 2 de cette série de blogs, nous avons développé les cinq polynômes simples à appliquer entre les points d'arrêt dans l'exemple de série de données. Ces polynômes avaient six paramètres inconnus : a0, b1, b2, c1, d1 et d2. Nous avions également quatre points de coupure définissant les régions où les polynômes étaient actifs : X1, X2, X3 et X4. Nous devons ajouter chacun de ces paramètres à notre liste de paramètres de formule, ainsi que des valeurs de départ raisonnables. Une fois terminée, la liste des paramètres ressemble à ceci :
Figure 5 : Les dix paramètres entrés et initialisés pour notre exemple par morceaux
Notez que j'ai supposé des valeurs de départ de "1" pour chacun des coefficients des polynômes. Pour les points d'arrêt X1 à X4, j'ai choisi d'estimer les valeurs en fonction du « global oculaire » là où je pensais qu'elles pourraient se produire. Cela donne simplement à JMP un meilleur endroit pour commencer à rechercher les points d'arrêt.
Saisie des formules par morceaux - y compris une astuce booléenne !
Vous savez maintenant comment configurer les paramètres dans l'éditeur de formules et comment saisir l'une des cinq équations par morceaux présentées dans la partie 2 dans l'éditeur de formules. Mais comment entrons-nous TOUTES LES CINQ équations par morceaux dans la même formule ?
Une façon consiste à utiliser une grande instruction IF, par exemple "Si x @PatrickGiuliano , qui a publié une astuce utile dans un précédent fil de discussion de la communauté JMP.
JMP reconnaît les opérateurs booléens (Et, Ou, Ni, etc.). Si un opérateur booléen est utilisé dans une formule, la logique booléenne renvoie un 1 si vrai et un 0 si faux. Nous pouvons donc configurer un opérateur tel que (X1<:x & :x<=X2). Cet opérateur renvoie un 1 si la valeur de la colonne "x" (appelée ":x" dans l'expression) est comprise entre les paramètres X1 et X2, et 0 sinon. Nous pourrions donc simplement multiplier l'équation par morceaux pour le segment X1-X2 par l'expression booléenne ci-dessus. Si la valeur de x est dans la plage appropriée, alors l'équation de segment est activée. Sinon, on retourne 0. Nous ferions alors la même chose pour toutes les autres plages et additionnerions toutes les équations ensemble.
Si nous faisons tout cela, nous nous retrouvons avec une formule qui ressemble à ceci :
Figure 6 : Formule complète par morceaux (affichée en mode Éditeur de formule)
Et ci-dessous se trouvent les mêmes informations au format d'entrée JSL, si vous préférez :
Figure 7 : Formule complète par morceaux (affichée en mode JSL)
Donc pour résumer, dans les figures 6 et 7, nous avons essentiellement construit une formule dans une nouvelle colonne (appelée ypred) qui :
- Définit 10 paramètres inconnus (et étant donné à chaque paramètre une valeur de départ appropriée) qui seront utilisés dans la formule.
- Décrit quatre équations par morceaux, chacune utilisant ses paramètres appropriés.
- Active chaque équation par morceaux en multipliant par une inégalité booléenne appropriée qui décrit les plages de chaque équation.
- Additionne les quatre équations pour donner la formule finale.
Plutôt cool...
Suivant dans la série
La prochaine fois, nous utiliserons enfin les équations avec la plate-forme non linéaire pour trouver les meilleurs paramètres d'ajustement. Nous discuterons également des choix de critères et d'algorithmes de convergence.
Bonjour @JerryFish , j'ai vraiment apprécié ces articles de blog jusqu'à présent !Pour quelqu'un qui ne fait pas d'optimisation des paramètres tous les jours, il est bon d'avoir cette ressource à pointer afin d'obtenir un rappel sur la façon de le faire et comment gérer des cas plus avancés comme l'ajustement non linéaire par morceaux couvert ici.
Question rapide associée à ce message : si je voulais générer des données simulées qui produisaient une tendance progressivement croissante (ou décroissante) au fil du "temps" (nous pouvons utiliser l'ordre des lignes pour plus de simplicité), comment puis-je paramétrer cela dans JMP ? (Ou existe-t-il un moyen plus simple sans utiliser la paramétrisation du modèle, par exemple avec une combinaison de formules de colonnes instantanées ?).
Merci!@PatrickGiuliano