JSL - Enregistrer la meilleure transformationSalut,
J'exécute le script ci-dessous et il s'arrêtera après la génération de box-cox. Ce que je fais est alors de manuellement "Enregistrer la meilleure transformation" dans la boîte "Transformation Box Cox". Ma question: Existe-t-il un moyen d'automatiser «Enregistrer la meilleure transformation» via JSL pour poursuivre le script sur davantage d'éléments à transformer? merci d'aider
-Rgsd, Joel
Effacer le journal ();
dtName = "Big Class";
dt = Open ("$ SAMPLE_DATA /" || dtName || ".jmp");
nwd = New Window ("Box Cox",
dt << Fit Model (
Y (: poids),
Effets,
Personnalité ("moindres carrés standard"),
Emphase ("effet de levier"),
Courir(
: weight << {Résumé de l'ajustement (1), Analyse de la variance (1), Estimations des paramètres (1), Manque d'ajustement (0), Parcelle réelle par prévision (1),
Régression de tracé (0), résidu de tracé par prédiction prédite (1), effet de levier d’effet de tracé (1), transformation de Box Cox Y (1),
enregistrer la meilleure transformation (1)}
)
)
)
Re: JSL - Enregistrer la meilleure transformationPour votre information, voici une alternative qui ne vous oblige pas à créer une chaîne. De cette façon, la vérification de syntaxe et la mise en surbrillance dans l'éditeur sont conservées. Si vous faites autant d'erreurs que moi, c'est utile.
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 - Enregistrer la meilleure transformationSalut stephen_pearson,
Exactement ce dont j'ai besoin 'Transformation Box Cox Y (1, Enregistrer la meilleure transformation (1))'. Oui, je suis soumis à plusieurs sélections pour cette option et son traitement est maintenant sans intervention manuelle. MerciRe: JSL - Enregistrer la meilleure transformationSi vous créez le code que vous avez partagé dans JSL en tant que chaîne et que vous avez tous les noms de colonne que vous souhaitez transformer en liste ( colListYBoxCox ) vous pouvez alors substituer les noms des colonnes et les parcourir toutes les colonnes de votre liste (exemple ci-dessous).
Je l'ai fait, puis vérifié si la transformation box-cox faisait une grande différence et automatiquement supprimé celles qui étaient une perte de temps.
Cordialement,
Stephen
Pour (i = 1, i <= N éléments (colListYBoxCox), i ++,
boxcoxstring = "boxcoxwindow = Ajuster le modèle (
Y (";
boxcoxstring = Concat (boxcoxstring, ": Nom (\!" ", colListYBoxCox [i]," \! "),");
boxcoxstring = concat (boxcoxstring, "),");
boxcoxstring = Concat (
boxcoxstring,
"Effets,
Personnalité (\! "Standard des moindres carrés \!"),
Emphase (\! "Effet de levier \!"), "
)
boxcoxstring = Concat (
boxcoxstring,
"Exécuter (: Nom (\!" "",
colListYBoxCox [i],
"\!") << {Manque d'ajustement (0), Parcelle réelle par prédite (0),
Régression de tracé (0), résidu de tracé par prédite (0),
Effet de levier (0), transformation de Box Cox Y (1, Enregistrer la meilleure transformation (1)), Afficher VIF (1)},
), "
)
boxcoxstring = Concat (boxcoxstring, ");" )
Eval (Parse (boxcoxstring));
Attendre (0);
boxcoxwindow << Fermer la fenêtre;
)