저는 학생화된 잔차를 저장하고 그룹화한 후 아래와 같이 이상치 스크리닝을 실행했습니다.
Explore Outliers(
Y( Column Group( "Studentized Group" ) ),
Robust Fit Outliers( K Sigma( 2.5 ), Huber( 1 ) )
);
obj << Change to Missing(
이제, 학생화 열에 누락된 것이 있다면 해당 Y(변수)에서 새 열을 만들어야 합니다. 여기에는 학생화 잔차에서 발견된 이상치인 행을 제외한 모든 원본 데이터가 사용됩니다.
변수는 1개만 있는 것이 아니라 여러 개가 될 수 있습니다. 그러면 일반적이어야 합니다.
아마도 "Studentized resid" 뒤에 오는 문자열을 검사하여 동일한 이름을 가진 동일한 열을 찾은 다음, Studentized residual 열/행에서 누락된 열을 변경하여 새 열을 만드는 수식/스크립트가 있을 것으로 생각합니다.
안녕하세요 @Bmllnn ,
이 플랫폼을 사용하면 새 수식 열에서 이상치인 값을 제거하는 '제거된' 열을 만들 수 있는 스크립트를 만들 수 있습니다.
샘플 데이터 폴더의 '다이아몬드' 데이터 세트를 예로 들어 보겠습니다. Robust Fit Outlier 플랫폼을 실행하면 '수식 열'을 누르면 이상치가 제거된 새 열이 생성됩니다.

아래의 다이아몬드 데이터 세트에서 값이 제거된 것을 볼 수 있습니다.

스크립트를 작성하고 싶다면 다음과 같이 할 수 있습니다(열을 선택할 수 있는 메뉴 옵션을 추가하여 더 유연하게 만들었습니다).
dt=current data table();
cols=dt<<GET column="" names=""></GET>
<BR />
<BR />안녕하세요,
답변 감사합니다. 현재 제가 가지고 있는 것은 다음과 같습니다.
obj << Studentized Residuals;
dt << Clear Selection;
colList = dt << Get Column Names( String );
For( i = 1, i <= N Cols( dt ), i++,
If( Contains( colList[i], "Studentized" ),
Column( colList[i] ) << Set Selected( 1 )
)
);
dt << group columns("Studentized Group");
// ANOTHER script
Names Default To Here(1);
dt=Current Data Table();
dt << Explore Outliers(
Y( Column Group("Studentized Group" ) ),
Robust Fit Outliers( K Sigma( 2.5 ), Huber( 1 ) ),
SendToReport(
Dispatch( {"Robust Fit Outliers"}, "", TabListBox, {Set Selected( 2 )} ),
Dispatch( {"Robust Fit Outliers"}, "", Tab Page Box( 2 ),
{Title( "Outliers by Cell" )}
),
Dispatch( {"Robust Fit Outliers"}, "", List Box( 9 ),
{Padding( {Left( 12 ), Top( 0 ), Right( 0 ), Bottom( 0 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", TextBox,
{Padding( {Left( 2 ), Top( 6 ), Right( 0 ), Bottom( 8 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", Panel Box( 3 ),
{Padding( {Left( 0 ), Top( 0 ), Right( 12 ), Bottom( 0 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", Lineup Box( 3 ), {Spacing( 1 )} ),
Dispatch( {"Robust Fit Outliers"}, "", Button Box( 11 ),
{Margin( {Left( 1 ), Top( 1 ), Right( 1 ), Bottom( 1 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", Button Box( 12 ),
{Margin( {Left( 1 ), Top( 1 ), Right( 1 ), Bottom( 1 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", Lineup Box( 4 ), {Spacing( 1 )} ),
Dispatch( {"Robust Fit Outliers"}, "", Button Box( 13 ),
{Margin( {Left( 1 ), Top( 1 ), Right( 1 ), Bottom( 1 )} )}
),
Dispatch( {"Robust Fit Outliers"}, "", Button Box( 14 ),
{Margin( {Left( 1 ), Top( 1 ), Right( 1 ), Bottom( 1 )} )}
)
)
);그게 전부 작동 중입니다. 그런 다음 여기에서 이상치를 선택하고 학생화된 잔차에 대한 새 열에서 IF 공식을 실행해야 합니다(언급하신 대로). 그러나 그 후에 이상치와 함께 발견된 매개변수에 대한 새 열을 만들어 실제 데이터 세트에서 이상치가 없는 열로 변경해야 합니다.
@Bmllnn ,
제가 올바르게 이해했다면, 여러 모델에서 추출한 스튜던트화된 잔차인 열 그룹이 있고, Robust Fit 이상치를 실행한 다음 각 스튜던트화된 열의 복사본을 만들고 각 열의 이상치 행을 제거하려는 건가요?
그렇다면 '수식 열'을 클릭하기만 하면 새로운 열이 생성되거나 아래와 같이 JSL을 사용할 수 있습니다.
Names Default to Here(1);
dt=current data table();
colList = dt << Get Column Names( String );
For( i = 1, i <= N Cols( dt ), i++,
If( Contains( colList[i], "Studentized" ),
Column( colList[i] ) << Set Selected( 1 )
)
);
dt << group columns("Studentized Group");
//Run the outliers
obj=Explore Outliers(
Y( Column Group( "Studentized Group" ) ),
);
obj<< Robust Fit Outliers( K Sigma( 2.5 ), Huber( 1 ) );//run the robust fit
wait(2);//wait to allow time for platform to run and perform calculations
obj<< Formula Columns( Suffix( "Culled" ) );//Create each column from the original studentised, with outliers removed