次の JSL コードを使用すると、クラスタリング後の散布図マトリックスを表示できます。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Normal Mixtures(
Y( :height, :weight ),
{Mixtures Tolerance( 0.00000001 ), Mixtures MaxIter( 300 ),
Mixtures N Starts( 30 ), Outlier Cluster( 0 ), Diagonal Variance( 0 ),
Number of Clusters( 2 ), Go( Scatterplot Matrix( Ellipse Alpha( 0.1 ) ) )},
SendToReport(
Dispatch( {"Normal Mixtures NCluster=2"}, "Correlations for Normal Mixtures",
OutlineBox,
{Close( 0 )}
),
Dispatch( {"Normal Mixtures NCluster=2", "Scatterplot Matrix"}, "101",
ScaleBox,
{Min( 59.68 ), Max( 179.498666666667 ), Inc( 20 ), Minor Ticks( 0 )}
)
)
);
次の 2 つの質問についてサポートが必要です。
(1)JSLコードで楕円αを0.4に設定するにはどうすればよいですか?

(2)楕円に含まれる点をα=0.4で記録したいのですが、赤い楕円内の点には1、緑の楕円内の点には-1、両方の楕円の外側の点には0というラベルが付けられます。これはテーブルにクラスターを保存するのと似ていますが、楕円に含まれる点を記録したいのです。この機能をJSLコードに追加するにはどうすればよいですか?
通常の混合プラットフォームは、アクセスや操作がそれほど簡単ではない独自の散布図マトリックスを使用しているようです。クラスターをテーブルに保存し、散布図マトリックスを使用してプロットを作成できます。
Scatterplot Matrix(
Y(:height, :weight),
Group(:Cluster),
Matrix Format("Lower Triangular"),
Density Ellipses(1),
Ellipses Coverage(0.4),
Group By(:Cluster)
);
しかし、これではポイントを取得できません。これを取得するには、Fit Y by X プラットフォーム (By 列としてクラスターを使用) を使用できます。

これは楕円内の点を選択できる場所の1つです

何をしようとしているのかよくわからないので(ポイントを選択するだけなのか、それとも何らかのレポートも作成するのか)、以下は多くのことを実行するスクリプトです。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
nm = dt << Normal Mixtures(
Y(:height, :weight),
{Mixtures Tolerance(0.00000001), Mixtures MaxIter(300), Mixtures N Starts(30),
Outlier Cluster(0), Diagonal Variance(0), Number of Clusters(2), Go()}
)
)
);
cols = Associative Array(dt << Get Column Names("String"));
nm << Save Clusters;
cluster_col = Associative Array(dt << Get Column Names("String"));
cluster_col << Remove(cols);
cluster_col = (cluster_col << get keys)[1];
vlb << Append(
sm = dt << Scatterplot Matrix(
Y(:height, :weight),
Group(:Cluster),
Matrix Format("Lower Triangular"),
Shaded Ellipses(1),
Ellipses Coverage(0.4),
Group By(Eval(cluster_col))
);
);
biv = dt << Bivariate(Y(:weight), X(:height), By(:Cluster), Invisible);
biv << Density Ellipse(0.4, {Select Points Inside});
new_col = dt << New Column("Ellipse", Numeric, Nominal, Formula(
If(Selected() & :Cluster == 1,
1
, Selected() & :Cluster == 2,
-1
,
0
)
));
dt << run formulas;
new_col << Delete Formula;
dt << clear select;
// Just for visualization purposes
gb = dt << Graph Builder(
Size(653, 491),
Show Control Panel(0),
Variables(
X(:height),
Y(:weight),
Overlay(:Cluster, Overlay Encoding("Style")),
Color(:Ellipse)
),
Elements(Points(X, Y, Legend(3)))
);
For(i = 1, i <= 2, i++,
ls = Report(biv[i])[FrameBox(1)] << Find Seg(LineSeg(1));
xs = ls << Get X Values;
ys = ls << Get y Values;
Eval(EvalExpr(
Report(gb)[FrameBox(1)] << Add Graphics Script(
Line(Expr(xs), Expr(ys));
)
));
);
//biv << close window;

