ECG-Kit 1.0
(1,513 bytes)
function [result] = mc(x)
%MC calculates the medcouple, a robust measure of skewness.
%
% The medcouple is described in:
% Brys, G., Hubert, M. and Struyf, A. (2004),
% "A Robust Measure of Skewness",
% Journal of Computational and Graphical Statistics,
% 13, 996-1017.
%
% Required input arguments:
% x : Data matrix.
% Rows of x represent observations, and columns represent variables.
% Missing values (NaN's) and infinite values (Inf's) are allowed, since observations (rows)
% with missing or infinite values will automatically be excluded from the computations.
%
% The output of MC is a vector containing the medcouple for each column
% of the data matrix x.
%
% Example:
% result = mc([chi2rnd(5,1000,1) trnd(3,1000,1)]);
%
% This function is part of LIBRA: the Matlab Library for Robust Analysis,
% available at:
% http://wis.kuleuven.be/stat/robust.html
%
% Written by Guy Brys
% Last Update: 31/07/2007
if (nargin<1)
error('No input arguments')
end
[n,p] = size(x);
if n==1
x = x';
p = 1;
end
x(sum(~isfinite(x),2)>0,:)=[];
n = size(x,1);
if (n>50000)
error('When there are more than 50000 observations, the MC may be uncomputable due to memory limitations.')
elseif (n>100)
result = mcc(x);
elseif n==0
error('Due to missing values, the data matrix is empty and the MC can not be computed.')
else
result = 0.5*(-mcc(repmat(max(x),size(x,1),1)-x)+mcc(x));
end