So erhalten Sie die halb ausgewertete Form einer VorhersagegleichungIch verwende das Anpassungsmodell, um eine Regressionsgleichung für die Zeit und eine Reihe zusätzlicher Faktoren zu erstellen. Das Endziel besteht darin, eine Tabelle in einem Journal zu erstellen, in der die Vorhersagegleichung für alle zusätzlichen Faktoren ausgewertet wird und die reine Achsenabschnittsgleichung + Steigung * zeitbasierte Gleichung angezeigt wird. Beispiel:
dt = Open("$SAMPLE_DATA\Powder Metallurgy.jmp");
fm = dt << Fit Model(
Y( :Shrinkage ),
Effects(
:Formation Method, :Compaction Method, :Sintering Time
),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" ),
Run()
);
PredForm = Arg(Arg((FM << GetPredictionFormula), 3),1);Daraus ergibt sich die Gleichung:
0.942161598883733 + Match( :Formation Method,
"Die", 0.0407171588498178,
"Extrusion", 0.0256123252434345,
"Isostatic", -0.0663294840932524,
.
) + Match( :Compaction Method,
"Cold", 0.594574663098895,
"Warm", -0.594574663098895,
.
) + -0.0742413463542265 * :Sintering Time
Anschließend können wir eine Tabelle mit den zusätzlichen Faktoren erstellen:
dtEquations = dt << Summary(
Group( :Formation Method, :Compaction Method ),
Freq( "None" ),
Weight( "None" )
);
dtEquations << DeleteColumns(:N Rows);
Und wie schreibe ich die Gleichung in eine neue Spalte, in der die (in diesem Beispiel) ersten beiden Spalten betrachtet und die Match-Anweisungen vereinfacht ausgewertet werden, die Gleichung jedoch für die Zeit übrig bleibt? Endziel:

Noch besser, wenn alle statischen Koeffizienten auf eins reduziert werden.
Das Ganze muss für mehrere zusätzliche Faktorstufen dynamisch sein, und die Gleichung könnte eine gemeinsame Steigung, einen gemeinsamen Achsenabschnitt oder unterschiedliche Steigungen und/oder unterschiedliche Achsenabschnitte haben.
Automatisierung und SkripterstellungBetreff: So erhalten Sie die halb ausgewertete Form einer VorhersagegleichungDies wird höchstwahrscheinlich eine ganze Reihe von Änderungen erfordern, aber eine Möglichkeit wäre die Verwendung von Extract Expr
Names Default To Here(1);
dt = Open("$SAMPLE_DATA\Powder Metallurgy.jmp");
fm = dt << Fit Model(
Y(:Shrinkage),
Effects(:Formation Method, :Compaction Method, :Sintering Time),
Personality("Standard Least Squares"),
Emphasis("Effect Leverage"),
Run()
);
dtEquations = dt << Summary(Group(:Formation Method, :Compaction Method), Freq("None"), Weight("None"));
dtEquations << New Column("Sintering Time", Character, Continuous, << Set Each Value(
PredForm = Arg(Arg((FM << GetPredictionFormula), 3), 1);
PredForm = Substitute(Name Expr(PredForm), Extract Expr(PredForm, Match(Wild List())), Eval(Extract Expr(PredForm, Match(Wild List()))));
PredForm = Substitute(Name Expr(PredForm), Extract Expr(PredForm, Match(Wild List())), Eval(Extract Expr(PredForm, Match(Wild List()))));
Char(Name Expr(PredForm));
));
Betreff: So erhalten Sie die halb ausgewertete Form einer Vorhersagegleichung@jthi genial, danke!
Ich habe dem letzten Block einen Vereinfachungsausdruck hinzugefügt, um alle Koeffizienten auf einen zu reduzieren, aber ansonsten war die Lösung perfekt.
dtEquations << New Column("Sintering Time", Character, Continuous, << Set Each Value(
PredForm = Arg(Arg((FM << GetPredictionFormula), 3), 1);
PredForm = Substitute( Name Expr( PredForm ),
Extract Expr( PredForm, Match( Wild List() ) ), Eval( Extract Expr( PredForm, Match( Wild List() ) ) )
);
PredForm = Substitute( Name Expr( PredForm ),
Extract Expr( PredForm, Match( Wild List() ) ), Eval( Extract Expr( PredForm, Match( Wild List() ) ) )
);
Char(Simplify Expr(Name Expr(PredForm)));
));Betreff: So erhalten Sie die halb ausgewertete Form einer VorhersagegleichungDas ist eine raffinierte, tolle Frage @pauldeen und tolle Lösung @jthi !