こんにちは、
時系列データ内で信号が特定の制限を超えている平均時間(時間または分)を取得する簡単な方法があるかどうか疑問に思いました。 添付ファイルにサンプルデータセットを追加しました。
データの平均ベースラインに基づいて計算した予備的なSD制限をいくつか追加しました。

では、信号が2SD、3SD、または5SD未満に戻るまでの平均時間はどのくらいでしょうか。
ありがとう。
これは、期間を計算する非常に単純な式です。

次に、分布を実行してデータの形状を確認し、平均を取得しました。

以下の例では、1SDを超える期間を決定する新しい列を1つだけ作成します。式は非常に単純なので、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 ) )}
)
)
);