# (Multiple) Correspondence Analysis for count data entered as binary variables

I have a data set, 1014 cases and 55 variables which are binary and is in the form of

Brand1Attribute1, Brand1Attribute2, ... , Brand1Attribute11, Brand2Attribute1, ... Brand5Attribute11


with 0 = "No, I do not associate this attribute with this brand" and 1 = "Yes, I associate this attribute with this brand".

Basically, I have been trying to use multiple correspondence analysis in SPSS to plot a perceptual map of how the brands and attributes relate, but I have been getting nowhere. I am imagining a 2-dimension plot, with no meaningful axes, and the distance between points is proportional to the correlation between brands, or attributes, or between brand and attribute.

Correspondence Analysis is a method to visualize a contingency table, such as frequency cross-table. I presume that the table in your case would be 5 Brands X 11 Attributes and the entries are frequencies (counts) of 1s: attribute is characteristic of a brand. And you want the analysis to produce a biplot wherein points-brands are acommpanied by points-attributes characteristic of them.

Note that since your table is 2-way (Brands X Attributes), simple correspondence analysis is a method to choose. You don't have to entangle with multiple correspondence analysis which is a more general method for k-way tables. SPSS has both simple and multiple correspondence analyis procedures.

Your data is, so far, original respondent-level data, not the frequeny cross-table. Command CORRESPONDENCE (Simple correspondence analysis) can take in data in various of ways:

1. Two categorical nominal variables - Brand and Attribute - with only "Yes" responses, a data case being a response. This is the way suitable if you want to run CORRESPONDENCE from the dialog box.
2. Two categorical nominal variables - Brand and Attribute, aggregated, plus the frequency variable weighting the dataset.
3. Input right the 2-way rowsXcolumns contingency table. This option is available only throuh syntax, not dialog box.

Below I'm showing, as an example, the 1st way in detail.

  Imagine this is your data: 3 Brands X 4 Attributes binary variables, 20 respondents.
B1A1   B1A2   B1A3   B1A4   B2A1   B2A2   B2A3   B2A4   B3A1   B3A2   B3A3   B3A4
1      1      0      1      1      0      0      0      0      0      1      0
1      1      1      0      0      1      1      1      0      0      0      0
0      1      0      0      1      1      1      1      0      0      1      1
1      1      0      1      1      1      0      1      0      1      1      1
1      1      1      1      1      1      0      1      0      0      0      0
1      0      0      1      1      0      0      1      0      0      1      0
1      0      1      1      0      0      0      0      1      0      1      0
0      0      0      1      1      1      0      1      1      1      0      1
0      1      1      1      0      0      1      1      0      1      0      0
0      0      1      0      0      1      0      0      0      1      0      1
1      1      1      0      1      0      0      1      0      0      1      0
0      0      0      1      1      1      0      1      0      1      0      1
1      1      1      0      1      1      0      0      1      0      1      0
1      0      0      0      1      1      0      1      1      0      0      1
1      0      0      0      1      0      0      0      0      0      1      0
0      0      0      1      0      0      0      1      0      1      0      1
0      0      0      0      1      1      0      0      0      0      0      0
1      0      0      0      1      1      1      1      1      0      0      0
0      0      0      0      1      1      1      0      0      1      0      0
0      1      1      0      1      1      0      1      0      1      1      1

*Restructure the data (Goto menu Data-Restructure).
*Gather data corresponding to each brand into a single column.
*The syntax will be this.
VARSTOCASES
/ID= id /*Let's create respondent id, just in case
/MAKE B1data FROM B1A1 B1A2 B1A3 B1A4 /*Data of brand B1 goes here
/MAKE B2data FROM B2A1 B2A2 B2A3 B2A4 /*Data of brand B2 goes here
/MAKE B3data FROM B3A1 B3A2 B3A3 B3A4 /*Data of brand B3 goes here
/INDEX= Attribute(4) /*Create variable with codes 1...4 marking the attributes
/KEEP=
/NULL= DROP.

*Restructure the resultant dataset once again.
*This time gather data from 3 brands into single column.
VARSTOCASES
/MAKE Data FROM B1data B2data B3data
/INDEX= Brand(3) /*Create variable with codes 1...3 marking the brands
/KEEP= id Attribute /*Preserve these variables as is in the output dataset
/NULL= DROP.

*In the resultant dataset each case corresponds to a response, not respondent.
*The response itself (1 or 0) is in variable Data.
*Respondent number is saved in id, attribute code in Attribute, brand code in Brand.
*You may now add value labels to the latter two variables so that they will show on the
*future map (try to make labels consize therefore).

*Since we are interested in "Yes" data only, delete rows with zero data.
SELECT IF Data=1.
EXEC.
*We don't need variable Data anymore.

*Go to Correspondence Analysis dialog box.
*Enter Attribute and Brand Variables as defining the table and specify their range of codes.
*Leave defaults for everything else.
*Press Paste. The following syntax appears.
CORRESPONDENCE
TABLE= Attribute(1 4) BY Brand(1 3)
/DIMENSIONS= 2 /*We'll request 2d solution
/MEASURE= CHISQ /*using Chi-sq distance, most appropriate for the analysis of frequencies
/STANDARDIZE= RCMEAN /*this often produce interpretable maps, but you could try other methods too
/NORMALIZATION= SYMMETRICAL /*This means the biplot is most balanced in terms of "inertia"
/PRINT= TABLE RPOINTS CPOINTS
/PLOT= NDIM(1,MAX) BIPLOT(20).


It is noteworthy that Correspondence Analysis algorithm does not model the affinity between row categories and column categories directly. It allocates row points according to their profile similarity and column points according to their profile similarity - separately, in the space common to both. Thus, the affinity between a row point and a column point just emerges as the result of that "overlay". This is theoretically valid (as any biplot is), but Multidimensional Unfolding (MDU) might be a better choice because it does fit the rows-columns similarities directly. SPSS has quite versatile MDU procedure, so you can use it if you want. It can internally do preliminary Correspondence analysis to obtain the initial configuration for itself; or you can input the coordinates left by your (customized) Correspondence analysis as such initial configuration. Relations among several mapping techniques are briefly mentioned here. Maths of two-way (simple) correspondence analysis and related biplot techniques are found here.

• +1. Sorry for the late reply, but this was perfect for what I needed. Thanks ttnphns! – RS18 Sep 9 '13 at 22:17