Re: intentar escribir un script para comparar valores futuros predichosSi ayuda ...
Mi tabla de datos está configurada de la siguiente manera:
fecha y hora log_turb_pear millsR_Q_lag_6hrs pred formula log_ecoli_pear (calculado)
01/04/2021 08:00 AM 1.32 50 2.64
01/04/2021 08:15 AM 1,46 45 2,72
01/04/2021 08:30 AM 1,59 50 2,90
01/04/2021 08:45 AM 2.20 50 3.7
01/04/2021 09:00 AM 2.25 58 3.19
etc
Estoy tratando de comparar el valor de: pred formula log_ecoli_pred en 1/4/2021, 8 am (es decir, 2.64) con el valor obtenido en todos los demás momentos hasta el 01/12/21 a las 7:45 am. Y luego necesito contar la cantidad de veces que cada uno de esos valores es + o - 25% de 2.64. A continuación, repita para la semana siguiente, etc., hasta que se haya realizado el recuento de todas las semanas en la tabla de datos.(Tenga en cuenta que, si es necesario, el primer lunes de 2019 es el 7 de enero, el primer lunes de 2020 es el 6 de enero y el primer lunes de 2021 es el 4 de enero ... mi tabla de datos tiene registros desde principios de 2019 hasta la actualidad. ) Solo un valor (3.7) en la tabla de ejemplo anterior es más de + o - 25% de 2.64 (es decir, <(0.75 * 2.64) o> (1.25 * 2.64)).
Re: intentar escribir un script para comparar valores futuros predichosEn aras de la simplicidad, mi pregunta realmente se reduce a esto: ¿cómo recuperaría / leería un valor de columna de la próxima fila (la llamaré fila n + 1), haré un cálculo con ella y luego recuperaré de la fila siguiente (n + 2) y hago el cálculo, y así sucesivamente hasta que llegue a la fila n = 672 (que equivale a 7 días en incrementos de 15 minutos) ... luego comience de nuevo a hacer un nuevo cálculo comenzando en la fila n = 672 y continuar con el mismo flujo de trabajo en bucle para las siguientes 672 filas ..... y luego comenzar de nuevo en n = 672 +672 = 1344 ...... y así sucesivamente hasta que me queden sin filas en la tabla de datos.Me complace aclarar si es necesario.Incluso una indirecta podría encaminarme.¡Gracias por adelantado!
tratando de escribir un guión para comparar valores futuros predichosHola a todos: todavía estoy aprendiendo los conceptos básicos de JSL y estoy tratando de escribir un script que compare qué tan bien se compara el valor predicho del "punto en el tiempo" con los valores pronosticados subsiguientes durante los siguientes 7 días.Estoy intentando que el script haga lo siguiente:
1: realice la regresión en todas las filas de la tabla de datos (cada fila corresponde a un incremento de 15 minutos, por lo que mi valor predicho se calcula cada 15 minutos).
Ex:
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: seleccione el valor previsto que se produce cada lunes por la mañana a las 8 a. M. En todo el conjunto de datos que abarca 3 años.
3 - compare ese valor con todos los demás valores predichos que ocurren durante la semana siguiente a ese valor de las 8 am (es decir, el lunes a las 8:15 am con el siguiente lunes a las 7:45 am).(Es decir, todos los valores calculados durante la semana se compararán con el valor del lunes a las 8 a. M.). Luego, cuente el número de filas en las que todos esos valores predichos son más de + o - 25% del valor de las 8 a. M. Para esa semana.Continúe (repita este proceso) hasta que se tengan en cuenta todas las semanas.
ex:
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;
)
);
No estoy seguro de cómo seleccionar los valores de la semana para compararlos con el valor del lunes a las 8 am.Y no estoy seguro de estar en el camino correcto con esto.¡Agradecería mucho cualquier ayuda!
ScriptingRe: intentar escribir un script para comparar valores futuros predichosHola @aprendizaje_JSL ,
Aquí hay algunas ideas para comenzar; código no probado.
//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: intentar escribir un script para comparar valores futuros predichosGracias Stan.Le daré una oportunidad a esto.