Applying Cluster Analysis on Dissimilarity Matrix

I've used 9 audio stimuli to let 58 subjects rate dissimilarity on all pairwise comparison of them a few years back. The data is the basis for my planned presentation for AES118, using analysis methods like INDSCAL and MRA. There are several interesting methods that can be applicable to this kind of data, and today I've just came up with an idea of applying cluster analysis on this dissimilarity rating data.

Dissimilarity data obtained from 5-point dissimilarity rating is in a three dimensional matrix of size 58x9x9. Usually I use INDSCAL for analyzing this kind of data, but average was computed instead.

X = [

0 1.9828 3.4655 2.9138 3.8966 4.5690 2.9138 3.8276 4.7069

1.9138 0 2.0345 3.0517 3.2241 3.8793 3.2759 3.6207 4.0862

3.6034 1.8103 0 4.0345 3.3448 2.6034 4.0517 2.9310 3.3103

2.1552 2.8966 4.7759 0 2.3103 3.9655 1.7759 3.1897 4.4483

3.3448 2.8793 3.5862 2.1724 0 2.2241 2.7069 2.3621 3.1034

4.3276 3.0345 2.5345 3.3448 2.8966 0 3.6897 2.2069 2.0000

2.5517 3.2586 4.5000 2.4828 2.8966 4.4828 0 2.0345 3.6207

4.0517 2.8103 3.3621 2.8448 2.7069 3.5690 2.7241 0 1.8103

4.3793 3.2069 2.0517 3.7931 2.9310 2.0345 3.7931 2.0517 0];

The reason the matrix X is not in symmetric is that I've asked listeners to rate on both A-B and B-A comparison. It takes double amount of time, but rating will become more solid. Statistical Toolbox for Matlab has several Cluster Analysis routines: KMEANS, CLUSTER, LINKAGE, and so on. The most fun thing to do is to draw a dendrogram (clustering tree figure). The first thing to do is to reformat the dissimilarity matrix into a matrix that can be read by a routine called DENDROGRAM.

d = triu((X'+X) / 2); %taking mean of upper/lower triangle

P = d(d ~= 0)'; % choose only nonzero data

Z = linkage(P);

[H, T] = dendrogram(Z);

Complete! ...but it seems odd. The 9 stimuli were 3-by-3 sounds of (1,2,3) (4,5,6) and (7,8,9). Mmm... lot to thing about...