Come passare una variabile in una formula?Sto usando la sintassi seguente. Vorrei modificare una parte della formula che è il coefficiente MA stimato.
In questo caso, il valore di Il coefficiente MA è 0,144654220611782.
I miei numerosi tentativi finora, incluso l'utilizzo di elenchi, sono falliti.
Come potrei assegnare il valore del coefficiente (di 0,144654220611782) a una "variabile" e quindi utilizzare quella "variabile" nella formula? Significato assegno il valore del coefficiente prima di eseguire la sintassi della formula, con il valore passato nella formula in modo adeguato.
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: Come passare una variabile in una formula?Le formule di colonna si iscrivono ad altre colonne e variabili di tabella per ascoltare le modifiche e rivalutare quando ciò accade.Non ad altre variabili JSL però. Quindi, nel modo in cui funziona per te, la formula può vedere il coef variabile e sa che dovrebbe sottoscrivere le modifiche. Penso che gli altri suggerimenti stiano sostituendo la variabile con una costante, quindi la formula non sa più che dovrebbe iscriversi a qualcosa.
Re: Come passare una variabile in una formula?Dave, non sono riuscito a farlo funzionare. Ho fatto ricorso al seguito che sembra il lavoro che spero di ottenere.
Grazie, Scott.Re: Come passare una variabile in una formula?Ciò che ha funzionato per me è questo. Capisco il valore " tempMACoeff " dall'elenco da lstModel = ts << Ottieni modelli; (ts è l'analisi delle serie temporali)
La formula della colonna accetta un nuovo valore per tempMACoeff e verrà aggiornata...
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: Come passare una variabile in una formula?Un altro approccio consiste nel convertire la formula in una rappresentazione di stringa e quindi eseguire la sostituzione di stringa standard, riconvertendola in un'espressione quando si assegna la formula di colonna:
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: Come passare una variabile in una formula?Ecco un modo leggermente diverso di gestire la stessa soluzione fornita da Craige.L'unica differenza è che questa versione codifica il valore Coef nella formula, non richiedendo una variabile di tabella
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: Come passare una variabile in una formula?Hai bisogno di qualcosa del genere. Quando si modifica la variabile della tabella, la colonna si aggiorna.
Eval(
Eval Expr(
ARIMA Forecast(
:age,
40,
ARIMA( 0, 1, 1, No Intercept( 1 ) ),
{MA Coefficients( {Expr( :coef )} )},
Row() - 9,
Row() - 9
)
)
)
Usando la stessa idea di variabile di tabella, nota come il file eval( eval expr( ... expr(:coef) ... ) ) lavori. espr (:coef) identifica uno snippet della formula che necessita di una sostituzione effettuata valutandola. valexpr (...) esegue la valutazione di tutti i bit identificati con expr e restituisce un'espressione che deve ancora essere valutata. eval (...) lo fa. (Ho cambiato tutti i parametri per farlo funzionare qualcosa con bigclass...non usare il mio! Non ho familiarità con le funzioni di previsione ARIMA o se dovrebbe essere utilizzato in una formula di colonna come questa. L'esempio dell'indice di scripting non utilizza una formula di colonna.)
Re: Come passare una variabile in una formula?modifica: dopo aver riletto, questa potrebbe non essere la risposta.
Usa una variabile di tabella, tramite script o dal triangolo rosso.
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 VariableTabella variabile