1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- function [rho pval] = circ_corrcc(alpha1, alpha2)
- %
- % [rho pval ts] = circ_corrcc(alpha1, alpha2)
- % Circular correlation coefficient for two circular random variables.
- %
- % Input:
- % alpha1 sample of angles in radians
- % alpha2 sample of angles in radians
- %
- % Output:
- % rho correlation coefficient
- % pval p-value
- %
- % References:
- % Topics in circular statistics, S.R. Jammalamadaka et al., p. 176
- %
- % PHB 6/7/2008
- %
- % Circular Statistics Toolbox for Matlab
- % By Philipp Berens, 2009
- % berens@tuebingen.mpg.de - www.kyb.mpg.de/~berens/circStat.html
- if size(alpha1,2) > size(alpha1,1)
- alpha1 = alpha1';
- end
- if size(alpha2,2) > size(alpha2,1)
- alpha2 = alpha2';
- end
- if length(alpha1)~=length(alpha2)
- error('Input dimensions do not match.')
- end
- % compute mean directions
- n = length(alpha1);
- alpha1_bar = circ_mean(alpha1);
- alpha2_bar = circ_mean(alpha2);
- % compute correlation coeffcient from p. 176
- num = sum(sin(alpha1 - alpha1_bar) .* sin(alpha2 - alpha2_bar));
- den = sqrt(sum(sin(alpha1 - alpha1_bar).^2) .* sum(sin(alpha2 - alpha2_bar).^2));
- rho = num / den;
- % compute pvalue
- l20 = mean(sin(alpha1 - alpha1_bar).^2);
- l02 = mean(sin(alpha2 - alpha2_bar).^2);
- l22 = mean((sin(alpha1 - alpha1_bar).^2) .* (sin(alpha2 - alpha2_bar).^2));
- ts = sqrt((n * l20 * l02)/l22) * rho;
- pval = 2 * (1 - normcdf(abs(ts)));
|