再:将来の予測値を比較するためのスクリプトを書き込もうとしていますそれが役に立ったら......
私のデータテーブルは次のように設定されています。
日時log_turb_pearmillsR_Q_lag_6hrs pred式log_ecoli_pear(計算済み)
2021年1月4日08:00 AM 1.32 50 2.64
01/04/2021 08:15 AM 1.46 45 2.72
2021年1月4日08:30 AM 1.59 50 2.90
01/04/2021 08:45 AM 2.20 50 3.7
2021年1月4日09:00 AM 2.25 58 3.19
NS
:pred式log_ecoli_predの値を2021年1月4日午前8時(つまり2.64)に、21年1月12日午前7時45分までの他のすべての時間に取得した値と比較しようとしています。そして、これらの値のそれぞれが2.64の+または-25%である回数を数える必要があります。次に、データテーブルですべての週のカウントが実行されるまで、次の週などを繰り返します。(必要に応じて、2019年の最初の月曜日は1月7日、2020年の最初の月曜日は1月6日、2021年の最初の月曜日は1月4日です...私のデータテーブルには2019年初頭から現在までのレコードがあります。 )上記の表の例の1つの値(3.7)のみが、2.64の+または-25%を超えています(つまり、<(0.75 * 2.64)または>(1.25 * 2.64))。
再:将来の予測値を比較するためのスクリプトを書き込もうとしています簡単にするために、私の質問は本当にこれに要約されます:次の行から列の値を取得/読み取り(これを行n + 1と呼びます)、それを使用して計算を行い、その後の行から取得するにはどうすればよいですか? (n + 2)そして、行n = 672(7日分の15分刻み)に達するまで計算を繰り返します......次に、行n = 672から新しい計算をやり直します。そして、次の672行に対して同じループワークフローを続行します.....次に、データテーブルの行がなくなるまで、n = 672 +672 = 1344 ......などでもう一度やり直します。必要に応じて明確にさせていただきます。ヒントでさえ私を軌道に乗せるかもしれません。前もって感謝します!
将来の予測値を比較するスクリプトを作成しようとしている皆さん、こんにちは。私はまだJSLの基礎を勉強中で、ある時点の予測値とその後7日間の予測値を比較するスクリプトを書こうとしています。スクリプトで以下の処理を実行させたいと思っています。
1 - データ テーブルのすべての行に対して回帰を実行します (各行は 15 分の増分に対応するため、予測値は 15 分ごとに計算されます)。
元:
obj = Fit Model(
Y( :LOG_ECOLI_Pear ),
Effects( :LOG_TURB_Pear, :millsR_Q_lag6hr ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" ),
Run( :LOG_ECOLI_Pear )
);
obj << Prediction Formula;
2 - 3 年間にわたるデータセット全体で毎週月曜日の午前 8 時に発生する予測値を選択します。
3 - その値を、その週の午前8時の値(つまり、月曜日の午前8時15分から翌週の月曜日の午前7時45分まで)に発生する他のすべての予測値と比較します。(つまり、その週中に計算されたすべての値が月曜日の午前8時の値と比較されます。)次に、それらの予測値すべてがその週の午前8時の値の±25%を超える行の数を数えます。すべての週が計算されるまで、このプロセスを繰り返します。
元:
New Column( "count num above or below 25pct of mon 8am",
numeric,
continuous,
formula(
If( Row() == 1, x = 0 );
((If( :above or below 25pct of mon 8am == 1,
x = x + :above or below 25pct of mon 8am,
X = X + :above or below 25pct of mon 8am
)));
x;
)
);
月曜日午前8時の値と比較するために、週分の値をどのように選択すればよいか分かりません。そもそも、正しい方向に進んでいるのかさえ分かりません。どなたか助けていただけると大変助かります。
自動化とスクリプトデータの探索と可視化再:将来の予測値を比較するためのスクリプトを書き込もうとしていますやあ@learning_JSL 、
ここにあなたが始めるためのいくつかのアイデアがあります。コードはテストされていません。
//Set Initial Constraints
strt_row = 1;
end_row = 672;
ref_col_name = "pred formula log_ecoli_pear";
dt = Data Table( "community_post.jmp" );
cnt_ref = 0;
cnt_ref_2 = 0;
//Create Loop
for(r = 1, r <= NRows(dt), r++,
//find begin date
mod_strt_row = Modulo( dt:datetime[r], dt:datetime[1] );
If(mod_strt_row == 0, strt_row = row() );
//find end date
mod_end_row = Modulo( row(), end_row );
If(mod_end_row == 0, end_row = row() );
If(r == strt_row,
//get reference times and value for start row and column
ref_strt_time_value = dt:datetime[strt_row];
ref_col_name_value = Column(dt, ref_col_name)[strt_row];
show( format(ref_strt_time_value, "m/d/y h:m", 19), ref_col_name_value )
,
r!=end_row & r > 1,
row() = r;
compare_value = Lag( Column(dt,ref_col_name)[], 1);
low_limit_ref_value = 0.75*ref_col_name_value;
upper_limit_ref_value = 1.25*ref_col_name_value;
calc_val = Abs( ( ( ref_col_name_value - compare_value ) / ref_col_name_value ) * 100);
If(ref_col_name_value >= low_limit_ref_value | ref_col_name_value <= upper_limit_ref_value,
cnt_ref_2 = cnt_ref_2 + 1;
show( calc_val, cnt_ref_2);
);
If( calc_val <= 25,
cnt_ref = cnt_ref+1;
show(calc_val, cnt_ref);
);
,
r == end_row,
ref_end_time_value = dt:datetime[end_row];
show(format(ref_end_time_value, "m/d/y h:m", 19) );
);
);
cnt_ref_2;
cnt_ref;