[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: statistics distributions function names
From: |
Ben Barrowes |
Subject: |
Re: statistics distributions function names |
Date: |
Fri, 01 Jul 2005 12:24:36 -0600 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.7) Gecko/20050414 |
For example octave's weibull_rnd.m, a new file named weibrnd.m could be
placed in the
statistics/distributions
directory containing the text of weibull_rnd.m except for the name change:
## Copyright (C) 1995, 1996, 1997 Kurt Hornik
##
## This file is part of Octave.
##
## Octave 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 2, or (at your option)
## any later version.
##
## Octave 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 Octave; see the file COPYING. If not, write to the Free
## Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
## 02110-1301, USA.
## -*- texinfo -*-
## @deftypefn {Function File} {} weibrnd (@var{alpha}, @var{sigma},
@var{r}, @var{c})
## @deftypefnx {Function File} {} weibrnd (@var{alpha}, @var{sigma},
@var{sz})
## Return an @var{r} by @var{c} matrix of random samples from the
## Weibull distribution with parameters @var{alpha} and @var{sigma}
## which must be scalar or of size @var{r} by @var{c}. Or if @var{sz}
## is a vector return a matrix of size @var{sz}.
##
## If @var{r} and @var{c} are omitted, the size of the result matrix is
## the common size of @var{alpha} and @var{sigma}.
## @end deftypefn
## Author: KH <address@hidden>
## Description: Random deviates from the Weibull distribution
function rnd = weibrnd (shape, scale, r, c)
if (nargin > 1)
if (!isscalar(shape) || !isscalar(scale))
[retval, shape, scale] = common_size (shape, scale);
if (retval > 0)
error ("weibrnd: shape and scale must be of common size or scalar");
endif
endif
endif
if (nargin == 4)
if (! (isscalar (r) && (r > 0) && (r == round (r))))
error ("weibrnd: r must be a positive integer");
endif
if (! (isscalar (c) && (c > 0) && (c == round (c))))
error ("weibrnd: c must be a positive integer");
endif
sz = [r, c];
if (any (size (scale) != 1) &&
((length (size (scale)) != length (sz)) ||
any (size (scale) != sz)))
error ("weilbull_rnd: shape and scale must be scalar or of size
[r, c]");
endif
elseif (nargin == 3)
if (isscalar (r) && (r > 0))
sz = [r, r];
elseif (isvector(r) && all (r > 0))
sz = r(:)';
else
error ("weibrnd: r must be a postive integer or vector");
endif
if (any (size (scale) != 1) &&
((length (size (scale)) != length (sz)) ||
any (size (scale) != sz)))
error ("weibrnd: shape and scale must be scalar or of size sz");
endif
elseif (nargin == 2)
sz = size(shape);
else
usage ("weibrnd (alpha, sigma, r, c)");
endif
if (isscalar (shape) && isscalar (scale))
if ((shape > 0) & (shape < Inf) & (scale > 0) & (scale < Inf))
rnd = (scale * (- log (1 - rand (sz))) .^ (1 / shape));
else
rnd = NaN * ones (sz);
endif
else
rnd = NaN * ones (sz);
k = find ((shape > 0) & (shape < Inf) & (scale > 0) & (scale < Inf));
if (any (k))
rnd(k) = (scale(k)
.* (- log (1 - rand (size (k)))) .^ (1 ./ shape(k)));
endif
endif
endfunction
The following patch adds a depreciation warning in weibull_rnd.m:
***
/usr/local/share/octave/2.9.3/m/statistics/distributions/weibull_rnd.m
2005-06-01 14:07:16.000000000 -0600
--- weibull_rnd.m 2005-07-01 12:16:05.000000000 -0600
***************
*** 34,39 ****
--- 34,41 ----
function rnd = weibull_rnd (shape, scale, r, c)
+ warning('weibull_rnd is being depreciaited in favor of weibrnd')
+
if (nargin > 1)
if (!isscalar(shape) || !isscalar(scale))
[retval, shape, scale] = common_size (shape, scale);
This approach is simple, but should work for most of the statistics
function now located in statistics/distributions.
Let me know if this is acceptable and I will send other similar modified
files to you as I get the chance.
Note that I couldn't find any other function in the octave distribution
that referenced weibull_rnd.m, so no other trunk functions needs to be
changed.
bb
John W. Eaton wrote:
On 23-Jun-2005, Ben Barrowes wrote:
| Why are the names for the distribution functions in
| /usr/local/share/octave/2.9.3/m/statistics/distributions/
| different from their ML counterparts?
I'm not certain, but it might be that some of the Octave functions
were written before the functions in Matlab. Or, it might be that
they were written at a time when there was not so much empasis on
compatibility with Matlab.
If you owuld like for this to improve, then please submit patches to
provide a compatibile interface. It would be best to keep the current
interface at least for a while, perhaps also having the incompatible
functions emit warnings.
jwe
-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.
Octave's home on the web: http://www.octave.org
How to fund new projects: http://www.octave.org/funding.html
Subscription information: http://www.octave.org/archive.html
-------------------------------------------------------------
-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.
Octave's home on the web: http://www.octave.org
How to fund new projects: http://www.octave.org/funding.html
Subscription information: http://www.octave.org/archive.html
-------------------------------------------------------------
- Re: statistics distributions function names,
Ben Barrowes <=