Scaled correlation

From Wikipedia, the free encyclopedia
Jump to: navigation, search

In statistics, scaled correlation is a form of a coefficient of correlation applicable to data that have a temporal component such as time series. If the signals have multiple components (slow and fast), scaled coefficient of correlation can be computed only for the fast components of the signals, ignoring the contributions of the slow components.[1] This filtering-like operation has the advantages of not having to make assumptions about the sinusoidal nature of the signals.

For example, in the studies of brain signals researchers are often interested in the high-frequency components (beta and gamma range; 25–80 Hz), and may not be interested in lower frequency ranges (alpha, theta, etc.). In that case scaled correlation can be computed only for frequencies higher than 25 Hz by choosing the scale of the analysis, s, to correspond to the period of that frequency (e.g., s = 40 ms for 25 Hz oscillation).


Scaled correlation between two signals is defined as the average correlation computed across short segments of those signals. First, it is necessary to determine the number of segments K that can fit into the total length of the signals T for a given scale s:

K = \operatorname{round}\left(\frac{T}{s}\right).

Next, if r_k is Pearson's coefficient of correlation for segment k, the scaled correlation across the entire signals \bar{r}_s is computed as

\bar{r}_s = \frac{1}{K} \sum\limits_{k=1}^K r_k.


In a detailed analysis, Nikolić et al.[1] showed that the degree to which the contributions of the slow components will be attenuated depends on three factors, the choice of the scale, the amplitude ratios between the slow and the fast component, and the differences in their oscillation frequencies. The larger the differences in oscillation frequencies, the more efficiently will the contributions of the slow components be removed from the computed correlation coefficient. Similarly, the smaller the power of slow components relative to the fast components, the better will scaled correlation perform.

Application to cross-correlation[edit]

Example of a cross-correlogram between spike trains computed in a classical manner (left) and by using scaled correlation (right; s = 200 ms). Scaled correlation removes the slow component from the cross-correlogram.

Scaled correlation can be applied to auto- and cross-correlation in order to investigate how correlations of high-frequency components change at different temporal delays. To compute cross-scaled-correlation for every time shift properly, it is necessary to segment the signals anew after each time shift. In other words, signals are always shifted before the segmentation is applied. Scaled correlation has been subsequently used to investigate synchronization hubs in the visual cortex [2]

Advantages over filtering methods[edit]

Scaled correlation should be in many cases preferred over signal filtering based on spectral methods. The advantage of scaled correlation is that it does not make assumptions about the spectral properties of the signal (e.g., sinusoidal shapes of signals). Nikolić et al.[1] have shown that the use of Wiener–Khinchin theorem to remove slow components is inferior to results obtained by scaled correlation. These advantages become obvious especially when the signals are non-periodic or when they consist of discrete events such as the time stamps at which neuronal action potentials have been detected.

Matlab code[edit]

Assume that we have two signals a and b with length(a) = length(b) = s*K. In Matlab, scaled correlation can be computed as follows:

   % segment the two data vectors
   Y = reshape(a, s, K); 
   X = reshape(b, s, K);
   % demean
   onesMat =  ones(s,K);
   X       =  X - onesMat*diag(mean(X));
   Y       =  Y - onesMat*diag(mean(Y));
   % compute variances and co-variances for all segments
   varX = mean(X .^ 2);
   varY = mean(Y .^ 2);
   cov  = mean(X .* Y);
   % compute correlations coefficients for all segments
   corrSegments = cov ./ sqrt(varX .* varY);
   % remove not-a-number correlations
   corrSegments(isnan(corrSegments)) = [];
   % average all correlation coefficients to obtain scaled correlation
   scaledCorr = mean(corrSegments)

See also[edit]


  1. ^ a b c Nikolić D, Muresan RC, Feng W, Singer W (2012) Scaled correlation analysis: a better way to compute a cross-correlogram. European Journal of Neuroscience, pp. 1–21, doi:10.1111/j.1460-9568.2011.07987.x
  2. ^ Folias, S.E., S. Yu, A. Snyder, D. Nikolić, and J.E. Rubin (2013) Synchronisation hubs in the visual cortex may arise from strong rhythmic inhibition during gamma oscillations. European Journal of Neuroscience, 38(6): 2864–2883.

Free sources[edit]

A free source code for computing scaled correlation and an interface for MATLAB can be downloaded here: