Comment enregistrer la formule de prédiction pour différentes catégories lors de l'exécution de l'ajustement de modèle non linéaireJ'ai un script qui correspond à une formule personnalisée pour un modèle non linéaire (non disponible sur Nonlib) qui obtient les estimations des paramètres du modèle. Je peux enregistrer la formule dans le menu du triangle rouge et sélectionner enregistrer la formule de prédiction qui créera une nouvelle colonne pour les nouveaux résultats. Je peux le faire pour chaque catégorie.
New Column( "Fitted Model By Sample",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Property( "By ID", 207957763 ),
Formula(
If( :Sample == "Barley 2710",
If( :Days > 0,
0.171070850115799 * Exp( -Exp( ((0.00826868962267886 * Exp()) / 0.171070850115799) * (8.5626914275992 - :Days) ) )
+0.189197655815188 * Exp( -Exp( ((0.0822175769423173 * Exp()) / 0.189197655815188) * (1.00952608535815 - :Days) ) ),
0
),
.
)
),
Set Property( "Predicting", {:Average, Creator( "Nonlinear" )} ),
Set Selected
);
Set Label Columns( :Label );
Cependant, j'essaie de le faire fonctionner pour toutes les catégories du tableau de données pour éviter d'avoir à le faire manuellement. Une suggestion sur la façon de procéder ?
J'ai essayé de simplement publier la nouvelle formule mais aucune colonne n'est créée comme lorsque je le fais manuellement, par exemple :
obj = Nonlinear( Y( :Average ), X( :Model ), Loss( :Err ), Iteration Limit( 5000 ), By( :Sample ) );
obj << go;
obj << Publish prediction formula;
obj << Set name( "Fitted Model by sample" );
J'ai également essayé de modifier le script enregistré JSL comme ci-dessous, malheureusement la formule ne fonctionne pas. Toute aide est très appréciée.
obj = Nonlinear( Y( :Average ), X( :Model ), Loss( :Err ), Iteration Limit( 5000 ), By( :Sample ) );
obj << go;
//returns a list of vectors where each vector, contains the parameters estimates
obj << get estimates;
obj << get prediction formula;
col11 = New Column( "Fitted Model By Sample",
set formula(
If( :Days > 0,
(Y1_Y1_0 * Exp( -Exp( ((K1_K1_0 * Exp()) / Y1_Y1_0) * (P1_P1_0 - :Days) ) ) + Y2_Y2_0 * Exp(
-Exp( ((K2_K2_0 * Exp()) / Y2_Y2_0) * (P2_P2_0 - :Days) )
)),
0
),
By( :Sample ),
Set Property( "Predicting", {:Average, Creator( "Nonlinear" )} ),
Set Selected
),
Set Label Columns( :Label )
);
Re : Comment enregistrer la formule de prédiction pour différentes catégories lors de l'exécution de l'ajustement de modèle non linéaireGénial! Je peux croire que j'ai raté cette solution dans la communauté. J'ai cherché toutes sortes d'exemples. J'avais juste besoin de "Enregistrer", c'est tout ce dont j'avais besoin.
Merci beaucoup Phil!
Re : Comment enregistrer la formule de prédiction pour différentes catégories lors de l'exécution de l'ajustement de modèle non linéaireLa solution de @txnelson dans ce post aide? ("Enregistrement de la formule de prédiction dans la table")
Names Default To Here( 1 );
dt = Open(
"$SAMPLE_DATA/Nonlinear Examples/Bioassay.jmp"
);
obj = Fit Curve(
Y( :Toxicity ),
X( :log Conc ),
Group( :formulation ),
Fit Logistic 4P
);
obj << (Fit[1] << Save Prediction Formula);
Cela utilise la commande Enregistrer la formule de prédiction plutôt que la commande Publier la formule de prédiction. Je pense que c'est ce que vous voulez faire et cela ne nécessite pas Pro.
Il vous donne une colonne de formules de prédiction des résultats avec, en fait, un modèle pour chaque groupe :
Match( :Formulation,
"standard",
0.599015186864584 + (1.10686367677145 - 0.599015186864584) / (1
+Exp( -5.84379312234502 * (:log Conc - 0.32019959502239) )),
"test A",
0.590902329849433 + (1.1012080930316 - 0.590902329849433) / (1
+Exp( -5.98069280093278 * (:log Conc - 0.284551221955609) )),
"test B",
0.592984828033858 + (1.0972015134296 - 0.592984828033858) / (1
+Exp( -5.75586785289505 * (:log Conc - 0.084429442746212) )),
"test C",
0.593403681513877 + (1.10597929999838 - 0.593403681513877) / (1
+Exp( -6.00992746207644 * (:log Conc - 0.298749145989595) )),
.
)
Re : Comment enregistrer la formule de prédiction pour différentes catégories lors de l'exécution de l'ajustement de modèle non linéaireSalut Phil,
Merci encore pour les commentaires.
Je vais essayer d'expliquer un peu plus cette réponse.
Oui, ma question concerne la façon dont j'automatise l'ajustement d'un modèle et génère une colonne avec la formule de prédiction résultante pour chaque groupe. Ce n'est qu'une seule colonne que je souhaite créer. La formule du modèle est déjà dans une colonne pour chaque groupe et je souhaite simplement la reproduire avec les nouveaux paramètres estimés.
L'idée de faire cela est juste pour que je puisse rapporter les résultats pour chaque groupe individuellement ainsi que pour pouvoir représenter graphiquement la courbe du modèle et les données expérimentales différemment via le générateur de graphiques.
J'espère que c'est plus clair.
Néanmoins, il semble que j'aurais besoin de Jump Pro pour pouvoir faire cela, n'est-ce pas ?
Merci
Ivo
Re : Comment enregistrer la formule de prédiction pour différentes catégories lors de l'exécution de l'ajustement de modèle non linéaireMerci pour le retour Phil.
J'ai essayé le script et vous avez raison, il ne fonctionne pas car je n'ai que le JMP standard... malheureusement.
Re : Comment enregistrer la formule de prédiction pour différentes catégories lors de l'exécution de l'ajustement de modèle non linéaireLa publication d'une formule de prédiction concerne la possibilité de publier sur Formula Depot dans JMP Pro. Je ne m'attends pas à ce que cela fonctionne si vous utilisez JMP standard. Vous pouvez vérifier en utilisant l'exemple de script de l'index de script.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Boston Housing.jmp" );
obj = K Nearest Neighbors(
Y( :mvalue ),
X(
:crim,
:zn,
:indus,
:chas,
:nox,
:rooms,
:age,
:distance,
:radial,
:tax,
:pt,
:b,
:lstat
),
K( 10 )
);
obj << (Response[1] << Publish Prediction Formula);
(BTW, c'est ce que je disais à propos de l'option insert JSL - beaucoup plus claire, n'est-ce pas ?)
Est-ce que ça marche ? Cela devrait faire apparaître le Formula Depot. Encore une fois, je m'attends à ce que cela fonctionne uniquement si vous utilisez JMP Pro.
Re : Comment enregistrer la formule de prédiction pour différentes catégories lors de l'exécution de l'ajustement de modèle non linéaireSalut,
Juste quelques conseils pour aider les gens à vous aider à relever vos défis.
Tout d'abord, il serait utile que vous puissiez utiliser l'option JSL lorsque vous publiez des questions de script. Il vous suffit de cliquer sur dans la barre d'outils au-dessus de la fenêtre de publication et d'y ajouter votre JSL. Beaucoup plus clair pour que les gens comprennent votre JSL et vous aident.
Deuxièmement, il existe ici un modèle non linéaire complexe, mais votre question concerne réellement la façon dont vous automatisez l'ajustement d'un modèle et la génération de la colonne de formule de prédiction pour chaque groupe. Il sera plus facile pour les gens de vous aider si vous fournissez un exemple plus simple qui démontre la partie particulière du problème que vous essayez de résoudre. Cela permettra également aux autres membres de la communauté de comprendre plus facilement si cela leur apporte une solution à leur problème. Un exemple utilisant l’exemple d’ensemble de données classique Big Class est toujours bon. Dans votre cas, je pense qu'adapter un modèle simple pour chaque groupe de Sex in Big Class pourrait suffire à démontrer votre défi. Ou peut-être que c'est plus complexe que ça. Je n'en suis pas sûr car les informations que vous avez fournies sont un peu floues.
Enfin, il pourrait être utile que vous expliquiez un peu ce que vous essayez d’accomplir en fin de compte. Pourquoi souhaitez-vous créer des colonnes de formule pour chaque groupe ? Il existe peut-être d’autres moyens, meilleurs, d’atteindre votre objectif.
Je pense que si vous suivez ces étapes, vous devriez constater que vous obtiendrez plus d'aide avec les requêtes que vous publiez.
Salutations,
Phil