So speichern Sie Vorhersageformeln für verschiedene Kategorien, wenn Sie eine nichtlineare Modellanpassung ausführenIch habe ein Skript, das zu einer benutzerdefinierten Formel für ein nichtlineares Modell passt (nicht verfügbar auf Nonlib), der die Schätzungen für die Modellparameter erhält. Ich kann die Formel unter dem roten Dreiecksmenü speichern und Vorhersageformel speichern auswählen, wodurch eine neue Spalte für die neuen Ergebnisse erstellt wird. Ich kann das für jede Kategorie tun.
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 );
Ich versuche jedoch, es für alle Kategorien in der Datentabelle auszuführen, um zu vermeiden, dass es manuell ausgeführt werden muss. Irgendwelche Vorschläge, wie man das macht?
Ich habe versucht, die neue Formel einfach zu veröffentlichen, aber es wird keine Spalte erstellt, wie wenn ich es manuell mache, wie zum Beispiel:
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" );
Ich habe auch versucht, das aufgezeichnete JSL-Skript wie unten zu ändern, leider funktioniert die Formel nicht. Jede Hilfe wird sehr geschätzt.
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 )
);
Betreff: So speichern Sie die Vorhersageformel für verschiedene Kategorien, wenn Sie eine nichtlineare Modellanpassung ausführenGenial! Ich kann glauben, dass ich diese Lösung in der Community verpasst habe. Ich habe alle möglichen Beispiele gesucht. Ich brauchte nur "Speichern", das war alles, was ich brauchte.
Vielen Dank Phil!
Betreff: So speichern Sie die Vorhersageformel für verschiedene Kategorien, wenn Sie eine nichtlineare Modellanpassung ausführenSieht die Lösung aus @txnelson in dieser Beitrag Hilfe? ("Vorhersageformel zurück in Tabelle speichern")
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);
Dabei wird der Befehl „Vorhersageformel speichern“ statt „Vorhersageformel veröffentlichen“ verwendet. Ich denke, das ist es, was Sie tun möchten, und es erfordert kein Pro.
Es gibt Ihnen eine Formelspalte für die Ergebnisvorhersage mit effektiv einem Modell für jede Gruppe:
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) )),
.
)
Betreff: So speichern Sie die Vorhersageformel für verschiedene Kategorien, wenn Sie eine nichtlineare Modellanpassung ausführenHallo Phil,
Nochmals vielen Dank für das Feedback.
Ich werde versuchen, diese Antwort ein wenig näher zu erläutern.
Ja, meine Frage bezieht sich darauf, wie ich die Anpassung eines Modells automatisiere und eine Spalte mit der resultierenden Vorhersageformel für jede Gruppe erzeuge. Es ist nur eine Spalte, die ich erstellen möchte. Die Modellformel befindet sich bereits in einer Spalte für jede Gruppe, und ich möchte dies nur mit den neu geschätzten Parametern replizieren.
Die Idee dahinter ist, dass ich die Ergebnisse für jede Gruppe einzeln melden und die Modellkurve und die experimentellen Daten über den Graph Builder unterschiedlich grafisch darstellen kann.
Ich hoffe, das ist klarer.
Trotzdem bräuchte ich wohl Jump Pro, um das zu können, ist das richtig?
Vielen Dank
Ivo
Betreff: So speichern Sie die Vorhersageformel für verschiedene Kategorien, wenn Sie eine nichtlineare Modellanpassung ausführenDanke für das Feedback Phil.
Ich habe das Skript ausprobiert und Sie haben Recht, es funktioniert nicht, da ich nur das Standard-JMP habe ... leider.
Betreff: So speichern Sie die Vorhersageformel für verschiedene Kategorien, wenn Sie eine nichtlineare Modellanpassung ausführenVoraussageformel veröffentlichen bezieht sich auf die Fähigkeit zum Veröffentlichen im Formeldepot in JMP Pro. Ich erwarte nicht, dass dies funktioniert, wenn Sie Standard-JMP verwenden. Sie können dies überprüfen, indem Sie das Beispielskript aus dem Skriptindex verwenden.
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);
(Übrigens, das habe ich über die Option zum Einfügen von JSL gesagt - viel klarer, nicht wahr?)
Funktioniert es? Es sollte das Formeldepot aufrufen. Auch hier erwarte ich nur, dass es funktioniert, wenn Sie JMP Pro verwenden.
Betreff: So speichern Sie die Vorhersageformel für verschiedene Kategorien, wenn Sie eine nichtlineare Modellanpassung ausführenHi,
Nur ein paar Tipps, um Menschen zu helfen, Ihnen bei Ihren Herausforderungen zu helfen.
Zunächst einmal wäre es hilfreich, wenn Sie die JSL-Option verwenden könnten, wenn Sie Skriptfragen stellen. Sie müssen nur auf in der Symbolleiste über dem Posting-Fenster klicken und dort Ihre JSL hinzufügen. Viel klarer für die Leute, um Ihre JSL zu verstehen und Ihnen zu helfen.
Zweitens gibt es hier eine komplexe nichtlineare Modellanpassung, aber Ihre Frage bezieht sich wirklich darauf, wie Sie die Anpassung eines Modells automatisieren und die Vorhersageformelspalte für jede Gruppe generieren. Es ist einfacher für die Leute zu helfen, wenn Sie ein einfacheres Beispiel liefern, das den speziellen Teil des Problems demonstriert, den Sie zu lösen versuchen. Es wird es auch für andere Community-Mitglieder zugänglicher machen, zu verstehen, ob dies ihnen eine Lösung für ihr Problem bietet. Ein Beispiel mit dem klassischen Beispieldatensatz Big Class ist immer gut. In Ihrem Fall denke ich, dass die Anpassung eines einfachen Modells für jede Gruppe von Sex in Big Class ausreichen könnte, um Ihre Herausforderung zu demonstrieren. Oder vielleicht ist es komplexer als das. Ich bin mir nicht sicher, weil die von Ihnen bereitgestellten Informationen etwas unklar sind.
Schließlich könnte es hilfreich sein, wenn Sie ein wenig erklären können, was Sie letztendlich erreichen möchten. Warum möchten Sie Formelspalten für jede Gruppe erstellen? Möglicherweise gibt es andere, bessere Wege, um Ihr Ziel zu erreichen.
Ich denke, wenn Sie diesen Schritten folgen, sollten Sie feststellen, dass Sie mehr Hilfe bei den Fragen erhalten, die Sie posten.
Grüße,
Phil