Documentation Example 4 for PROC FMM
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: fmmex04 */
/* TITLE: Documentation Example 4 for PROC FMM */
/* Multinomial Cluster Model */
/* PRODUCT: STAT */
/* SYSTEM: ALL */
/* KEYS: Multinomial overdispersion */
/* Information Criteria */
/* */
/* PROCS: FMM */
/* DATA: Housing satisfaction data, Wilson (1989). */
/* */
/* SUPPORT: Dave Kessler */
/* REF: Brier, S.S. (1980), Analysis of contingency tables */
/* under cluster sampling, Biometrika, 67, 591-596 */
/* */
/* REF: Wilson J.R., (1989), Chi-square tests for */
/* overdispersion with multiparameter estimates, */
/* Journal of the Royal Statistical Society Series C */
/* (Applied Statistics), 38, 3, 441-453 */
/* */
/* REF: Morel, J.G. and Nagaraj, N.K. [sic] (1993), */
/* A Finite Mixture Distribution for Modeling */
/* Multinomial Extra Variation, Biometrika, 80, */
/* 363-371 */
/* */
/* MISC: */
/****************************************************************/
data housing;
label us = 'Unsatisfied'
s = 'Satisfied'
vs = 'Very Satisfied';
input type $ us s vs @@;
datalines;
rural 3 2 0 rural 3 2 0 rural 0 5 0 rural 3 2 0 rural 0 5 0
rural 4 1 0 rural 3 2 0 rural 2 3 0 rural 4 0 1 rural 0 4 1
rural 2 3 0 rural 4 1 0 rural 4 1 0 rural 1 2 2 rural 4 1 0
rural 1 3 1 rural 4 1 0 rural 5 0 0
urban 0 4 1 urban 0 5 0 urban 0 3 2 urban 3 2 0 urban 2 3 0
urban 1 3 1 urban 4 1 0 urban 4 0 1 urban 0 3 2 urban 1 2 2
urban 0 5 0 urban 3 2 0 urban 2 3 0 urban 2 2 1 urban 4 0 1
urban 0 4 1 urban 4 1 0
;
proc fmm data=housing;
class type;
model us s vs = Type / dist=multinomial;
output out=Pred pred;
run;
data Pred; set Pred;
Pred_1 = Pred_1 / (us + s + vs);
Pred_2 = Pred_2 / (us + s + vs);
Pred_3 = Pred_3 / (us + s + vs);
run;
proc sort data=Pred nodupkey;
by type;
proc print data=pred noobs;
var type pred:;
run;
proc fmm data=housing;
class type;
model us s vs = Type / dist=multinomcluster;
output out=Pred pred;
probmodel Type;
run;
data Pred; set Pred;
Pred_1 = Pred_1 / (us + s + vs);
Pred_2 = Pred_2 / (us + s + vs);
Pred_3 = Pred_3 / (us + s + vs);
run;
proc sort data=Pred nodupkey;
by type;
proc print data=pred noobs;
var type pred:;
run;