PROC CORRESP Tables Statement Illustrations
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: CRSPTAB1 */
/* TITLE: PROC CORRESP Tables Statement Illustrations */
/* PRODUCT: STAT */
/* SYSTEM: ALL */
/* KEYS: marketing research, categorical data analysis */
/* PROCS: CORRESP */
/* DATA: */
/* */
/* SUPPORT: saswfk UPDATE: July 25, 2010 */
/* REF: PROC CORRESP, DETAILS, TABLES */
/* MISC: */
/****************************************************************/
title 'PROC CORRESP Table Construction';
data Neighbor;
input Name $ 1-10 Age $ 12-18 Sex $ 19-25
Height $ 26-30 Hair $ 32-37;
datalines;
Jones Old Male Short White
Smith Young Female Tall Brown
Kasavitz Old Male Short Brown
Ernst Old Female Tall White
Zannoria Old Female Short Brown
Spangel Young Male Tall Blond
Myers Young Male Tall Brown
Kasinski Old Male Short Blond
Colman Young Female Short Blond
Delafave Old Male Tall Brown
Singer Young Male Tall Brown
Igor Old Short
;
proc corresp data=Neighbor dimens=1 observed short;
title2 'Simple Crosstabulation';
ods select observed;
tables Sex, Age;
run;
proc corresp data=neighbor observed short binary;
title2 'Binary Coding';
ods select binary;
tables Hair Height Sex Age;
run;
proc corresp data=neighbor observed short;
title2 'Binary Coding';
ods select observed;
tables Name, Hair Height Sex Age;
run;
proc corresp data=neighbor observed short mca;
title2 'MCA Burt Table';
ods select burt;
tables Hair Height Sex Age;
run;
proc corresp data=neighbor observed short dimens=1;
title2 'Part of the Burt Table';
ods output observed=o;
tables Hair Height, Height;
run;
proc print data=o(drop=sum) label noobs;
where label ne 'Sum';
label label = '00'x;
run;
proc corresp data=neighbor observed short dimens=1;
title2 'Multiple Crosstabulations';
ods select observed;
tables Hair, Height Sex;
run;
proc corresp data=Neighbor cross=row observed short;
title2 'Multiple Crosstabulations with Crossed Rows';
ods select observed;
tables Hair Height, Sex Age;
run;
proc corresp data=Neighbor observed short mca;
title2 'MCA with Supplementary Variables';
ods select burt supcols;
tables Hair Height Sex Age;
supplementary Age;
run;
proc corresp data=Neighbor observed short binary;
title2 'Supplementary Binary Variables';
ods select binary supcols;
tables Hair Height Sex Age;
supplementary Age;
run;
title 'Doubling Yes/No Data';
proc format;
value yn 0 = 'No ' 1 = 'Yes';
run;
data BrandChoice;
input a b c;
label a = 'Brand A' b = 'Brand B' c = 'Brand B';
format a b c yn.;
datalines;
0 0 1
1 1 0
0 1 1
0 1 0
1 0 0
;
proc transreg data=BrandChoice design separators=': ';
model class(a b c / zero=none);
output out=Doubled(drop=_: Intercept);
run;
proc print label;
run;
proc corresp data=Doubled norow short;
var &_trgind;
run;
title 'Fuzzy Coding of Missing Values';
proc transreg data=Neighbor design cprefix=0;
model class(Age Sex Height Hair / zero=none);
output out=Neighbor2(drop=_: Intercept);
id Name;
run;
data Neighbor3;
set Neighbor2;
if Sex = ' ' then do;
Female = 0.5;
Male = 0.5;
end;
if Hair = ' ' then do;
White = 1/3;
Brown = 1/3;
Blond = 1/3;
end;
run;
proc print label noobs data=Neighbor3(drop=age--name);
format _numeric_ best4.;
run;