If you get the number of peaks by inspection, you could try something like this:
NamesDefaultToHere(1);
// Make some random data (with known parameters)
d1 = J(40, 1, RandomNormal(0, 1));
d2 = J(60, 1, RandomNormal(4, 2));
d3 = J(30, 1, RandomNormal(-6, 1));
// Make a table
dt = AsTable(VConcat(d1, d2, d3));
dt << setName("A Mixture of Samples from Three Gaussians");
Column(dt, "Col1") << setName("Y");
// Do a 'Normal Mixtures' analysis
dt << Distribution(
Continuous Distribution(
Column( :Y ),
Vertical( 0 ),
Fit Distribution( Normal Mixtures( Clusters( 3 ) ) )
),
Histograms Only,
SendToReport(
Dispatch(
{"Y"},
"Distrib Histogram",
FrameBox,
{Frame Size( 600, 267 ), DispatchSeg( Hist Seg( 1 ), Bin Span( 2, 0 ) )}
)
)
);