Je suis actuellement en train d'effectuer un test de longévité avec quatre unités qui répondent à une application de gaz périodique (bien que les intervalles entre les applications de gaz ne soient pas cohérents !). J'ai tracé les données dans le graphique ci-dessous :

Quelqu'un connaît-il un moyen de filtrer les valeurs maximales afin de pouvoir afficher une ligne de tendance et procéder à une analyse plus approfondie ? La plupart des points de données se rapprochent des valeurs minimales de chaque unité, c'est pourquoi toute ligne d'ajustement pour l'ensemble de données apparaît tout en bas du graphique :

Je peux le faire manuellement, mais comme cela doit être répété tout au long du test, cela peut devenir assez fastidieux. Merci d'avance !
Quelles lignes de tendance espérez-vous identifier ? Il est évident que les données contiennent beaucoup de bruit, mais je peux voir potentiellement certaines zones « dans le bruit » qui ressemblent à une ligne de tendance. Si vous souhaitez simplement extraire la valeur maximale (c'est-à-dire la ligne supérieure), vous pouvez extraire la valeur maximale par heure ? Une autre option pourrait être d'examiner une moyenne mobile ( https://community.jmp.com/t5/Discussions/Moving-Average/td-p/87647 )
Salut Ben, les points que je recherche sont ceux qui se situent en haut de chaque graphique. Je cherche à obtenir la réponse maximale de chaque unité lorsque le gaz est appliqué afin de pouvoir modéliser la dégradation au fil du temps. Idéalement, cela ressemblerait à quelque chose comme ceci :

Cela pourrait fonctionner ! Existe-t-il un moyen simple d'« extraire la valeur maximale par heure » dans une colonne de formule ?
Salut @AvgLlama27 ,
Pourriez-vous fournir un exemple de votre ensemble de données à examiner ?
Merci,
Ben
Salut @Ben_BarrIngh
J'ai joint l'ensemble de données au message d'origine.
Merci,
Cameron
Salut @AvgLlama27 ,
J'ai obtenu un bon résultat avec le script ci-joint - je ne pense pas que vous puissiez facilement le faire avec une colonne de formules. Le script ci-dessous fonctionne de la manière suivante :
1) Prendre des « tranches » d'une largeur définie (nombre de lignes) par numéro de série - dans l'exemple ci-dessous, il échantillonne 600 lignes
2) Trouvez la valeur maximale pour cette « tranche »
3) Stockez la valeur maximale à côté des première et dernière valeurs de « temps écoulé » et d'« horodatage » pour la première et la dernière ligne.
Vous devrez adapter la variable « windowsize » et jouer avec pour trouver une bonne solution, mais un essai rapide à 600 lignes a bien fonctionné.
Avant

Après

Acclamations,
Ben
// Get the current data table
dt = Current Data Table();
Windowsize = 600; //Set this to the 'width' you want to evaluate
// Initialize an empty table to store the results
dt_summary = New Table( "Summary Table",
New Column( "Serial No", Character ),
New Column( "Batch No", Numeric ),
New Column( "Max Value", Numeric ),
New Column( "Min Elapsed Time", Numeric ),
New Column( "Max Elapsed Time", Numeric ),
New Column( "Start Timestamp", "Numeric", "Nominal", Format("m/d/y h:m:s", 23, 0) ),
New Column( "End Timestamp", "Numeric", "Nominal", Format("m/d/y h:m:s", 23, 0) )
);
// Iterate over unique "Serial No"/identifier column
serials = Associative Array( dt:SerialNo ) << Get Keys();//removes duplicate values
//Run a loop to pull out the max row values for each 'window'
For( i = 1, i <= N Items( serials ), i++,
serial = serials[i];
// Get rows for the current Serial No
rows = dt << Get Rows Where( dt:SerialNo == serial );
// Loop through every [windowsize] rows
For( j = 1, j <= N Items( rows ), j += windowsize,
// Determine the range of rows for the current batch
batch_rows = rows[j :: Min( j + (windowsize-1), N Items( rows ) )];
// Get the max value for this batch
max_val = Max( dt:VOCVoltage[batch_rows] );
// Get the range of 'Elapsed Time'
min_elapsed_time = Min( dt:"Elapsed Time,hours"n[batch_rows] );
max_elapsed_time = Max( dt:"Elapsed Time,hours"n[batch_rows] );
// Get the start and end 'Timestamp'
start_timestamp = dt:Timestamp[batch_rows[1]];
end_timestamp = dt:Timestamp[batch_rows[N Items( batch_rows )]];
// Add a row to the summary table
dt_summary << Add Rows( 1 );
dt_summary:Serial No[N Row( dt_summary )] = serial;
dt_summary:Batch No[N Row( dt_summary )] = Ceiling( j / windowsize );
dt_summary:Max Value[N Row( dt_summary )] = max_val;
dt_summary:Min Elapsed Time[N Row( dt_summary )] = min_elapsed_time;
dt_summary:Max Elapsed Time[N Row( dt_summary )] = max_elapsed_time;
dt_summary:Start Timestamp[N Row( dt_summary )] = start_timestamp ;
dt_summary:End Timestamp[N Row( dt_summary )] = end_timestamp ;
);
);
// Show the summary table
dt_summary << Show Window;
Cela fonctionne parfaitement,
Merci pour votre aide @Ben_BarrIngh