PDL-Stats statistics modules in Perl Data Language

PDL::Stats::Distr

  • NAME
  • DESCRIPTION
  • SYNOPSIS
  • FUNCTIONS
  • DEPENDENCIES
  • SEE ALSO

    NAME

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

    DESCRIPTION

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

    SYNOPSIS

        use PDL::LiteF;
        use PDL::Stats::Distr;
    
          # do a frequency (probability) plot with fitted normal curve
    
        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' );

    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 does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    pdf_beta

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

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

    pdf_beta does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    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 does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    pmf_binomial

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

    probability mass function for binomial distribution.

    pmf_binomial does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    mle_exp

      Signature: (a(n); float+ [o]l())
        my $lamda = $data->mle_exp;

    exponential distribution. mle same as method of moments estimate.

    mle_exp does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    pdf_exp

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

    probability density function for exponential distribution.

    pdf_exp does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    mme_gamma

      Signature: (a(n); float+ [o]shape(); float+ [o]scale())
        my ($shape, $scale) = $data->mme_gamma();

    two-parameter gamma distribution

    mme_gamma does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    pdf_gamma

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

    probability density function for two-parameter gamma distribution.

    pdf_gamma does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    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 does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    pdf_gaussian

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

    probability density function for gaussian distribution.

    pdf_gaussian does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    mle_geo

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

    geometric distribution. mle same as method of moments estimate.

    mle_geo does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    pmf_geo

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

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

    pmf_geo does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    mle_geosh

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

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

    mle_geosh does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    pmf_geosh

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

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

    pmf_geosh does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    mle_lognormal

      Signature: (a(n); float+ [o]m(); float+ [o]v())
        my ($m, $v) = $data->mle_lognormal();

    lognormal distribution. maximum likelihood estimation.

    mle_lognormal does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    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 does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    pdf_lognormal

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

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

    pdf_lognormal does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    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 does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    pmf_nbd

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

    probability mass function for negative binomial distribution.

    pmf_nbd does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    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 does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    pdf_pareto

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

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

    pdf_pareto does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    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 does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    pmf_poisson

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

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

    pmf_poisson does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    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 does handle bad values. It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.

    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);

    DEPENDENCIES

    GSL - GNU Scientific Library

    SEE ALSO

    PDL::Graphics::PGPLOT

    PDL::GSL::CDF