So speichern Sie Vorhersageformeln für verschiedene Kategorien, wenn Sie eine nichtlineare Modellanpassung ausführenIch habe ein Skript, das eine benutzerdefinierte Formel für ein nichtlineares Modell anpasst (nicht verfügbar auf Nonlib), das die Schätzungen für die Modellparameter erhält. Ich kann die Formel im roten Dreiecksmenü speichern und Vorhersageformel speichern auswählen, wodurch eine neue Spalte für die neuen Ergebnisse erstellt wird. Ich kann dies 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 zum Laufen zu bringen, um es nicht manuell tun zu müssen. Irgendwelche Vorschläge, wie das geht?
Ich habe versucht, die neue Formel einfach zu veröffentlichen, aber es wird keine Spalte erstellt wie bei der manuellen Ausführung, z. B.:
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 von JSL aufgezeichnete Skript wie folgt 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 die nichtlineare Modellanpassung ausführenEindrucksvoll! Ich kann glauben, dass mir diese Lösung in der Community entgangen ist. Ich habe nach allen möglichen Beispielen 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 die nichtlineare Modellanpassung ausführenGeht die Lösung aus @txnelson In dieser Beitrag helfen? („Vorhersageformel zurück in die 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“ anstelle der „Vorhersageformel veröffentlichen“ verwendet. Ich denke, das ist es, was Sie tun möchten und dafür ist kein Pro erforderlich.
Sie erhalten eine Formelspalte für die Ergebnisvorhersage mit praktisch 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 die nichtlineare Modellanpassung ausführenHallo Phil,
Nochmals vielen Dank für das Feedback.
Ich werde versuchen, diese Antwort etwas näher zu erläutern.
Ja, meine Frage betrifft, 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 sie nur mit den neuen geschätzten Parametern replizieren.
Die Idee dabei ist, dass ich die Ergebnisse für jede Gruppe einzeln melden kann und die Modellkurve und die experimentellen Daten über den Graph Builder grafisch unterschiedlich darstellen kann.
Ich hoffe, das ist klarer.
Dennoch scheint es so, als würde ich Jump Pro benötigen, um das zu können, oder?
Danke
Ivo
Betreff: So speichern Sie die Vorhersageformel für verschiedene Kategorien, wenn Sie die 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 die nichtlineare Modellanpassung ausführen„Vorhersageformel veröffentlichen“ bezieht sich auf die Möglichkeit, im Formeldepot in JMP Pro zu veröffentlichen. Ich erwarte nicht, dass dies funktioniert, wenn Sie Standard-JMP verwenden. Sie können dies anhand des Beispielskripts aus dem Scripting Index überprüfen.
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 habe ich das über die Option „JSL einfügen“ gesagt – viel klarer, nicht wahr?)
Funktioniert es? Es sollte das Formeldepot aufrufen. Auch hier erwarte ich, dass es nur funktioniert, wenn Sie JMP Pro verwenden.
Betreff: So speichern Sie die Vorhersageformel für verschiedene Kategorien, wenn Sie die nichtlineare Modellanpassung ausführenHallo,
Nur ein paar Tipps, die Menschen dabei helfen sollen, Ihnen bei Ihren Herausforderungen zu helfen.
Zunächst wäre es hilfreich, wenn Sie beim Posten von Skriptfragen die JSL-Option verwenden könnten. Sie müssen lediglich in der Symbolleiste über dem Posting-Fenster auf klicken und dort Ihre JSL hinzufügen. Für die Leute ist es viel klarer, Ihre JSL zu verstehen und Ihnen zu helfen.
Zweitens gibt es hier eine komplexe nichtlineare Modellanpassung, aber bei Ihrer Frage geht es eigentlich darum, wie Sie die Anpassung eines Modells und die Generierung der Vorhersageformelspalte für jede Gruppe automatisieren. Es ist für die Menschen einfacher zu helfen, wenn Sie ein einfacheres Beispiel liefern, das den besonderen Teil des Problems veranschaulicht, den Sie angehen möchten. Dadurch wird es auch für andere Community-Mitglieder einfacher zu verstehen, ob sie dadurch eine Lösung für ihr Problem finden. Ein Beispiel mit dem klassischen Big-Class-Beispieldatensatz 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 veranschaulichen. Oder vielleicht ist es komplexer. Ich bin mir nicht sicher, da die von Ihnen bereitgestellten Informationen etwas unklar sind.
Abschließend könnte es hilfreich sein, wenn Sie ein wenig erklären können, was Sie letztendlich erreichen möchten. Warum möchten Sie für jede Gruppe formale Spalten erstellen? Möglicherweise gibt es andere, bessere Möglichkeiten, Ihr Ziel zu erreichen.
Ich denke, wenn Sie diese Schritte befolgen, werden Sie feststellen, dass Sie bei den von Ihnen geposteten Fragen mehr Hilfe erhalten.
Grüße,
Phil