GrubbsOutlierTest2를 다 변수 데이터 테이블로 통합이전에 언급했듯이 SQL 스크립트를 사용하여 결합 된 복잡한 데이터 테이블 집합을 다루고 있습니다. 이 커뮤니티의 도움을 받아 사용자가 선택한 조건에 따라 플롯 및 배포판을 만드는 "응용 프로그램"기반 스크립트를 만들었습니다.
문제의 마지막 부분은 이러한 성가신 이상 치를 다루고 있습니다. 늘 그렇듯이, 문제는 아웃 라이어를 식별하고 데이터 세트에서 제거하는 테스트 조건을 반복하는 것입니다. 나는 그것들을 제거하는 것이 위험 할 수 있다는 것을 이해합니다. 그러나 우리의 복잡한 테스트가 이루어지면 부품이 꽉 짜여 있거나 파국적으로 실패합니다. 나는 g> g0가 이상 치를 찾아서 지우는 지 알아보기 위해 노력하고있다.
첨부 : 메인 테이블과 메인 테이블에서 3 개의 서브 세트.
나는 이것을 찾았다 실 그것은 하나의 컬럼에서 그것을 할 수 있지만 다시, 어떻게 모든 것을 통해 하나의 루프합니까?
나는 이러한 조건들 중 일부를 반복하는 스크립트를 꽤 많이 가지고 있지만 정확한 조합을 이해할 수는 없습니다.
다시 도움을 주셔서 감사합니다.
재 : 다중 변수 데이터 테이블에 GrubbsOutlierTest2의 통합업데이트 : 나는 GrubbsOutlier에게 일종의 일을 맡길 수있었습니다. 하나의 테스트 조건을 받아 내가 필요한 것을 얻을 수 있습니다. 그러나 For Loop를 잡아 두 개의 테스트 조건을 잡았습니다.
이 스크립트를 샘플 데이터 _ 1 웨이퍼 (test_3) .jmp에 대해 실행하고 내가 찾고있는 출력을 볼 수 있습니다. 두 번째 Trmode를 추가하는 데 도움이되고 여러 개의 웨이퍼 샘플 데이터 _ 6 개의 웨이퍼 (test_3) .jmp가있는 데이터 세트에서이 작업을 수행하는 데 도움이됩니다.
이 문제가 해결 된 후 If (g> g0) Loc ()를 수행하려고 시도하고 데이터 세트에서 삭제합니다.
고맙습니다
dt = Current Data Table();
dtsum = dt << Summary(
Group( :channel, :trmode ),
Interquartile Range( :Output ),
Freq( "None" ),
Weight( "None" ),
// invisible
);
Current Data Table( dt );<BR />
// <INSERT for="" loop="" here="">
dist = dt << Distribution(
Y( Column( "Output" )),
By( Column( "channel" ) ),
Normal Quantille Plot( 1 ),
Fit Distribution(
Normal(
Goodness of FIt( 1 )
)
),<BR />// Added a For() Loop located at the botton of the screen, the script hangs up<BR />// Where( dt :trmode == mode )
Where( dt :trmode == "Tx" )<BR /><BR /> );
distr = dist << Report;
bCol = Column( "channel ");
Summarize( group = By( bCol ));
yy = Column( "Output" ) << Get As Matrix;
exRows = dt << Get Excluded Rows();
yy[exRows] = .;
For( i = 1, i <= N Items( group ), i++,
groupName = Trim( Word( 2, distr[i][OutlineBox(1)] << Get Title, "=" ) );
getRows = dt << Get Rows Where( bCol[] == groupName );
yVal = yy[getRows];
yVal[Loc( Is Missing( yVal ) )] = [];
n = N Row( yVal );
a = 0.05;
t0Sqr = t Quantile( 1 - a/(2*n), n-2 )^2;
g = Maximum( Abs( yVal - Mean( yVal ) ) ) / Std Dev( yVal );
g0 = ((n-1)/Sqrt(n)) * Sqrt( t0Sqr / (n - 2 + t0Sqr) );
distr[i][Outline Box(2)] << Append(
Outline Box( "Grubbs' Outlier Test",
Table Box(
String Col Box( "Statistic", {"G", "G("||Char(a)||")"} ),
Number Col Box( "Estimate", Matrix( {g, g0} ) )
),
Text Box(
If( g>g0,
"Outlier detected",
"No outlier detected"
)
)
)
);
);
// For Loop I was trying to use
// For( i = 1, i <= N Rows( dtsum ), i++,
// mode = dtsum:trmode[i];
// < Insert Script From Above >
// );
</INSERT>
재 : 다중 변수 데이터 테이블에 GrubbsOutlierTest2의 통합네, 그렇지만 g> g0를 cacluate하는 자동화 된 형식으로 사용하고 싶습니다. 그런 다음 각 테스트에 대한 계산으로 By : 채널은 아웃 라이어를 찾은 다음 수동으로 수행하는 대신 데이터 세트에서 제외합니다.
재 : 다중 변수 데이터 테이블에 GrubbsOutlierTest2의 통합Grubb의 아웃 라이어 테스트 용 스크립트는 By 분석 역할의 그룹화 변수를 사용할 수 있습니다.
재 : 다중 변수 데이터 테이블에 GrubbsOutlierTest2의 통합이 사실을 분명하게 알리지 못해서 사과드립니다. test_1은 3 개의 다른 set_id {7000,7100,7200}을 포함합니다.
set_id 7000은 1 채널 (스위칭) + 2 전원 = 2 테스트 출력
set_id 7100에는 16 채널 + 2 소모품 = 32 테스트 출력
set_id 7200은 16 채널 + 2 소모품 = 32 테스트 출력
총 = 66
나는 나 자신보다 앞섰고 set_id : 7000이 단지 2 조건이라는 것을 잊어 버렸다. 3 가지 검사 모두 = 105
나는 또한 그것에게 약간 생각을주고 원래 포스트를 다시 쓸 필요가있다. 나는 각 테스트 (_1, _2, _3)를 부분 집합 화하는 것이 더 쉬운 일이라고 생각하고 배포본과 관련된 작업을 수행한다. 기본 테이블은 내 그래프 플롯에 적합합니다. 서브 세트는 우리가 테스트하는 테스트 및 테스트 조건이 될 것입니다 ...
재 : 다중 변수 데이터 테이블에 GrubbsOutlierTest2의 통합너의 테이블에 집중하자. # 1, 그 안에 'test_1'만 있으면됩니다. 나는 여러분이 각각의 3 * 2 * 16 = 96 '루핑 조건'을 그룹을 정의하고이 그룹들 각각에서 아웃 라이어를 찾길 원한다고 말하고 있다고 생각합니다. 그게 맞습니까? 그러나 첨부 된 표에 따르면 # 1에는 96 개가 아니라 105 개의 그룹이 있습니다.