
컨트롤 차트 세트에 대한 현재 또는 새로운 고정 컨트롤 제한과 관련하여 내 이전 컨트롤 제한이 어떻게 보이는지 확인하려는 문제에 직면했습니다. 일반적으로 각 그래프에 참조선을 추가하려고 하지만 오랫동안 잊혀진(적어도 나에게는) 플랫폼 메시지를 사용하는 더 좋은 방법이 있을 수 있다고 생각합니다.
올해 초 저는 새로운 열 속성을 추가하는 것이 어떤 모습일지 생각해 보았습니다. 이 경우에는 작업 및 경고 제한 환경 모니터링 차트의 경우 해당 열 속성을 컨트롤 차트의 참조선으로 사용합니다.
Scripting Index에서 완전히 다른 것을 찾던 중 "Add Limits"라는 기능을 발견했습니다. 내가 알 수 있는 한, 이 기능은 적어도 JMP 14 이전부터 오랫동안 사용되었으며 제어 차트에 상한 및 하한을 보내는 데 사용할 수 있습니다. 이러한 한계는 파선으로 표시되며 그래프 옆에 있는 표에 나열됩니다. 그렇게 하려면 많은 JSL이 필요하므로 매우 유용한 유틸리티를 발견하게 되어 기쁩니다.
"한도 추가"의 기본 사용법은 다음과 같습니다. 여기서 JSL의 마지막 줄은 점선 한도로 사용할 값이 포함된 메시지를 차트에 보냅니다.
//Example of adding limits to a control chart
ccb = dt << Control Chart Builder( Variables( Y( :Column 1 ) ), Show Control Panel( 0 ) );
ccb << chart( position( 1 ), Add Limits( {LCL( 20 ), UCL( 30 )} ) );
물론 모든 열에 동적으로 "제한 추가"를 사용하고 싶기 때문에 약간의 추가 작업이 필요합니다.
먼저 예제로 사용할 테이블을 설정해 보겠습니다.테이블을 설정하는 동안 테이블이 구성된 직후 작업할 일부 임의 데이터를 생성하는 수식을 삭제합니다. 이렇게 하면 테이블의 값이 수정됩니다.
dt=New Table( "old and new control limits",Add Rows( 50 ),
New Column( "Column 1",Numeric,"Continuous",Format( "Best", 12 ),
Formula( Round( Random Normal( 25, 3 ), 0 ) )));
column(dt, 1)<< Delete Formula;
다음 단계는 새로운 종류의 열 속성, 즉 JMP에 기본적으로 존재하지 않는 사용자 지정 항목을 추가하는 것입니다.이 줄을 실행한 후 데이터 테이블의 열에는 이제 기존 제어 한계 .
Column( dt, 1 ) << set property( "Old Control Limits", {LCL( 20 ), UCL( 30 )} );
그런 다음 스크립트가 작동했는지 확인하기 위해 열 속성에서 값을 볼 수 있습니다.새로운 변수, OCL , 두 가지 값이 있습니다. 엘씨엘(20) , 그리고 유씨엘(30) . 새 컨트롤 차트에서 해당 값을 사용할 수 있습니다.
OCL = Column( dt, 1 ) << Get Property( "Old Control Limits" );Show( OCL[1], OCL[2] );
다음 두 줄은 정말 이상하게 보일 수 있지만 매우 견고하며 JSL의 기능 기반 구조를 활용합니다.
먼저 비어 있거나 거의 비어 있는 두 개의 인수를 정의한 다음 함께 중첩할 것입니다.이러한 식을 설정하면 각 부분을 평가하지 않고 처리할 수 있습니다.CCBE , 컨트롤 차트 빌더 표현식은 함수입니다. 컨트롤 차트 빌더 두 가지 인수로, 변수 그리고 제어판 표시 .
다음으로 c라는 새 인수를 추가하고 싶습니다. 수사슴() 컨트롤 차트 빌더 기능에.
- 새로운 변수, CE 인수 c가 있는 표현식입니다. 수사슴 차트에는 인수가 포함됩니다. 위치 (1) .
- 추가하고 싶습니다. 차트 인수 그래서 변수가 있습니다 애 , 빈 참조 제한 추가 표현.
- 마지막으로 빈 목록을 만듭니다. 르 , 내가 얻은 한계를 포함합니다 속성 가져오기 에서 OCL 이전 단계의 변수.
ccbe = Expr(Control Chart Builder( Variables( Y( :Column 1 ) ), Show Control Panel( 0 ) ));
ce = Expr( chart( position( 1 ) ) );
ae = Expr( add limits() );
le = {};
그런 다음 조각을 함께 레이어링하여 다음을 수행합니다.
- 먼저 목록을 가져옵니다. OCL 에 삽입 르 .
- 둘째, 내가 취한다 르 에 삽입 애 , 다음에 삽입 애 ~ 안으로 CE . 두 번째 경우에는 포장했습니다. 애 안에 이름 Expr() . 이것은 나에게 평가 된 표현을 제공합니다 애 평가하지 않고. 이것 NameExpr() 방법은 매우 편리합니다.
- 셋째, 삽입 CE 로 CCBE , 전체 컨트롤 차트 표현식입니다.
- 나는 또한 포함 보여주다 각 단계 후에 로그에서 함수가 어떻게 빌드되고 있는지 확인할 수 있습니다.
- 마지막 단계는 그래프를 얻는 것입니다. 달리는 것만으로도 CCBE 전체 식을 포함하는 변수만 평가되고 열 속성에서 가져온 이전 제어 한계를 나타내는 파선이 있는 제어 차트를 얻습니다.
Insert Into( le, OCL );show( le );
Insert Into( ae, le );Show( ae );
Insert Into( ce, Name Expr( ae ) );Show( ce );
Insert Into( ccbe, Name Expr( ce ), 2 );
ccbe;
조금 더 노력하면 프로세스 변수의 전체 테이블에 대한 모든 열 속성을 채우는 데 사용할 수 있는 현재 및 이전 제어 한계를 포함하는 테이블로 시작할 수 있을 것이라고 확신합니다.
전체 스크립트를 첨부합니다.
멋진 @Byron_JMP
참고 사항 - Set Property()가 자신만의 것을 만들 수 있다는 것도 몰랐습니다. 열은 또 다른 개체일 뿐이므로 개체(열, 테이블) 변수/값을 설정하기 위한 새 테이블 변수와 유사합니다. 그 덩어리 주셔서 감사합니다!