MACRO # minitab local macro for versions 11-13
MIX14 X GUESS MOD;
PARAM M S P;
POSTPROB PP.1-PP.10.
#______________________________________________________
# macro uses em algorithm to find maximum likelihood
# solution to fitting a mixture of n normals
# to a given univariate sample.
# macro provides lists of the estimated means, standard deviations,
# and proportions in the session window. Also provides a plot of the mixture
# model and its component normal densities. The macro optionally
# provides output of the estimated parameters and posterior
# probabilities if the subcommands are used to specify output columns.
# for param specify 3 columns. For postprob specify 10 columns.
# last modified: 07/02/06.
# author: michael thompson.
# further information: amc technical brief no 22.
# ****comment****the algorithm will fail if you have a singleton outlier
# and set input argument mod<>1. It will cope if you set mod=1. however,
# it is more productive to exclude obvious outliers unless you
# specifically want to include them in the model.
# ****comment****the algorithm is reasonably robust towards poor choice of
# starting estimates, but may fail if inappropriate values are used.
#______________________________________________________
#input declarations
MCOLUMNS X # input data in a column, not changed by procedure.
MCOLUMNS GUESS # starting estimates of component means in a column,
# unchanged by procedure.
MCONSTANTS MOD # if mod is set to 1, the algorithm will calculate a
# pooled standard deviation, otherwise each componment
# will have a separate standard deviation.
#_____________________________________________________________
#OUTPUT DECLARATIONS
MCOLUMNS M S P # estimated component parameters
MCOLUMNS PP.1-PP.10 # posterior probabilities of membership
#_______________________________________________________________
# workspace
MCOLUMNS Y
MCOLUMNS SUMPF
MCOLUMNS PF.1-PF.10
MCOLUMNS F.1-F.10
MCOLUMNS NIT
MCOLUMNS CLOGL
MCOLUMNS SUMP
MCOLUMNS WSS
MCOLUMNS XPOINT
MCONSTANTS NDATA
MCONSTANTS I INDEX
MCONSTANTS LOW HIGH INC TOP
MCONSTANTS PREVIOUS
MCONSTANTS NCOMP
MCONSTANTS LOGL
MCONSTANTS POOL
MCONSTANTS TEMP TEMPA
#____________________________________________________
NOTITLE
COPY GUESS M
LET NCOMP=N(M)
LET NDATA=N(X)
ERASE S P
# define prior probabilities for group membership
SORT X Y
LET LOW=Y(1)
DO I=1:NCOMP
IF I