Hola,
Me preguntaba si habría una manera fácil de recuperar la cantidad promedio de tiempo (en horas o minutos) que una señal permanece por encima de cierto límite dentro de los datos de series de tiempo. He agregado un conjunto de datos de ejemplo en el archivo adjunto.
Agregué algunos límites SD preliminares que calculé en función de la línea base media de los datos.

Entonces, ¿cuál sería la cantidad de tiempo variable para que la señal regrese por debajo de 2SD, 3SD o 5SD?
Gracias.
Es una fórmula bastante simple que calculará las duraciones.

Y luego ejecuté una distribución para ver la forma de los datos y obtener la media.

En mi ejemplo a continuación, solo creo una nueva columna que determina el tiempo de duración de más de 1 SD.La fórmula es bastante sencilla, por lo que usarla para calcular el 2SD, etc., debería ser ampliable desde la primera fórmula.
Aquí está el JSL para hacer el cálculo y mostrarlo.Esto se puede hacer fácilmente de forma interactiva.
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 ) )}
)
)
);