Minimo mobile (finestra mobile)Qualcuno sa come calcolare un minimo mobile (o del resto come selezionare in modo iterativo il numero X di righe di ritardo e fare qualcosa su di loro come calcolare un minimo, un massimo, un intervallo, ecc. In questo esempio specifico voglio guardare indietro pronuncia le ultime 100 righe e ottieni il valore minimo, quindi passa alla riga successiva e fai di nuovo la stessa cosa (ancora e ancora).
Progettazione di esperimentiRi: minimo mobile (finestra mobile)La macro di seguito non è particolarmente elegante, ma farà il lavoro.
For ( i= 100, i <= N Rows ( dt ), i++,
dt << Select Rows (Index (i-99, i));
dt << Subset(
Selected Rows( 1 ),
Selected Columns ( 0 ),
Output Table ("out")
);
Current Data Table ( Data Table ("out"));
x = Col Minimum ( :YourDataColumn );
Close ( Data Table ( "out"), no save);
Column ( "YourMovingWindow" )[i] = x;
)La subimpostazione dei dati selezionati, come ho fatto, è lenta. Forse un altro utente ha un'idea migliore su come accedere ai dati selezionati ed estrarre il prodotto desiderato.
Mi chiedo anche come potrebbe essere una formula di colonna per ottenere i risultati senza una macro.
Saluti,
Kofi
Ri: minimo mobile (finestra mobile)Qualcosa del genere funzionerebbe?
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
dt << New Column("Min height 5 back",
Formula(
Min( // since we want a minumum
:height[// the column we want the minimum of
// a slice of the current row minus 5 (minimum 1 so it's still on the datatable)
// and current row
Min( Row() - 5 )::Row()
]
)
)
);