저는 현재 주기적으로 가스를 적용하면 반응하는 4개의 유닛으로 수명 테스트를 진행하고 있습니다(가스 적용 간격은 일정하지 않지만!). 아래 그래프에 데이터를 표시했습니다.

피크 판독값을 필터링하여 추세선을 표시하고 추가 분석을 진행할 수 있는 방법을 아는 사람이 있나요? 대부분의 데이터 포인트가 각 단위의 최소 판독값에 가까워지고 있으므로 데이터 세트에 대한 모든 적합선은 그래프의 맨 아래에 바로 나타납니다.

저는 이것을 수동으로 할 수 있지만, 테스트 내내 이것을 반복해야 하기 때문에 꽤 지루할 수 있습니다. 미리 감사드립니다!
어떤 추세선을 선택하려고 합니까? 분명히 데이터에는 많은 노이즈가 있지만, 잠재적으로 '노이즈 속'에 추세선과 비슷한 영역이 보입니다. 최대값(즉, 최상위 라인)만 추출하고 싶다면 시간당 최대값을 추출할 수 있습니다. 또 다른 옵션은 이동 평균( https://community.jmp.com/t5/Discussions/Moving-Average/td-p/87647 )을 보는 것입니다.
안녕하세요 벤, 제가 찾는 점은 각 그래프의 상단에 가까운 점입니다. 가스가 적용될 때 각 단위에서 최대 반응을 얻어서 시간에 따른 저하를 모델링하고자 합니다. 이상적으로는 다음과 같습니다.

작동할 수도 있겠네요! 수식 열에서 "시간당 최대값 추출"을 쉽게 할 수 있는 방법이 있나요?
안녕하세요 @AvgLlama27 님 ,
살펴볼 수 있는 데이터 세트의 예를 제공해 주시겠습니까?
감사해요,
벤
안녕하세요 @AvgLlama27 님 ,
첨부된 스크립트로 꽤 좋은 성과를 거두었습니다. 수식 열로는 쉽게 할 수 없을 것 같습니다. 아래 스크립트는 다음과 같이 작동합니다.
1) 일련 번호당 설정된 너비(행 수)의 '슬라이스' 가져오기 - 아래 예에서는 600개 행을 샘플링합니다.
2) 해당 '슬라이스'에 대한 최대값을 찾으세요
3) 첫 번째와 마지막 행의 '경과 시간' 및 '타임 스탬프' 값과 함께 최대값을 저장합니다.
'windowsize' 변수를 조정하고 적절한 값을 찾으려면 여러 가지 방법을 동원해야 하지만, 600행에서 잠깐 시도해 본 결과는 잘 맞았습니다.
전에

후에

건배,
벤
// 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;
그것은 완벽하게 작동합니다,
@Ben_BarrIngh 도움을 주셔서 감사합니다