Salut tout le monde,
J'ai des difficultés avec le référencement correct d'un rapport lorsque j'essaie d'envoyer au rapport la commande << Enregistrer la formule de simulation.
J'ai un script automatisé pour effectuer certaines analyses, et dans ce script, j'obtiens une liste des rapports ouverts pour obtenir le report_of_interest, voir JSL ci-dessous :
report_windows = Get Window List( "Report" );
report_of_interest = Empty();
For Each( {report_windows}, report_windows,
outline_title = Try( report_windows[Outline Box( 1 )] << Get Title, "" );
If( Starts With( outline_title, "Generalized " ),
report_of_interest = report_windows;
Break();
);
);Le report_of_interest est une référence au DisplayBox[HeadBox] du rapport. En utilisant cette référence, je peux faire des choses comme envoyer la commande pour effectuer une simulation d'une colonne d'intérêt dans le rapport, par exemple la colonne d'estimation des paramètres.
report_of_interest[Number Col Box( 8 )] << Simulate(
2500,
Random Seed(.),
Out( :ColOut ),
In( :ColIn )
);
Cependant, lorsque j'essaie d'envoyer la commande << Enregistrer la formule de simulation au report_of_interest (en suivant l'exemple de l'aide de Scripting Index) :
report_of_interest << (Fit[1] << Save Simulation Formula)
J'obtiens l'erreur suivante dans la fenêtre de journal :
L'objet 'HeadBox' ne reconnaît pas le message 'Send' ; peut-être voulez-vous dire l'un de ceux-ci : <<<<<<<<<<<<
Si j'essaie d'utiliser le titre du plan, la variable outline_title ci-dessus, j'obtiens l'erreur suivante dans le journal :
Send Attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send' , outline_title << /*###*/(Fit[1] << Save Simulation Formula) /*###*/
Ce que je ne comprends pas, c'est la différence entre la référence aux exemples de l'aide de Scripting Index et mon code JSL. Le premier exemple de l'aide de Scripting Index est le suivant :
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Diabetes.jmp" );
fm = dt << Fit Model(
Y( :Y ),
Effects( :Age, :Gender, :BMI, :BP, :Total Cholesterol, :LDL, :HDL, :TCH, :LTG, :Glucose ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
Run( Fit( Estimation Method( Lasso( Adaptive ) ), Validation Method( KFold, 5 ) ) )
);
fm << (fit[1] << Save Simulation Formula);
Le fm est une variable qui fait référence à ce qui suit : Fit Generalized[]. Dans les exemples de Scripting Index, ils sont tous capables d'enregistrer la colonne de simulation dans la table de données à l'aide de cette référence.
Une grande différence que je peux voir est dans les exemples, ils sont tous capables d'envoyer à la table de données la commande Fit Model () avec la sous-commande Run(Fit()). Je ne peux pas faire cela dans mon code JSL car il est plus généralisé et je ne l'exécute pas toujours sur les mêmes colonnes pour les facteurs Y, Réponse et X.
Le JSL analogue dans mon code est le suivant :
avdt << Fit Model(
Y( Eval( YCols ) ),
Validation( :Validation ),
Personality( "Generalized Regression" )
);
Notez que je n'ai aucun effet répertorié car ceux-ci peuvent changer en fonction de la table de données avec laquelle je travaille. J'ai une section de code avant qui demande d'indiquer quelle colonne est la colonne de réponse, et par conséquent, je peux inclure le Y(Eval(ycols)) dans Fit Model() car le code JSCL a une référence à cette colonne.
Malheureusement, je ne peux rien faire comme fm = avdt << Fit Model() et le référencer de cette façon car une fois que j'ai entré tous les effets et cliqué sur Exécuter dans la fenêtre de la plate-forme GenReg, fm renvoie l'erreur indiquant qu'il s'agit d'un objet supprimé. référence[]. En fait, si vous commentez la ligne avec Run() dans l'exemple de l'aide de Scripting Index et que vous l'exécutez, cliquez sur Exécuter dans la boîte de dialogue Ajuster le modèle, l'exemple de code n'enregistrera pas la colonne de simulation dans la table de données.
Désolé pour le long message, mais j'ai senti que je devais mettre en contexte le problème que je rencontre. Toute aide pour corriger le référencement correct du report_of_interest, afin que je puisse envoyer la << Enregistrer la formule de prédiction, serait très appréciée.
Merci!,
DS
Une différence est que vous utilisez des références différentes, l'exemple d'index de script utilise "Fit Generalized[]" et vous utilisez "DisplayBox[HeadBox]". Vous pouvez très probablement obtenir une référence à Fit Generalized en utilisant quelque chose comme
report_of_interest[OutlineBox(1)] << get scriptable object;
Salut @jthi ,
Merci, comme toujours, pour votre réponse rapide et utile ! Oui, ça marche. J'ai également réalisé que je pouvais contourner ce problème en modifiant une partie antérieure de mon code où il demande que la colonne de réponse soit modélisée, de sorte qu'il demande également les effets du modèle en même temps. De cette façon, je pourrais inclure le fm = dt<
Je n'ai pas eu à utiliser souvent le << Get Scriptable Object », ce n'est donc pas une commande qui me vient vraiment à l'esprit. J'apprécie l'aide.
Merci!,
DS