スチューデント化された残差を保存してグループ化し、以下のように外れ値のスクリーニングを実行します。
Explore Outliers(
Y( Column Group( "Studentized Group" ) ),
Robust Fit Outliers( K Sigma( 2.5 ), Huber( 1 ) )
);
obj << Change to Missing(
ここで、スチューデント化された列に欠落がある場合、スチューデント化された残差で見つかった外れ値である行を除いて、元のデータすべてを使用して、その Y (変数) から新しい列を作成する必要があります。
変数は 1 つだけではなく、複数存在する可能性があります。その場合は、一般化する必要があります。
これはおそらく、「スチューデント化残差」の後の文字列をチェックして、同じ名前を持つ同じ列を見つけて新しい列を作成し、スチューデント化残差の列/行が欠落しているものを変更する数式/スクリプトだと思います。
こんにちはうわー 、
このプラットフォームでは、新しい数式列内の外れ値を削除する「Culled」列を作成できるスクリプトを作成できます。
サンプルデータフォルダの「Diamond」データセットを例として使用しています。Robust Fit Outlierプラットフォームを実行すると、「Formula Column」を押すと外れ値が削除された新しい列が作成されます。

以下のダイヤモンド データ セットでは、値が削除されていることがわかります。

スクリプトを作成したい場合は、次のようにします (より柔軟にするために、列を選択するメニュー オプションを追加しました)。
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 式を実行する必要があります (おっしゃるとおり)。ただし、その後、外れ値で見つかったパラメータの新しい列を作成して、実際のデータ セットで外れ値のない列に変更する必要があります。
うわー ,
私の理解が正しければ、複数のモデルからのスチューデント化された残差である列のグループがあり、ロバスト フィット外れ値を実行してから、個々のスチューデント化された列のそれぞれのコピーを作成し、各列の外れ値の行を削除したいということですね。
その場合は、「数式列」をクリックするだけで新しい列が生成されます。または、以下のように 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