home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / scripts / statistics / kurtosis.m < prev    next >
Text File  |  1996-09-28  |  2KB  |  57 lines

  1. # Copyright (C) 1994, 1995 John W. Eaton
  2. #
  3. # This file is part of Octave.
  4. #
  5. # Octave is free software; you can redistribute it and/or modify it
  6. # under the terms of the GNU General Public License as published by the
  7. # Free Software Foundation; either version 2, or (at your option) any
  8. # later version.
  9. #
  10. # Octave is distributed in the hope that it will be useful, but WITHOUT
  11. # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12. # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13. # for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with Octave; see the file COPYING.  If not, write to the Free
  17. # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  
  19. function retval = kurtosis (x)
  20.  
  21. # usage: kurtosis (x)
  22. #
  23. # If x is a vector of length N, return the kurtosis
  24. #
  25. #   kurtosis(x) = N^(-1) std(x)^(-4) SUM_i (x(i)-mean(x))^4 - 3
  26. #
  27. # of x.
  28. #
  29. # If x is a matrix, return a row vector containing the kurtosis for each
  30. # column.
  31.  
  32. # Written by KH (Kurt.Hornik@ci.tuwien.ac.at) on Jul 29, 1994.
  33.  
  34.   if (nargin != 1)
  35.     usage ("kurtosis (x)");
  36.   endif
  37.  
  38.   if (is_vector (x))
  39.     x = x - mean (x);
  40.     if (! any (x))
  41.       retval = 0;
  42.     else
  43.       retval = sum (x .^ 4) / (length (x) * std (x) ^ 4) - 3;
  44.     endif
  45.   elseif (is_matrix (x))
  46.     [nr, nc] = size (x);
  47.     x = x - ones (nr, 1) * mean (x);
  48.     retval = zeros (1, nc);
  49.     s      = std (x);
  50.     ind    = find (s > 0);
  51.     retval (ind) = sum (x (:, ind) .^ 4) ./ (nr * s (ind) .^ 4) - 3;
  52.   else
  53.     error ("kurtosis: x has to be a matrix or a vector.");
  54.   endif
  55.  
  56. endfunction
  57.