Ich weiß nicht, ob dies SAS IP ist oder nicht, aber wenn nicht, hat jemand eine Funktion zum Umwandeln von Parameterschätzungen (für jeden Datentyp / Modellierungstyp / Modell) in die von JMP verwendete Vorhersageformel.
Ich kann die normale "Get Prediction Formula" nicht verwenden, weil ... Gründe dafür.
Ich würde gerne so etwas machen. Die Art des Modells ist mir nicht so wichtig. Wenn dies jedoch für die Berechnung der Fall ist, beginnen wir einfach.
Names Default to Here (1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Clear Select();
r = dt << Select Rows( 28::40 );
r << Hide and Exclude;
dt << Clear Select();
dt:sex[[3, 6, 9, 12, 27]] = "G";
fm = dt << Fit Model(
Y( :height ),
Effects( :age[:sex], :sex, :weight, :sex * :weight, :age * :weight[:sex] ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
Run( Fit( Estimation Method( Lasso ), Validation Method( AICc ) ) )
);
pred = fm << (fit[1] << Get Prediction Formula);
// what I want
prediction_from_estimates = function({fm},
{DEFAULT LOCAL},
olb = report(fm)[OutlineBox("Parameter Estimates?")];
terms = olb[StringColBox("Term")] << Get;
est = olb[NumberColBox("Estimate")] << Get;
// do some stuff
return(prediction_formula)
);
// and I'd like it to be able to do
other_pred = prediction_from_estimates(fm);
nameexpr(pred) == nameexpr(other_pred); // true
Ich würde auch alle Referenzen zum Lesen nehmen.
Hast du es versucht
fd= fm << publish prediction formula;
formula_function= fd << copy formula as function;
formula_transform = fd << copy formula as transform;
formula_sas = fd << generate sas code(No Editor);
formula_python = fd << generate python code(No Editor);
formula_c= fd << generate C Code(No Editor);
formula_java = fd << generate JavaScript Code(No Editor);
?
Es ist nicht so, dass ich die nativen Werte nicht verwenden kann. Ich habe eine Tabelle mit Parameterwerten aus einer Simulationstabelle und versuche, diese zu mitteln und darauf basierend eine Vorhersageformel zu erstellen. Ich könnte die Vorhersageformel speichern und dann einen Ersatz machen, aber das scheint sehr fehleranfällig zu sein.