Ciao,
Mi chiedevo se ci sarebbe stato un modo semplice per recuperare la quantità media di tempo (in ore o minuti) in cui un segnale rimane al di sopra di un certo limite all'interno dei dati di serie temporali. Ho aggiunto un set di dati di esempio nell'allegato.
Ho aggiunto alcuni limiti SD preliminari che ho calcolato in base alla linea di base media dei dati.

Quindi quale sarebbe il tempo necessario per il ritorno del segnale al di sotto di 2SD, 3SD o 5SD?
Grazie.
È una formula piuttosto semplice che calcolerà le durate.

E poi ho eseguito una distribuzione per vedere la forma dei dati e per ottenere la media.

Nel mio esempio di seguito, creo solo una nuova colonna che determina la durata del tempo trascorso su 1 SD.La formula è piuttosto semplice, quindi utilizzarla per calcolare la 2SD ecc. Dovrebbe essere espandibile dalla prima formula.
Ecco il JSL per eseguire il calcolo e la visualizzazione.Questo può essere fatto facilmente in modo interattivo.
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "sd1 Duration",
Numeric,
"Continuous",
Format( "hr:m:s", 13, 0 ),
Input Format( "hr:m:s", 0 ),
Formula(
If( Row() == 1,
start = 0;
sdLimit = Col Mean( :Count ) + Col Std Dev( :Count );
);
theTime = .;
If( :Count <= sdLimit & start > 0,
theTime = :"Date/Time"n - start;
start = 0;
);
If( :Count > sdLimit & start == 0,
start = :"Date/Time"n
);
theTime;
),
Set Selected
);
Distribution(
Continuous Distribution( Column( :sd1 Duration ), Horizontal Layout( 1 ), Vertical( 0 ) ),
SendToReport(
Dispatch(
{"sd1 Duration"},
"1",
ScaleBox,
{Min( -2009.13865683119 ), Max( 143459.453400931 ), Interval( "Hour" ), Inc( 10 ),
Minor Ticks( 1 )}
),
Dispatch(
{"sd1 Duration"},
"Distrib Histogram",
FrameBox,
{DispatchSeg( Hist Seg( 1 ), Bin Span( 2, 0 ) )}
)
)
);