Comment enregistrer la formule de prédiction pour différentes catégories lors de l'exécution d'un 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 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 de la table de données pour éviter d'avoir à le faire manuellement. Une suggestion sur la façon de faire cela?
J'ai essayé de publier simplement 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 d'un ajustement de modèle non linéaireImpressionnant! Je peux croire que j'ai raté cette solution dans la communauté. J'ai cherché toutes sortes d'exemples. Seulement 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 d'un ajustement de modèle non linéaireLa solution de @txnelson dans ce post aider? ("Enregistrer la formule de prédiction dans le tableau")
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 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 formule de prédiction de résultat 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 d'un 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 colonne que je veux créer. La formule du modèle est déjà dans une colonne pour chaque groupe et je veux juste la reproduire avec les nouveaux paramètres qui ont été 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 le faire, n'est-ce pas ?
Merci
Ivo
Re : Comment enregistrer la formule de prédiction pour différentes catégories lors de l'exécution d'un ajustement de modèle non linéaireMerci pour le retour Phil.
J'ai essayé le script et vous avez raison, cela 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 d'un ajustement de modèle non linéaireLa publication de la formule de prédiction concerne la possibilité de publier dans 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 du Scripting Index.
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);
(Au fait, c'est ce que je disais à propos de l'option insert JSL - beaucoup plus clair, 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 d'un ajustement de modèle non linéaireSalut,
Quelques conseils pour aider les gens à vous aider à relever vos défis.
Tout d'abord, cela aiderait si vous pouviez utiliser l'option JSL lorsque vous postez 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 ajustement de modèle non linéaire complexe, mais votre question porte vraiment sur 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 d'aider si vous fournissez un exemple plus simple qui illustre 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'ensemble de données d'échantillons Big Class classique 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 est-ce plus complexe que cela. Je ne suis pas sûr parce que les informations que vous avez fournies ne sont pas claires.
Enfin, cela pourrait aider si vous pouviez expliquer un peu ce que vous essayez finalement d'accomplir. Pourquoi voulez-vous créer des colonnes de formule pour chaque groupe ? Il pourrait y avoir d'autres moyens plus efficaces d'atteindre votre objectif.
Je pense que si vous suivez ces étapes, vous devriez trouver que vous obtiendrez plus d'aide avec les requêtes que vous postez.
Salutations,
Phil