logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

PDL::Stats::Distr -- parameter estimations and probability density functions for distributions.

Author

       Copyright (C) 2009 Maggie J. Xiong <maggiexyz users.sourceforge.net>, David Mertens

       All rights reserved. There is no warranty. You are allowed to redistribute this software / documentation
       as described in the file COPYING in the PDL distribution.

perl v5.34.0                                       2022-02-06                                         Distr(3pm)

Dependencies

       GSL - GNU Scientific Library

Description

       Parameter estimate is maximum likelihood estimate when there is closed form estimate, otherwise it is
       method of moments estimate.

Functions

mme_beta
         Signature: (a(n); float+ [o]alpha(); float+ [o]beta())

           my ($a, $b) = $data->mme_beta();

       beta distribution. pdf: f(x; a,b) = 1/B(a,b) x^(a-1) (1-x)^(b-1)

       mme_beta processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   pdf_beta
         Signature: (x(); a(); b(); float+ [o]p())

       probability density function for beta distribution. x defined on [0,1].

       pdf_beta processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   mme_binomial
         Signature: (a(n); int [o]n_(); float+ [o]p())

           my ($n, $p) = $data->mme_binomial;

       binomial distribution. pmf: f(k; n,p) = (n k) p^k (1-p)^(n-k) for k = 0,1,2..n

       mme_binomial processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is
       set for any of the input ndarrays.

   pmf_binomial
         Signature: (ushort x(); ushort n(); p(); float+ [o]out())

       probability mass function for binomial distribution.

       pmf_binomial processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is
       set for any of the input ndarrays.

   mle_exp
         Signature: (a(n); float+ [o]l())

           my $lamda = $data->mle_exp;

       exponential distribution. mle same as method of moments estimate.

       mle_exp processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   pdf_exp
         Signature: (x(); l(); float+ [o]p())

       probability density function for exponential distribution.

       pdf_exp processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   mme_gamma
         Signature: (a(n); float+ [o]shape(); float+ [o]scale())

           my ($shape, $scale) = $data->mme_gamma();

       two-parameter gamma distribution

       mme_gamma processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   pdf_gamma
         Signature: (x(); a(); t(); float+ [o]p())

       probability density function for two-parameter gamma distribution.

       pdf_gamma processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   mle_gaussian
         Signature: (a(n); float+ [o]m(); float+ [o]v())

           my ($m, $v) = $data->mle_gaussian();

       gaussian aka normal distribution. same results as $data->average and $data->var. mle same as method of
       moments estimate.

       mle_gaussian processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is
       set for any of the input ndarrays.

   pdf_gaussian
         Signature: (x(); m(); v(); float+ [o]p())

       probability density function for gaussian distribution.

       pdf_gaussian processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is
       set for any of the input ndarrays.

   mle_geo
         Signature: (a(n); float+ [o]p())

       geometric distribution. mle same as method of moments estimate.

       mle_geo processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   pmf_geo
         Signature: (ushort x(); p(); float+ [o]out())

       probability mass function for geometric distribution. x >= 0.

       pmf_geo processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   mle_geosh
         Signature: (a(n); float+ [o]p())

       shifted geometric distribution. mle same as method of moments estimate.

       mle_geosh processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   pmf_geosh
         Signature: (ushort x(); p(); float+ [o]out())

       probability mass function for shifted geometric distribution. x >= 1.

       pmf_geosh processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   mle_lognormal
         Signature: (a(n); float+ [o]m(); float+ [o]v())

           my ($m, $v) = $data->mle_lognormal();

       lognormal distribution. maximum likelihood estimation.

       mle_lognormal processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is
       set for any of the input ndarrays.

   mme_lognormal
         Signature: (a(n); float+ [o]m(); float+ [o]v())

           my ($m, $v) = $data->mme_lognormal();

       lognormal distribution. method of moments estimation.

       mme_lognormal processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is
       set for any of the input ndarrays.

   pdf_lognormal
         Signature: (x(); m(); v(); float+ [o]p())

       probability density function for lognormal distribution. x > 0. v > 0.

       pdf_lognormal processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is
       set for any of the input ndarrays.

   mme_nbd
         Signature: (a(n); float+ [o]r(); float+ [o]p())

           my ($r, $p) = $data->mme_nbd();

       negative binomial distribution. pmf: f(x; r,p) = (x+r-1  r-1) p^r (1-p)^x for x=0,1,2...

       mme_nbd processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   pmf_nbd
         Signature: (ushort x(); r(); p(); float+ [o]out())

       probability mass function for negative binomial distribution.

       pmf_nbd processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is set
       for any of the input ndarrays.

   mme_pareto
         Signature: (a(n); float+ [o]k(); float+ [o]xm())

           my ($k, $xm) = $data->mme_pareto();

       pareto distribution. pdf: f(x; k,xm) = k xm^k / x^(k+1) for x >= xm > 0.

       mme_pareto processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is
       set for any of the input ndarrays.

   pdf_pareto
         Signature: (x(); k(); xm(); float+ [o]p())

       probability density function for pareto distribution. x >= xm > 0.

       pdf_pareto processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is
       set for any of the input ndarrays.

   mle_poisson
         Signature: (a(n); float+ [o]l())

           my $lamda = $data->mle_poisson();

       poisson distribution. pmf: f(x;l) = e^(-l) * l^x / x!

       mle_poisson processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is
       set for any of the input ndarrays.

   pmf_poisson
         Signature: (x(); l(); float+ [o]p())

       Probability mass function for poisson distribution. Uses Stirling's formula for x > 85.

       pmf_poisson processes bad values.  It will set the bad-value flag of all output ndarrays if the flag is
       set for any of the input ndarrays.

   pmf_poisson_stirling
         Signature: (x(); l(); [o]p())

       Probability mass function for poisson distribution. Uses Stirling's formula for all values of the input.
       See http://en.wikipedia.org/wiki/Stirling's_approximation for more info.

       pmf_poisson_stirling processes bad values.  It will set the bad-value flag of all output ndarrays if the
       flag is set for any of the input ndarrays.

   pmf_poisson_factorial
         Signature: ushort x(); l(); float+ [o]p()

       Probability mass function for poisson distribution. Input is limited to x < 170 to avoid gsl_sf_fact()
       overflow.

   plot_distr
       Plots data distribution. When given specific distribution(s) to fit, returns % ref to sum log likelihood
       and parameter values under fitted distribution(s). See FUNCTIONS above for available distributions.

       Default options (case insensitive):

           MAXBN => 20,
             # see PDL::Graphics::PGPLOT::Window for next options
           WIN   => undef,   # pgwin object. not closed here if passed
                             # allows comparing multiple distr in same plot
                             # set env before passing WIN
           DEV   => '/xs' ,  # open and close dev for plotting if no WIN
                             # defaults to '/png' in Windows
           COLOR => 1,       # color for data distr

       Usage:

             # yes it threads :)
           my $data = grandom( 500, 3 )->abs;
             # ll on plot is sum across 3 data curves
           my ($ll, $pars)
             = $data->plot_distr( 'gaussian', 'lognormal', {DEV=>'/png'} );

             # pars are from normalized data (ie data / bin_size)
           print "$_\t@{$pars->{$_}}\n" for (sort keys %$pars);
           print "$_\t$ll->{$_}\n" for (sort keys %$ll);

Name

       PDL::Stats::Distr -- parameter estimations and probability density functions for distributions.

See Also

       PDL::Graphics::PGPLOT

       PDL::GSL::CDF

Synopsis

           use PDL::LiteF;
           use PDL::Stats::Distr;

           # do a frequency (probability) plot with fitted normal curve
           my $data = grandom(100)->abs;

           my ($xvals, $hist) = $data->hist;

             # turn frequency into probability
           $hist /= $data->nelem;

             # get maximum likelihood estimates of normal curve parameters
           my ($m, $v) = $data->mle_gaussian();

             # fitted normal curve probabilities
           my $p = $xvals->pdf_gaussian($m, $v);

           use PDL::Graphics::PGPLOT::Window;
           my $win = pgwin( Dev=>"/xs" );

           $win->bin( $hist );
           $win->hold;
           $win->line( $p, {COLOR=>2} );
           $win->close;

       Or, play with different distributions with plot_distr :)

           $data->plot_distr( 'gaussian', 'lognormal' );

See Also