Comment passer une variable dans une formule ?J'utilise la syntaxe ci-dessous. Je voudrais modifier une partie de la formule qui est le coefficient MA estimé.
Dans ce cas, la valeur de la Le coefficient MA est de 0,144654220611782.
Mes nombreuses tentatives jusqu'à présent, y compris l'utilisation de listes, sont tombées à plat.
Comment pourrais-je attribuer la valeur du coefficient (de 0,144654220611782) à une "variable" puis utiliser cette "variable" dans la formule ? Cela signifie que j'attribue la valeur du coefficient avant d'exécuter la syntaxe de la formule, avec la valeur transmise dans la formule de manière appropriée.
dt << New Column( "Yt Forecast1", Numeric, "Continuous", Format( "Best", 12 ),
Formula(
ARIMA Forecast(
:Yt,
50,
ARIMA( 0, 1, 1, No Intercept( 1 ) ),
{MA Coefficients( {0.144654220611782} )},
Row() - 50,
Row() - 50
)))Re : Comment passer une variable dans une formule ?Les formules de colonne s'abonnent à d'autres colonnes et variables de table pour écouter les modifications et les réévaluer lorsque cela se produit.Pas aux autres variables JSL cependant. Ainsi, la façon dont cela fonctionne pour vous, la formule peut voir le coef variable et sait qu'elle doit s'abonner aux modifications. Je pense que les autres suggestions remplacent la variable par une constante, de sorte que la formule ne sait plus qu'elle doit s'abonner à quelque chose.
Re : Comment passer une variable dans une formule ?Dave, je n'ai pas réussi à faire fonctionner ça. J'ai eu recours à ce qui suit, ce qui semble correspondre au travail que j'espère faire.
Merci Scott.Re : Comment passer une variable dans une formule ?Ce qui a fonctionné pour moi, c'est ceci. j'obtiens la valeur" tempMACoeff " de la liste de lstModel = ts << Get Models ; (ts est l'analyse de la série chronologique)
La formule de la colonne accepte une nouvelle valeur pour tempMACoeff et se mettra à jour...
col = dt << New Column( "Yt-Forecast", Numeric);
dt << set Table Variable( "coef", tempMACoeff );
col << Set Formula( Eval(
Eval Expr(
ARIMA Forecast(
:Yt,
50,
ARIMA( 0, 1, 1, No Intercept( 1 ) ),
{MA Coefficients( {Expr( :coef )} )},//
Row() - 50,
Row() - 50
)
)
)); // set the formula
Re : Comment passer une variable dans une formule ?Une autre approche consiste à convertir la formule en représentation sous forme de chaîne, puis à effectuer une substitution de chaîne standard, en la reconvertissant en expression lorsque vous affectez la formule de colonne :
strFml = Char(Expr(
ARIMA Forecast(
:Yt,
50,
ARIMA( 0, 1, 1, No Intercept( 1 ) ),
{MA Coefficients( {_coeff_} )},
Row() - 50,
Row() - 50
)
));;
coeffValue = 0.144;
SubstituteInto("_coeff_",coeffValue);
dt << New Column("Y Forecast", numeric, Set Formula( Eval(Parse(strFml)) ));Re : Comment passer une variable dans une formule ?Voici une manière légèrement différente de gérer la même solution que celle fournie par Craige.La seule différence est que cette version code en dur la valeur Coef dans la formule, ne nécessitant pas de variable de table
Names Default To Here( 1 );
dt = Current Data Table();
coef = 99.3;
Eval(
Substitute(
Expr(
New Table( "the table",
Add Rows( 3 ),
New Table Variable( "coef", 99.3 ),
New Column( "Column 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( __coef__ ),
Set Selected
)
)
),
Expr( __coef__ ), coef
)
);Re : Comment passer une variable dans une formule ?Vous avez besoin de quelque chose comme ça. Lorsque vous modifiez la variable de table, la colonne est mise à jour.
Eval(
Eval Expr(
ARIMA Forecast(
:age,
40,
ARIMA( 0, 1, 1, No Intercept( 1 ) ),
{MA Coefficients( {Expr( :coef )} )},
Row() - 9,
Row() - 9
)
)
)
En utilisant la même idée de variable de table, notez comment le eval( eval expr( ... expr(:coef) ... ) ) travaux. expr (:coef) identifie un extrait de la formule qui nécessite une substitution effectuée en l'évaluant. evalexpr (...) fait l'évaluation de tous les bits identifiés avec expr, et renvoie une expression qui doit encore être évaluée. eval (...) est-ce que. (j'ai changé tous les paramètres pour que ça marche quelque chose avec bigclass...n'utilisez pas le mien ! Je ne suis pas familier avec les fonctions de prévision ARIMA, ou si elles doivent être utilisées dans une formule de colonne comme celle-ci. L'exemple d'index de script n'utilise pas de formule de colonne.)
Re : Comment passer une variable dans une formule ?edit: après relecture, ce n'est peut-être pas la réponse.
Utilisez une variable de table, par script ou à partir du triangle rouge.
New Table( "Untitled 46",
Add Rows( 3 ),
New Table Variable( "coef", 99.3 ),
New Column( "Column 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :coef ),
Set Selected
)
)
Table VariableTable VariableVariable de tableau