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;
Re: 미래 예측값을 비교하는 스크립트를 작성하려고 합니다.스탠 감사합니다.나는 이것을 시도할 것이다.