Salut,
Je me demandais s'il y aurait un moyen facile de récupérer la durée moyenne (en heures ou en minutes) pendant laquelle un signal reste au-dessus d'une certaine limite dans les données de séries temporelles. J'ai ajouté un exemple d'ensemble de données dans la pièce jointe.
J'ai ajouté quelques limites SD préliminaires que j'ai calculées sur la base de la ligne de base moyenne des données.

Alors, quelle serait la durée moyenne pour que le signal revienne en dessous de 2SD, 3SD ou 5SD?
Merci.
C'est une formule assez simple qui calculera les durées.

Et puis j'ai juste lancé une distribution pour voir la forme des données et pour obtenir la moyenne.

Dans mon exemple ci-dessous, je ne crée qu'une seule nouvelle colonne qui détermine la durée du temps passé sur 1 SD.La formule est assez simple, donc l'utiliser pour calculer le 2SD, etc. devrait être extensible à partir de la première formule.
Voici le JSL pour faire le calcul et l'affichage.Cela peut facilement être fait de manière interactive.
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 ) )}
)
)
);