NAME

    Algorithm::Burg - extrapolate time series using Burg's method

VERSION

    version 0.001

SYNOPSIS

DESCRIPTION

    The Algorithm::Burg module uses the Burg method to fit an
    autoregressive (AR) model to the input data by minimizing (least
    squares) the forward and backward prediction errors while constraining
    the AR parameters to satisfy the Levinson-Durbin recursion.

    DISCLAIMER: This is work in progress! The code is buggy and the
    interface is subject to change.

ATTRIBUTES

 coefficients

    AR model polynomial coefficients computed by the train method.

 order

    AR model order

 series_tail

    Store the last "order" terms of the time series for "predict($n)".

METHODS

 train($time_series)

    Computes vector of coefficients using Burg algorithm applied to the
    input source data $time_series.

 predict($n)

    Predict $n next values for the time series. If $n is 0 or bigger than
    "order", assume $n = "order".

        #!/usr/bin/env perl;
        use strict;
        use warnings qw(all);
        use Algorithm::Burg;
        ...;
        my $burg = Algorithm::Burg->new(order => 150);
        $burg->train(\@time_series);
        my $result = $burg->predict();

REFERENCES

      * Burg's Method, Algorithm and Recursion
      <http://www.emptyloop.com/technotes/A%20tutorial%20on%20Burg's%20meth
      od,%20algorithm%20and%20recursion.pdf>

      * C++ implementation
      <https://github.com/RhysU/ar/blob/master/collomb2009.cpp>

      * Matlab/Octave implementation
      <https://gist.github.com/tobin/2843661>

      * Python implementation
      <https://github.com/MrKriss/Old-PhD-Code/blob/master/Algorithms/burg_
      AR.py>

AUTHOR

    Stanislaw Pusep <stas@sysd.org>

COPYRIGHT AND LICENSE

    This software is copyright (c) 2014 by Stanislaw Pusep.

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

