Attualmente sto eseguendo un test di longevità con quattro unità che rispondono periodicamente a un'applicazione di gas (anche se gli intervalli tra le applicazioni di gas non sono coerenti!). Ho tracciato i dati nel grafico seguente:

Qualcuno conosce un modo in cui posso filtrare le letture di picco in modo da poter mostrare una linea di tendenza e procedere con ulteriori analisi? La maggior parte dei punti dati si avvicina alle letture minime di ciascuna unità, quindi qualsiasi linea di adattamento per il set di dati appare proprio in fondo al grafico:

Sono in grado di farlo manualmente, tuttavia, poiché deve essere ripetuto durante il test, può diventare piuttosto noioso. Grazie in anticipo!
Quali linee di tendenza speri di individuare? Ovviamente hai molto rumore nei dati, ma vedo potenzialmente alcune aree "nel rumore" che assomigliano a una linea di tendenza. Se vuoi solo estrarre il valore massimo (ad esempio la linea superiore), potresti estrarre il valore massimo per volta? Un'altra opzione potrebbe essere quella di guardare una media mobile ( https://community.jmp.com/t5/Discussions/Moving-Average/td-p/87647 )
Ciao Ben, i punti che sto cercando sono quelli che si avvicinano alla cima di ogni grafico. Sto cercando di prendere la risposta massima da ogni unità mentre viene applicato il gas in modo da poter modellare la degradazione nel tempo. Idealmente, dovrebbe essere qualcosa del genere:

Potrebbe funzionare! Esiste un modo semplice per " estrarre il valore massimo per volta" in una colonna formula?
Ciao @AvgLlama27 ,
Potresti fornirci un esempio del tuo set di dati da esaminare?
Grazie,
Ben
Ciao @Ben_BarrIngh
Ho allegato il set di dati al post originale.
Grazie,
Cameron
Ciao @AvgLlama27 ,
Ho ottenuto un buon successo con lo script allegato - non credo che potresti farlo facilmente con una colonna formula. Lo script qui sotto funziona così:
1) Prendendo 'Fette' di una larghezza impostata (numero di righe) per numero di serie - nell'esempio seguente vengono campionate 600 righe
2) Trova il valore massimo per quella "fetta"
3) Memorizzare il valore massimo insieme al primo e all'ultimo valore di "tempo trascorso" e "timestamp" per la prima e l'ultima riga.
Sarà necessario adattare la variabile 'windowsize' e sperimentare per trovare la soluzione migliore, ma un rapido tentativo con 600 righe ha funzionato bene.
Prima

Dopo

Saluti,
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;
Funziona perfettamente,
Grazie per il tuo aiuto @Ben_BarrIngh