El siguiente código JSL se puede utilizar para mostrar una matriz de diagrama de dispersión después de la agrupación.
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 )}
)
)
);
Necesito ayuda con las siguientes dos preguntas:
(1) ¿Cómo puedo establecer la Elipse α en 0,4 en el código JSL?

(2) Me gustaría registrar los puntos incluidos en la elipse con un α de 0,4, donde los puntos dentro de la elipse roja están etiquetados como 1, aquellos dentro de la elipse verde están etiquetados como -1 y los puntos fuera de ambas elipses están etiquetados como 0. Esto es similar a guardar clústeres en una tabla, pero en su lugar, quiero registrar los puntos incluidos en las elipses. ¿Cómo puedo agregar esta funcionalidad al código JSL?
Parece que la plataforma de mezclas normal podría estar usando su propia matriz de diagrama de dispersión, a la que no es tan fácil acceder ni manipular. Puede guardar los grupos en su tabla y luego usar la matriz de diagrama de dispersión para crear el gráfico.
Scatterplot Matrix(
Y(:height, :weight),
Group(:Cluster),
Matrix Format("Lower Triangular"),
Density Ellipses(1),
Ellipses Coverage(0.4),
Group By(:Cluster)
);
pero esto no te permitirá obtener los puntos. Para obtenerlos puedes usar la plataforma Fit Y by X (usa el clúster como columna Por).

Este es un lugar donde sé que puedes seleccionar los puntos dentro de las elipses.

Como no estoy muy seguro de lo que estás intentando hacer (¿solo estás intentando seleccionar los puntos o también tienes algún tipo de informe?), a continuación se muestra un script que hace muchas cosas.
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;

