Wie übergebe ich eine Variable an eine Formel?Ich verwende die folgende Syntax. Ich möchte einen Teil der Formel ändern, nämlich den geschätzten MA-Koeffizienten.
In diesem Fall ist der Wert der Der MA-Koeffizient beträgt 0,144654220611782.
Meine zahlreichen bisherigen Versuche, darunter auch die Verwendung von Listen, scheiterten.
Wie könnte ich den Koeffizientenwert (von 0,144654220611782) einer „Variablen“ zuweisen und diese „Variable“ dann in der Formel verwenden? Das heißt, ich weise den Koeffizientenwert zu, bevor ich die Formelsyntax ausführe, wobei der Wert auf geeignete Weise in die Formel übergeben wird.
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
)))Betreff: Wie übergebe ich eine Variable an eine Formel?Spaltenformeln abonnieren andere Spalten und Tabellenvariablen, um auf Änderungen zu warten und diese neu auszuwerten, wenn diese auftreten.Allerdings nicht für andere JSL-Variablen. So wie es für Sie funktioniert, können Sie die Formel sehen Koef Variable und weiß, dass sie Änderungen abonnieren sollte. Ich denke, die anderen Vorschläge ersetzen die Variable durch eine Konstante, sodass die Formel nicht mehr weiß, dass sie etwas abonnieren soll.
Betreff: Wie übergebe ich eine Variable an eine Formel?Dave, ich habe es nicht hinbekommen, dass das klappt. Ich habe auf das Folgende zurückgegriffen, was der Aufgabe zu entsprechen scheint, die ich zu erledigen hoffe.
Danke, Scott.Betreff: Wie übergebe ich eine Variable an eine Formel?Was bei mir funktioniert hat, ist Folgendes. Ich erhalte den Wert „ tempMACoeff " aus der Liste von lstModel = ts << Get Models; (ts ist die Zeitreihenanalyse)
Die Spaltenformel akzeptiert einen neuen Wert für tempMACoeff und wird aktualisiert ...
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
Betreff: Wie übergebe ich eine Variable an eine Formel?Ein anderer Ansatz besteht darin, die Formel in eine Zeichenfolgendarstellung umzuwandeln und dann eine Standardzeichenfolgenersetzung durchzuführen und sie beim Zuweisen der Spaltenformel wieder in einen Ausdruck umzuwandeln:
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)) ));Betreff: Wie übergebe ich eine Variable an eine Formel?Hier ist eine etwas andere Art und Weise, mit derselben Lösung umzugehen, die Craige bereitgestellt hat.Der einzige Unterschied besteht darin, dass diese Version den Coef-Wert fest in die Formel codiert und keine Tabellenvariable erfordert
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
)
);Betreff: Wie übergebe ich eine Variable an eine Formel?Sie brauchen so etwas. Wenn Sie die Tabellenvariable ändern, wird die Spalte aktualisiert.
Eval(
Eval Expr(
ARIMA Forecast(
:age,
40,
ARIMA( 0, 1, 1, No Intercept( 1 ) ),
{MA Coefficients( {Expr( :coef )} )},
Row() - 9,
Row() - 9
)
)
)
Beachten Sie, dass bei Verwendung derselben Tabellenvariablenidee die eval( eval expr( ... expr(:coef) ... ) ) funktioniert. Ausdruck (:coef) identifiziert einen Ausschnitt der Formel, der durch seine Auswertung ersetzt werden muss. evalexpr (...) führt die Auswertung aller mit expr identifizierten Bits durch und gibt einen Ausdruck zurück, der noch ausgewertet werden muss. evalu (...) macht das. (Ich habe alle Parameter geändert, damit es funktioniert etwas mit bigclass...benutze meine nicht! Ich bin mit den ARIMA-Prognosefunktionen nicht vertraut und weiß auch nicht, ob sie in einer Spaltenformel wie dieser verwendet werden sollten. Das Beispiel für den Skriptindex verwendet keine Spaltenformel.)
Betreff: Wie übergebe ich eine Variable an eine Formel?Bearbeiten: Nach erneutem Lesen ist dies möglicherweise nicht die Antwort.
Verwenden Sie eine Tabellenvariable, per Skript oder über das rote Dreieck.
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 VariableTabellenvariable