Re: Versuch, ein Skript zu schreiben, um zukünftige Vorhersagewerte zu vergleichenWenn es hilft......
Meine Datentabelle ist wie folgt aufgebaut:
datetime log_turb_pear millsR_Q_lag_6hrs pred formula log_ecoli_pear (berechnet)
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 Uhr 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
Ich versuche, den Wert von :pred formula log_ecoli_pred am 04.01.2021, 8 Uhr (dh 2,64) mit dem Wert zu vergleichen, der zu allen anderen Zeiten bis zum 12.01.21 um 7:45 Uhr erhalten wurde. Und dann muss ich zählen, wie oft jeder dieser Werte + oder - 25 % von 2,64 beträgt. Dann für die nächste Woche wiederholen usw., bis die Zählung für alle Wochen in der Datentabelle durchgeführt wurde.(Beachten Sie bei Bedarf, dass der erste Montag im Jahr 2019 der 7. Januar ist, der erste Montag im Jahr 2020 der 6. Januar und der erste Montag im Jahr 2021 der 4. Januar ist. Meine Datentabelle enthält Datensätze von Anfang 2019 bis heute. ) Nur ein Wert (3.7) in der obigen Beispieltabelle ist mehr als + oder - 25 % von 2,64 (dh <(0,75 * 2,64) oder > (1,25 * 2,64)).
Re: Versuch, ein Skript zu schreiben, um zukünftige Vorhersagewerte zu vergleichenDer Einfachheit halber läuft meine Frage wirklich darauf hinaus: Wie würde ich einen Spaltenwert aus der nächsten Zeile abrufen / lesen (ich nenne es Zeile n + 1), eine Berechnung damit durchführen und dann aus der Zeile danach abrufen? (n+2) und führe die Berechnung durch, und so weiter, bis ich Zeile n=672 erreiche (was 7 Tage im Wert von 15-Minuten-Schritten entspricht)......dann beginnen Sie eine neue Berechnung, beginnend bei Zeile n=672 und setzen Sie den gleichen Schleifen-Workflow für die nächsten 672 Zeilen fort ..... und beginnen Sie dann noch einmal bei n = 672 +672 = 1344 ... usw., bis mir die Zeilen in der Datentabelle ausgehen.Bei Bedarf erkläre ich gerne.Sogar ein Hinweis könnte mich auf den richtigen Weg bringen.Danke im Voraus!
Versuch, ein Skript zu schreiben, um zukünftige vorhergesagte Werte zu vergleichenHallo zusammen - Ich lerne immer noch die Grundlagen von JSL und versuche, ein Skript zu schreiben, das vergleicht, wie gut der vorhergesagte "Zeitpunkt"-Wert in den folgenden 7 Tagen mit nachfolgenden vorhergesagten Werten verglichen wird.Ich versuche, das Skript dazu zu bringen, Folgendes zu tun:
1 - Regression für alle Zeilen in der Datentabelle durchführen (jede Zeile entspricht einem 15-Minuten-Inkrement, daher wird mein vorhergesagter Wert alle 15 Minuten berechnet).
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 - Wählen Sie den prognostizierten Wert aus, der jeden Montagmorgen um 8:00 Uhr im gesamten Datensatz über einen Zeitraum von 3 Jahren auftritt.
3 - Vergleichen Sie diesen Wert mit allen anderen vorhergesagten Werten, die in der Woche nach diesem 8-Uhr-Wert auftreten (dh Mo 8:15 Uhr mit dem folgenden Mo um 7:45 Uhr).(Das heißt, alle während der Woche berechneten Werte werden mit dem Wert für Montag um 8 Uhr morgens verglichen.) Zählen Sie dann die Anzahl der Zeilen, in denen alle diese vorhergesagten Werte mehr als + oder - 25 % des 8-Uhr-Werts für . betragen diese Woche.Fahren Sie fort (wiederholen Sie diesen Vorgang), bis alle Wochen berücksichtigt sind.
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;
)
);
Ich bin mir nicht sicher, wie ich die Werte der Woche auswählen soll, um sie mit dem Wert für Montag um 8 Uhr zu vergleichen.Und ich bin mir nicht sicher, ob ich damit auf dem richtigen Weg bin.Ich würde mich sehr über jede Hilfe freuen!
SkriptingRe: Versuch, ein Skript zu schreiben, um zukünftige Vorhersagewerte zu vergleichenHi @learning_JSL ,
Hier sind einige Ideen, um Ihnen den Einstieg zu erleichtern; Code nicht getestet.
//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;
Betreff: Versuch, ein Skript zu schreiben, um zukünftige Vorhersagewerte zu vergleichenDanke Stan.Ich werde dies versuchen.