# Normalize sample data for clustering

I have three types of summary score, $a, b$ and $c$ for 200 samples.

$S1, S2, S3,..., S200$

$a_{s1}, a_{s2}, ..., a_{s200}$

$b_{s1}, b_{s2}, ..., b_{s200}$

$c_{s1}, c_{s2}, ..., c_{s200}$

Each of these scores is essentially the number of times that some event occurs in the data of each sample. I wish to find groups of these samples by correlation-based clustering. However, the scales for each of these scores are very different:

Summary of $a$:

Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
2.0   36.0   55.0   52.5   69.0  139.0


Summary of $b$:

Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
8.0   99.5   285.0   292.7   737.5  2624.0


Summary of $c$:

Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
40.0    111.0   176.0   300.4   554.5   779.0


Should I have to normalize the scores? If so, how?

NB. I want to make no assumptions about the dependence or independence between these types of events and hence between these summary scores.

UPDATE: So, I've decided to try clustering with Euclidean. In order to get normalized and transformed data, I'm doing the following: 1. test whether scores fit a normal distribution with Shapiro test

1. if not, then do a boxcox transformation using $\lambda$ from a boxcoxfit

2. get z-score for each score

3. cluster with euclidean distance measure

Does this seem reasonable?

• Yes, it does seem reasonable. – emrea Jun 4 '12 at 19:23

Clustering in general requires a similarity metric to compute a partitioning of your data. Do you know how to compute the similarity of $\vec{a}$ to $\vec{b}$? Whether you need normalization or not will mainly depend on this question. If you don't have such a metric/measure, and you want to go with the regular Euclidean distance, normalizing your data -- bringing each variable to zero mean and unit variance -- would be recommended. Because if you don't, the scores with the largest range will dominate the distance computation.

• I was thinking of using correlation rather than Euclidean distance. Would I need to normalize for correlation? I'm not a statistician, how do I go about normalizing? – user1202664 May 29 '12 at 21:02
• I don't think any normalization is needed if you want to use correlation. Unfortunately, I don't have any experience with correlation based clustering. – emrea May 30 '12 at 2:19
• "the scores with the largest range will dominate the distance computation." Why is this a bad thing? – user1202664 Jun 12 '12 at 12:52
• It is bad in the sense that the contribution of the small-range features to the overall distance will be minimal. If we exaggerate, the distance will be determined by the large-range features only. But if the range of a feature is proportional to the "information" it carries, then maybe you don't need normalization. – emrea Jun 12 '12 at 17:12

To perform z-score normalisation on x, you don't have to test whether x is of normal distribution or not. For whatever distribution, z will be in a distribution of zero mean, one standard deviation.

Type of distribution matters when you use any test on the data, based on that particular distribution.

Convenience of normal distribution in this sense is that

if x is in normal distribution with mean m and standard deviation s z (= (x-m)/s) will also be in normal distribution with mean zero and standard deviation 1.

==== Some people use the normalisation for clustering using min and range of the data set:

z= (x - min_x) / (max_x - min_x)

making the data to fall in to [0,1]