JSL - Save Best TransformationHallo,
Ich führe das folgende Skript aus und wird nach der Generierung der Box-Cox-Gliederungsbox angehalten. Was ich dann mache, ist manuell "Save Best Transformation" im Umrissfeld "Box Cox Transformation" zu speichern. Meine Frage: Gibt es eine Möglichkeit, die 'Save Best Transformation' über JSL zu automatisieren, um mit dem Skript weitere Elemente zu transformieren? danke zu helfen
-Rgsd, Joel
Protokoll löschen();
dtName = "Große Klasse";
dt = Open ("$ SAMPLE_DATA /" || dtName || ".jmp");
nwd = Neues Fenster ("Box Cox")
dt << Fit Model (
Y (: Gewicht),
Auswirkungen,
Persönlichkeit ("Standard Least Squares"),
Betonung ("Effect Leverage"),
Lauf(
: weight << {Zusammenfassung der Passung (1), Varianzanalyse (1), Parameterschätzungen (1), Fehlende Passung (0), Diagramm tatsächlich nach vorhergesagtem (1)
Plot-Regression (0), Plot-Residuum durch Vorhersagen (1), Plot-Effekt-Hebel (1), Box Cox Y-Transformation (1),
beste Transformation speichern (1)}
)
)
);
Re: JSL - Save Best TransformationZu Ihrer Information, hier ist eine Alternative, bei der Sie keine Zeichenfolge erstellen müssen. Auf diese Weise bleibt die Syntaxprüfung und -hervorhebung im Editor erhalten. Wenn Sie so viele Fehler machen wie ich, ist das nützlich.
NamesDefaultToHere(1);
dtName = "Big Class";
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
numericCols = dt << getColumnNames("String", "Numeric");
// Build a function to do what's needed . . .
getBestBoxCox =
Function({numCol}, {Default Local},
// Open the fit model lauch dialog
fmDialog = dt << Fit Model(
Y( Eval(numCol) ),
Effects,
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" )
);
// Run the desired model ('fmAnalysis' is a reference to the analysis layer of the report window)
fmAnalysis = fmDialog << runModel;
// Close the launch dialog
Report(fmDialog) << closeWindow;
// Ask for the transformations
fmAnalysis << Box Cox Y Transformation;
// Get a reference to the little red triangle for the transformations
lrt = Report(fmAnalysis)["Box-Cox Transformations"] << getScriptableObject;
// Save the best transformation
lrt << saveBestTransformation;
// Close the report window
Report(fmAnalysis) << closeWindow;
);
// Use the function on the required columns . . .
for(c=1, c<=NItems(numericCols), c++, getBestBoxCox(numericCols[c]));
Re: JSL - Save Best TransformationHallo stephen_pearson,
Genau das, was ich brauche 'Box Cox Y Transformation (1, Save Best Transformation (1))'. Ja, ich führe mehrere Auswahlmöglichkeiten für diese Option aus und verarbeitet sie jetzt ohne manuelle Eingriffe. Vielen DankRe: JSL - Save Best TransformationWenn Sie den in JSL freigegebenen Code als Zeichenfolge erstellen und alle Spaltennamen haben, die Sie als Liste umwandeln möchten ( colListYBoxCox ) Dann können Sie die Spaltennamen ersetzen und alle Spalten in Ihrer Liste durchlaufen (Beispiel unten).
Ich habe dies getan und dann geprüft, ob die Box-Cox-Transformation einen großen Unterschied gemacht hat, und diejenigen, die Zeitverschwendung waren, automatisch gelöscht.
Grüße,
Stephen
Für (i = 1, i <= N Items (colListYBoxCox), i ++,
boxcoxstring = "boxcoxwindow = Fit Model (
Y (";
boxcoxstring = Concat (boxcoxstring, ": Name (\!" ", colListYBoxCox [i]," \! "),");
Boxcoxstring = Concat (Boxcoxstring, "),");
Boxcoxstring = Concat (
boxcoxstring,
"Auswirkungen,
Persönlichkeit (\! "Standard Least Squares \!"),
Betonung (\! "Effekt-Hebel \!"), "
);
Boxcoxstring = Concat (
boxcoxstring,
"Ausführen (: Name (\!"),
colListYBoxCox [i],
"\!") << {Mangel an Passform (0), Plot Actual von Predicted (0),
Plot Regression (0)
Plot-Effekt-Hebel (0), Box Cox Y-Transformation (1, Save Best Transformation (1)), VIF anzeigen (1)},
) "
);
Boxcoxstring = Concat (Boxcoxstring, ");" );
Eval (Parse (Boxcoxstring));
Warten (0);
Kastenfenster << Fenster schließen;
);