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!
Intentando escribir un script para comparar valores futuros previstosHola a todos. Sigo aprendiendo los fundamentos de JSL y estoy intentando escribir un script que compare la precisión del valor predicho en un momento dado con los valores predichos posteriores durante los próximos 7 días. Intento que el script haga lo siguiente:
1 - realizar una 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 previsto 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 ocurre 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 se produzcan durante la semana posterior al valor de las 8:00 a. m. (es decir, del lunes a las 8:15 a. m. al lunes siguiente a las 7:45 a. m.). (Es decir, todos los valores calculados durante la semana se compararán con el valor del lunes a las 8:00 a. m.). Luego, cuente el número de filas en las que todos esos valores predichos superen en un 25 % el valor de las 8:00 a. m. de esa semana. Continúe (repita este proceso) hasta que se hayan contabilizado 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 sé cómo seleccionar los valores de la semana para compararlos con el valor del lunes a las 8 a. m. Y ni siquiera estoy seguro de ir por buen camino. ¡Agradecería mucho cualquier ayuda!
Automatización y scriptingExploración y visualización de datosRe: 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.