Re: 미래 예측값을 비교하는 스크립트를 작성하려고 합니다.도움이 된다면......
내 데이터 테이블은 다음과 같이 설정됩니다.
datetime log_turb_pear millsR_Q_lag_6hrs pred 공식 log_ecoli_pear(계산됨)
2021-01-04 오전 08:00 1.32 50 2.64
2021년 1월 4일 오전 8시 15분 1.46 45 2.72
2021-01-04 오전 08:30 1.59 50 2.90
2021년 1월 4일 오전 8시 45분 2.20 50 3.7
2021년 1월 4일 오전 9시 00분 2.25 58 3.19
등
2021년 1월 4일 오전 8시(즉, 2.64)의 :pred 수식 log_ecoli_pred의 값을 오전 7시 45분에 01/12/21까지 다른 모든 시간에 얻은 값과 비교하려고 합니다. 그런 다음 각 값이 2.64의 + 또는 - 25%인 횟수를 계산해야 합니다. 그런 다음 데이터 테이블의 모든 주에 대해 계산이 수행될 때까지 다음 주 등을 반복합니다.(필요한 경우 2019년의 첫 번째 월요일은 1월 7일이고, 2020년의 첫 번째 월요일은 1월 6일이며, 2021년의 첫 번째 월요일은 1월 4일입니다. 내 데이터 테이블에는 2019년 초부터 현재까지의 레코드가 있습니다. ) 위의 예 표에서 하나의 값(3.7)만 2.64의 + 또는 - 25% 이상입니다(즉, <(0.75 * 2.64) 또는 > (1.25 * 2.64)).
Re: 미래 예측값을 비교하는 스크립트를 작성하려고 합니다.간단하게 하기 위해 내 질문은 다음과 같이 요약됩니다. 다음 행에서 열 값을 검색/읽고(행 n+1이라고 부를 것입니다), 이를 사용하여 계산을 수행한 다음 그 이후의 행에서 검색하는 방법 (n+2) 및 계산을 수행하는 등 n=672행(15분 증분의 7일 분량)에 도달할 때까지 계속합니다. 그런 다음 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시 값과 비교할 주간 값을 어떻게 선택해야 할지 잘 모르겠습니다. 그리고 제가 제대로 하고 있는지도 잘 모르겠습니다. 도와주시면 정말 감사하겠습니다!
자동화 및 스크립팅데이터 탐색 및 시각화Re: 미래 예측값을 비교하는 스크립트를 작성하려고 합니다.안녕하세요 @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;