X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fnan-2.5.5%2Fskewness.m;fp=octave_packages%2Fnan-2.5.5%2Fskewness.m;h=75ceffda6575a18cc0063281c6e48b51c211e984;hp=0000000000000000000000000000000000000000;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/nan-2.5.5/skewness.m b/octave_packages/nan-2.5.5/skewness.m new file mode 100644 index 0000000..75ceffd --- /dev/null +++ b/octave_packages/nan-2.5.5/skewness.m @@ -0,0 +1,68 @@ +function R = skewness(i,DIM) +% SKEWNESS estimates the skewness +% +% y = skewness(x,DIM) +% calculates skewness of x in dimension DIM +% +% DIM dimension +% 1: STATS of columns +% 2: STATS of rows +% default or []: first DIMENSION, with more than 1 element +% +% features: +% - can deal with NaN's (missing values) +% - dimension argument +% - compatible to Matlab and Octave +% +% see also: SUMSKIPNAN, STATISTIC +% +% REFERENCE(S): +% http://mathworld.wolfram.com/ + +% $Id: skewness.m 8223 2011-04-20 09:16:06Z schloegl $ +% Copyright (C) 2000-2003,2010 by Alois Schloegl +% This function is part of the NaN-toolbox +% http://pub.ist.ac.at/~schloegl/matlab/NaN/ + +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; If not, see . + + + +% check input arguments + +if nargin==1, + DIM = find(size(i)>1,1); + if isempty(DIM), DIM=1; end; +end; + +[R.SUM,R.N,R.SSQ] = sumskipnan(i,DIM); % sum + +R.MEAN = R.SUM./R.N; % mean +R.SSQ0 = R.SSQ - real(R.SUM).*real(R.MEAN) - imag(R.SUM).*imag(R.MEAN); % sum square with mean removed + +%if flag_implicit_unbiased_estim; %% ------- unbiased estimates ----------- + n1 = max(R.N-1,0); % in case of n=0 and n=1, the (biased) variance, STD and SEM are INF +%else +% n1 = R.N; +%end; + +R.VAR = R.SSQ0./n1; % variance (unbiased) +R.STD = sqrt(R.VAR); % standard deviation + +i = i - repmat(R.MEAN,size(i)./size(R.MEAN)); +R.CM3 = sumskipnan(i.^3,DIM)./n1; +%R.CM4 = sumskipnan(i.^4,DIM)./n1; + +R = R.CM3./(R.STD.^3); +%R = R.CM4./(R.VAR.^2)-3;