changeset 12345:34870d9205ac octave-forge

Initial commit of cdf.m.
author asnelt
date Tue, 28 Jan 2014 22:08:22 +0000
parents eeec46f595d7
children d06c2bfedc90
files main/statistics/INDEX main/statistics/NEWS main/statistics/inst/cdf.m
diffstat 3 files changed, 114 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/main/statistics/INDEX	Mon Jan 27 23:31:20 2014 +0000
+++ b/main/statistics/INDEX	Tue Jan 28 22:08:22 2014 +0000
@@ -3,6 +3,7 @@
  anderson_darling_cdf
  betastat
  binostat
+ cdf
  chi2stat
  cl_multinom
  copulacdf copulapdf copularnd
--- a/main/statistics/NEWS	Mon Jan 27 23:31:20 2014 +0000
+++ b/main/statistics/NEWS	Tue Jan 28 22:08:22 2014 +0000
@@ -1,3 +1,10 @@
+Summary of important user-visible changes for statistics 1.2.4:
+-------------------------------------------------------------------
+
+ ** The following functions are new:
+ 
+    cdf
+
 Summary of important user-visible changes for statistics 1.2.3:
 -------------------------------------------------------------------
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main/statistics/inst/cdf.m	Tue Jan 28 22:08:22 2014 +0000
@@ -0,0 +1,106 @@
+## Copyright (C) 2013 Pantxo Diribarne
+## 
+## 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 <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*- 
+## @deftypefn {Function File} {@var{retval} =} cdf (@var{name}, @var{X}, @dots{})
+## Return cumulative density function of @var{name} function for value
+## @var{x}.
+## This is a wrapper around various @var{name}cdf and @var{name}_cdf
+## functions. See the individual functions help to learn the signification of
+## the arguments after @var{x}. Supported functions and corresponding number of
+## additional arguments are:
+## 
+## @multitable @columnfractions 0.02 0.3 0.45 0.2
+## @headitem @tab function @tab alternative @tab args
+## @item @tab "beta" @tab "beta" @tab 2
+## @item @tab "bino" @tab "binomial" @tab 2
+## @item @tab "cauchy" @tab @tab 2
+## @item @tab "chi2" @tab "chisquare" @tab 1
+## @item @tab "discrete" @tab @tab 2
+## @item @tab "exp" @tab "exponential" @tab 1
+## @item @tab "f" @tab @tab 2
+## @item @tab "gam" @tab "gamma" @tab  2
+## @item @tab "geo" @tab "geometric" @tab 1
+## @item @tab "gev" @tab "generalized extreme value" @tab  3
+## @item @tab "hyge" @tab "hypergeometric" @tab 3
+## @item @tab "kolmogorov_smirnov" @tab @tab 1
+## @item @tab "laplace" @tab @tab 2
+## @item @tab "logistic" @tab  @tab 0
+## @item @tab "logn" @tab "lognormal" @tab 2
+## @item @tab "norm" @tab "normal" @tab 2
+## @item @tab "poiss" @tab "poisson" @tab 2
+## @item @tab "rayl" @tab "rayleigh" @tab 1
+## @item @tab "t" @tab @tab 1
+## @item @tab "unif" @tab "uniform" @tab 2
+## @item @tab "wbl" @tab "weibull" @tab 2
+## @end multitable
+## 
+## @seealso{betacdf, binocdf, cauchy_cdf, chi2cdf, discrete_cdf,
+## expcdf, fcdf, gamcdf, geocdf, gevcdf, hygecdf,
+## kolmogorov_smirnov_cdf, laplace_cdf, logistic_cdf, logncdf,
+## normcdf, poisscdf, raylcdf, tcdf, unifcdf, wblcdf}
+## @end deftypefn
+
+function [retval] = cdf (varargin)
+  ## implemented functions
+  persistent allcdf = {{"beta", "beta"}, @betacdf, 2, ...
+            {"bino", "binomial"}, @binocdf, 2, ...
+            {"cauchy"}, @cauchy_cdf, 2, ...
+            {"chi2", "chisquare"}, @chi2cdf, 1, ...
+            {"discrete"}, @discrete_cdf, 2, ...
+            {"exp", "exponential"}, @expcdf, 1, ...
+            {"f"}, @fcdf, 2, ...
+            {"gam", "gamma"}, @gamcdf, 2, ...
+            {"geo", "geometric"}, @geocdf, 1, ...
+            {"gev", "generalized extreme value"}, @gevcdf, 3, ...
+            {"hyge", "hypergeometric"}, @hygecdf, 3, ...
+            {"kolmogorov_smirnov"}, @kolmogorov_smirnov_cdf, 1, ...
+            {"laplace"}, @laplace_cdf, 2, ...
+            {"logistic"}, @logistic_cdf, 0, ... # ML has 2 args here
+            {"logn", "lognormal"}, @logncdf, 2, ...
+            {"norm", "normal"}, @normcdf, 2, ...
+            {"poiss", "poisson"}, @poisscdf, 2, ...
+            {"rayl", "rayleigh"}, @raylcdf, 1, ...
+            {"t"}, @tcdf, 1, ...
+            {"unif", "uniform"}, @unifcdf, 2, ...
+            {"wbl", "weibull"}, @wblcdf, 2};
+
+  if (numel (varargin) < 2 || ! ischar (varargin{1}))
+    print_usage ();
+  endif
+
+  name = varargin{1};
+  x = varargin{2};
+  
+  varargin(1:2) = [];
+  nargs = numel (varargin);
+
+  cdfnames = allcdf(1:3:end);
+  cdfhdl = allcdf(2:3:end);
+  cdfargs = allcdf(3:3:end);
+
+  idx = cellfun (@(x) any (strcmpi (name, x)), cdfnames);
+  
+  if (any (idx))
+    if (nargs == cdfargs{idx})
+      retval = feval (cdfhdl{idx}, x, varargin{:});
+    else
+      error ("cdf: %s requires %d arguments", name, cdfargs{idx})
+    endif
+  else
+    error ("cdf: %s not implemented", name);
+  endif
+  
+endfunction