Re: essayer d'écrire un script pour comparer les futures valeurs préditesSi ça peut aider......
Ma table de données est configurée comme suit :
datetime log_turb_pear millsR_Q_lag_6hrs pred formule log_ecoli_pear (calculé)
01/04/2021 08:00 1,32 50 2,64
01/04/2021 08:15 1.46 45 2.72
01/04/2021 08:30 1.59 50 2.90
01/04/2021 08:45 2.20 50 3.7
01/04/2021 09:00 2.25 58 3.19
etc
J'essaye de comparer la valeur de :pred formule log_ecoli_pred au 1/4/2021, 8h (soit 2,64) à la valeur obtenue à tous les autres moments jusqu'au 01/12/21 à 7h45. Et puis je dois compter le nombre de fois que chacune de ces valeurs est de + ou - 25% de 2,64. Répétez ensuite pour la semaine suivante, etc. jusqu'à ce que le comptage ait été effectué pour toutes les semaines du tableau de données.(Notez que, si nécessaire, le premier lundi de 2019 est le 7 janvier, le premier lundi de 2020 est le 6 janvier et le premier lundi de 2021 est le 4 janvier... ma table de données contient des enregistrements de début 2019 à aujourd'hui. ) Une seule valeur (3,7) dans l'exemple de tableau ci-dessus est supérieure à + ou - 25 % de 2,64 (c'est-à-dire < (0,75 * 2,64) ou > (1,25 * 2,64)).
Re: essayer d'écrire un script pour comparer les futures valeurs préditesPar souci de simplicité, ma question se résume vraiment à ceci : comment puis-je récupérer/lire une valeur de colonne de la ligne à venir (je l'appellerai ligne n+1), faire un calcul avec, puis récupérer de la ligne après cela (n+2) et faites le calcul, et ainsi de suite jusqu'à ce que j'atteigne la ligne n=672 (ce qui correspond à 7 jours d'incréments de 15 minutes)......puis recommencez à faire un nouveau calcul en commençant à la ligne n=672 et continuez le même flux de travail en boucle pour les 672 lignes suivantes ..... puis recommencez à n = 672 + 672 = 1344 ...... et ainsi de suite jusqu'à ce que je manque de lignes dans la table de données.Je suis heureux de clarifier si nécessaire.Même un indice pourrait me mettre sur la bonne voie.Merci d'avance!
essayer d'écrire un script pour comparer les futures valeurs préditesSalut à tous - J'apprends encore les bases de JSL et j'essaie d'écrire un script qui comparera à quel point la valeur prédite "à un moment donné" se compare aux valeurs prédites ultérieures au cours des 7 jours suivants.J'essaie de faire en sorte que le script fasse ce qui suit :
1 - effectuer une régression sur toutes les lignes de la table de données (chaque ligne correspond à un incrément de 15 minutes, ma valeur prédite est donc calculée toutes les 15 minutes).
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 - sélectionnez la valeur prédite qui se produit chaque lundi matin à 8h00 tout au long de l'ensemble de données couvrant 3 ans.
3 - comparer cette valeur à toutes les autres valeurs prédites qui se produisent au cours de la semaine suivant cette valeur de 8h (c'est-à-dire du lundi 8h15 au lundi suivant à 7h45).(C'est-à-dire que toutes les valeurs calculées au cours de la semaine seront comparées à la valeur du lundi à 8 h.) Ensuite, comptez le nombre de lignes dans lesquelles toutes ces valeurs prédites sont supérieures à + ou - 25 % de la valeur de 8 h pour cette semaine.Continuez (répétez ce processus) jusqu'à ce que toutes les semaines soient comptabilisées.
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;
)
);
Je ne sais pas comment sélectionner la valeur des valeurs de la semaine à comparer à la valeur du lundi 8h00.Et je ne suis même pas sûr d'être sur la bonne voie avec ça.J'apprécierais grandement toute aide!
ScriptRe: essayer d'écrire un script pour comparer les futures valeurs préditessalut @learning_JSL ,
Voici quelques idées pour vous aider à démarrer; code non testé.
//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: essayer d'écrire un script pour comparer les futures valeurs préditesMerci Stan.Je veux bien essayer.