Salut tout le monde,
Vous rencontrez des problèmes avec le référencement correct d'une colonne lors du passage de la commande << Simuler dans une fenêtre de rapport à l'aide de JSL.
La section de code avec laquelle j'ai du mal est la suivante :
report_of_interest[Number Col Box( 8 )] << Simulate(
NBSnum,
Random Seed( RSnum ),
Out( Eval( YCols ) ),
In( :Simulated Y )
);
L’exécution de cette section de code génère l’erreur suivante : Colonne à désactiver introuvable. puis apparaît la fenêtre dans laquelle vous êtes censé sélectionner les colonnes à activer et désactiver.
Le report_of_interest est la fenêtre de rapport dans laquelle j'envoie la commande Simulate. Plus précisément au NumberColBox(8), qui est la colonne Estimation du rapport. NBSnum et RSnum correspondent au nombre d'échantillons bootstrap à exécuter et à une variable de départ aléatoire. Le problème vient du nom de la colonne dans Out( ) de la commande Simulate( ). La colonne In() ne pose aucun problème car je peux nommer la colonne de données simulée comme je veux, mais la colonne de l'option Out() n'est pas une colonne que je veux vraiment renommer ou quoi que ce soit. Dans ce cas, j'enregistre les données simulées dans la table de données et je renomme la colonne "Simulated Y" afin de pouvoir la référencer selon les besoins dans la commande Simulate comme In(:Simulated Y).
Plus tôt dans le code, l'utilisateur est invité à sélectionner la colonne qui sera la colonne de réponse pour la modélisation, il s'agit de YCols, et souvent, lorsqu'il s'agit d'une colonne dans une plateforme, vous pouvez simplement l'avoir sous la forme Eval(YCols), et il l'accepte très bien, par exemple :
fm = avdt << Fit Model(
Y( Eval( YCols ) ),
Validation( :Validation ),
Effects( :Null Factor, Eval( XCols ) ),
Personality( "Generalized Regression" ),
Run( Fit( Estimation Method( Forward Selection ), Validation Method( Validation Column ) ) )
);
Exécutera correctement un modèle d’ajustement sur la colonne Y( ). Cependant, la commande Simulate( ) souhaite que la colonne soit référencée comme une colonne de portée, je crois, comme elle le souhaite, :My Column To Model, par exemple.
Disons que la colonne porte le nom "Ma colonne à modéliser", donc les variables YCols et Eval(YCols) renverront toutes deux le {"Ma colonne à modéliser"} suivant. Lors de l'envoi de la commande de simulation au rapport, il souhaite que le nom de la colonne soit étendu, comme suit :
report_of_interest[Number Col Box( 8 )] << Simulate(
NBSnum,
Random Seed( RSnum ),
Out( :My Column To Model ),
In( :Simulated Y )
);
Le problème est que la colonne que je modélise peut changer, donc son nom change, et je ne veux pas renommer la colonne pour qu'elle soit toujours un nom fixe comme :YData. Je veux travailler avec une variable comme YCols, mais je ne sais pas comment travailler avec l'opérateur infixe deux-points (:) et une variable comme YCols pour avoir la référence de colonne correcte pour la commande Simulate().
J'ai essayé As Column(dt, name), Column(dt, name), Column(number), Parse(":"||char(Column(avdt, Eval(YCols)))), Parse(":" ||Eval(YCols)[1]), et aucun de ceux-ci ne fonctionne. Ils entraînent tous la même erreur mentionnée ci-dessus et ouvrent une nouvelle fenêtre pour sélectionner les colonnes à échanger In/Out, ce qui annule l'automatisation que j'essaie de faire.
Toute aide est très appréciée.
Merci!,
DS