내 데이터의 "팔꿈치"를 찾는 공식을 찾고 있습니다안녕하세요 JMP 친구들,
(일반 JMP 18.0.1에서는 예제 데이터 첨부)
저는 제 데이터가 "팔꿈치" 또는 굴곡을 갖는 시간(x 지점)을 찾아야 하는 일부 데이터를 분석하고 있습니다. 제 데이터에는 초기 미니 피크가 있으며 이 작업을 수동으로 수행해 왔습니다. 그러나 이 작업은 느리며, 아래와 유사한 그래프를 반환하는 수백 개의 테스트에 대해 이 작업을 수행할 것이므로 자동화하고 싶습니다. 피크 시간/양이 다양하고 '평평한' 시간이 다양합니다. '평평한' 시간은 일반적으로 매우 평평하지 않고 오히려 매우 점진적으로 감소합니다. 첨부된 그래프 이미지(예/더미 데이터)에서 제가 찾고 싶은 지점/영역을 볼 수 있습니다.
제가 할 수 있는 일에 대한 도움이 정말 도움이 될 것입니다. 플래그 열을 설정하는 것이 이것을 찾는 좋은 방법이라고 생각하지만 플래그를 작동시키는 데 사용할 수 있는 JSL이나 공식이 확실하지 않습니다.
이 문제를 알아내는 데 도움을 주시면 감사하겠습니다!

자동화 및 스크립팅기본 데이터 분석 및 모델링데이터 탐색 및 시각화윈도우Re: 내 데이터의 "팔꿈치"를 찾는 공식을 찾고 있습니다저는 팔꿈치를 데이터 포인트로 찾는 데 접근했는데, 다음 10개 데이터 포인트가 모두 이전 데이터 포인트보다 큽니다. 이것은 완전히 만들어진 알고리즘입니다. 하지만 팔꿈치를 식별하는 가능한 방법일 수 있는 듯합니다.


내가 Elbow라고 명명한 열에 대해 만든 공식은 다음과 같습니다.
As Constant(
flag = 0;
lookAhead = 10;
);
val = .;
If( flag == 0 & Row() < N Rows( Current Data Table() ) - lookAhead,
If(
Min(
:Counts[Index( Row() + 1, Row() + lookAhead + 1 )] - :Counts[
Index( Row(), Row() + lookAhead )]
) > 0,
val = (flag = 1)
)
);
val;
Re: 내 데이터의 "팔꿈치"를 찾는 공식을 찾고 있습니다글쎄요, 이 해결책은 훨씬 더 복잡해요.
피크 곡선에 함수를 맞춘 다음 2차 미분을 계산한다고 상상해보세요.

그래픽으로 보는 것이 더 쉽습니다. 그림에서 첫 번째 추적은 원래 데이터, 적합 모델, 적합의 1차 및 2차 도함수입니다. 보기 쉽지 않을 수 있지만 2차 도함수(파란색 선)의 최대값은 첫 번째 선(삼각형 마커)의 팔꿈치 중앙입니다.
JSL로 어떻게 거기에 도달했는지 알려드리겠습니다. (참고: 첫 번째 열의 이름을 변경했습니다)
이 스크립트에서는 JMP가 곡선 맞춤과 함께 모든 미적분을 정리하도록 했습니다.
Names Default To Here( 1 );
dt=Open( "$Examples/Example for Elbow.jmp" );
obj=dt <<FIT curve=""></FIT>
<P>마지막 단계는 "팔꿈치" 행을 빨간색 삼각형 마커로 바꿉니다. 하지만 선택한 행을 테이블로 쉽게 하위 집합화하여 다른 모든 적합과 함께 테이블에 추가할 수도 있습니다. 저는 수백 개의 테이블로 이것을 시도하지 않았지만 많은 데이터 테이블을 반복하기 위해 루프에 넣으면 상당히 빠르게 실행될 것이라고 생각합니다.</P>Re: 내 데이터의 "팔꿈치"를 찾는 공식을 찾고 있습니다Spectris Add-in을 살펴보세요. 1차 피크와 2차 피크(아마도 어깨를 유발하는 것)를 모두 맞추는 데 사용할 수 있습니다.
https://community.jmp.com/t5/JMP-Add-Ins/Spectris-Graphical-spectral-data-processing/ta-p/650521
M
Re: 내 데이터의 "팔꿈치"를 찾는 공식을 찾고 있습니다안녕 바이런,
이거 고맙네요! 저는 평활 함수에서 2차 도함수를 시도해 보았지만 작동하지 않는 것 같았어요. 하지만 skew normal 함수는 시도해 보지 않았어요. 시도해 보고 제게 어떤 게 잡히는지 볼게요! 또한 'Kneedle' 알고리즘을 스크립팅하는 방법을 알아내려고 하는데, 그래프에서 '팔꿈치' 지점을 정말 잘 찾는 걸 발견했어요.
감사해요!
로셸