12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- function [b b0] = circ_skewness(alpha, w, dim)
- % [b b0] = circ_skewness(alpha,w,dim)
- % Calculates a measure of angular skewness.
- %
- % Input:
- % alpha sample of angles
- % [w weightings in case of binned angle data]
- % [dim statistic computed along this dimension, 1]
- %
- % If dim argument is specified, all other optional arguments can be
- % left empty: circ_skewness(alpha, [], dim)
- %
- % Output:
- % b skewness (from Pewsey)
- % b0 alternative skewness measure (from Fisher)
- %
- % References:
- % Pewsey, Metrika, 2004
- % Statistical analysis of circular data, Fisher, p. 34
- %
- % Circular Statistics Toolbox for Matlab
- % By Philipp Berens, 2009
- % berens@tuebingen.mpg.de
- if nargin < 3
- dim = 1;
- end
- if nargin < 2 || isempty(w)
- % if no specific weighting has been specified
- % assume no binning has taken place
- w = ones(size(alpha));
- else
- if size(w,2) ~= size(alpha,2) || size(w,1) ~= size(alpha,1)
- error('Input dimensions do not match');
- end
- end
- % compute neccessary values
- R = circ_r(alpha,w,[],dim);
- theta = circ_mean(alpha,w,dim);
- [foo rho2 mu2] = circ_moment(alpha,w,2,true,dim);
- % compute skewness
- theta2 = repmat(theta, size(alpha)./size(theta));
- b = sum(w.*(sin(2*(circ_dist(alpha,theta2)))),dim)./sum(w,dim);
- b0 = rho2.*sin(circ_dist(mu2,2*theta))./(1-R).^(3/2); % (formula 2.29)
|