你好,
我想知道是否有一种简单的方法可以检索信号在时间序列数据中保持在特定限制以上的平均时间(以小时或分钟为单位)。 我在附件中添加了一个示例数据集。
我添加了一些根据数据的平均基线计算的初步 SD 限制。

那么信号返回低于 2SD、3SD 或 5SD 的平均时间是多少?
谢谢。
这是一个非常简单的公式,可以计算持续时间。

然后我只是运行一个分布来查看数据的形状,并获得平均值。

在下面的示例中,我只创建了一个新列来确定超过 1 SD 的持续时间。该公式非常简单,因此使用它来计算 2SD 等应该可以从第一个公式扩展。
这是进行计算和显示的 JSL。这可以很容易地以交互方式完成。
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 ) )}
)
)
);