Salut,
Je me demandais s'il y aurait un moyen simple 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 chronologiques. 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, quel serait le temps moyen pour que le signal revienne en dessous de 2SD, 3SD ou 5SD ?
Merci.
C'est une formule assez simple qui va calculer les durées.

Et puis j'ai juste exécuté 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 passée sur 1 SD.La formule est assez simple, donc son utilisation 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 ) )}
)
)
);