NAME

    Math::LOESS - Perl wrapper of the Locally-Weighted Regression package
    originally written by Cleveland, et al.

VERSION

    version 0.001000

SYNOPSIS

        use Math::LOESS;
    
        my $loess = Math::LOESS->new(x => $x, y => $y);
    
        $loess->fit();
        my $fitted_values = $loess->outputs->fitted_values;
    
        print $loess->summary();
    
        my $prediction = $loess->predict($new_data, 1);
        my $confidence_intervals = $prediction->confidence(0.05);
        print $confidence_internals->{fit};
        print $confidence_internals->{upper};
        print $confidence_internals->{lower};

CONSTRUCTION

        new((Piddle1D|Piddle2D) :$x, Piddle1D :$y, Piddle1D :$weights=undef,
            Num :$span=0.75, Str :$family='gaussian')

    Arguments:

      * $x

      A ($n, $p) piddle for x data, where $p is number of predictors. It's
      possible to have at most 8 predictors.

      * $y

      A ($n, 1) piddle for y data.

      * $weights

      Optional ($n, 1) piddle for weights to be given to individual
      observations. By default, an unweighted fit is carried out (all the
      weights are one).

      * $span

      The parameter controls the degree of smoothing. Default is 0.75.

      For span < 1, the neighbourhood used for the fit includes proportion
      span of the points, and these have tricubic weighting (proportional
      to (1 - (dist/maxdist)^3)^3). For span > 1, all points are used, with
      the "maximum distance" assumed to be span^(1/p) times the actual
      maximum distance for p explanatory variables.

      When provided as a construction parameter, it is like a shortcut for,

          $loess->model->span($span);

      * $family

      If "gaussian" fitting is by least-squares, and if "symmetric" a
      re-descending M estimator is used with Tukey's biweight function.

      When provided as a construction parameter, it is like a shortcut for,

          $loess->model->family($family);

    Bad values in $x, $y, $weights are removed.

ATTRIBUTES

 model

    Get an Math::LOESS::Model object.

 outputs

    Get an Math::LOESS::Outputs object.

 x

    Get input x data as a piddle.

 y

    Get input y data as a piddle.

 weights

    Get input weights data as a piddle.

 activated

    Returns a true value if the object's fit() method has been called.

METHODS

 fit

        fit()

 predict

        predict((Piddle1D|Piddle2D) $newdata, Bool $stderr=false)

    Returns a Math::LOESS::Prediction object.

    Bad values in $newdata are removed.

 summary

        summary()

    Returns a summary string. For example,

        print $loess->summary();

SEE ALSO

    https://en.wikipedia.org/wiki/Local_regression

    PDL

AUTHOR

    Stephan Loyd <sloyd@cpan.org>

COPYRIGHT AND LICENSE

    This software is copyright (c) 2019-2023 by Stephan Loyd.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.