Provided by: libmath-gsl-perl_0.43-4_amd64 bug

NAME

       Math::GSL::Fit - Least-squares functions for a general linear model with one- or
       two-parameter regression

SYNOPSIS

           use Math::GSL::Fit qw/:all/;

DESCRIPTION

       The functions in this module perform least-squares fits to a general linear model, y = X c
       where y is a vector of n observations, X is an n by p matrix of predictor variables, and
       the elements of the vector c are the p unknown best-fit parameters which are to be
       estimated.

       Here is a list of all the functions in this module :

       gsl_fit_linear($x, $xstride, $y, $ystride, $n)
           This function computes the best-fit linear regression coefficients (c0,c1) of the
           model Y = c_0 + c_1 X for the dataset ($x, $y), two vectors (in form of arrays) of
           length $n with strides $xstride and $ystride. The errors on y are assumed unknown so
           the variance-covariance matrix for the parameters (c0, c1) is estimated from the
           scatter of the points around the best-fit line and returned via the parameters (cov00,
           cov01, cov11). The sum of squares of the residuals from the best-fit line is returned
           in sumsq. Note: the correlation coefficient of the data can be computed using
           gsl_stats_correlation (see Correlation), it does not depend on the fit. The function
           returns the following values in this order : 0 if the operation succeeded, 1
           otherwise, c0, c1, cov00, cov01, cov11 and sumsq.

       gsl_fit_wlinear($x, $xstride, $w, $wstride, $y, $ystride, $n)
           This function computes the best-fit linear regression coefficients (c0,c1) of the
           model Y = c_0 + c_1 X for the weighted dataset ($x, $y), two vectors (in form of
           arrays) of length $n with strides $xstride and $ystride. The vector (also in the form
           of an array) $w, of length $n and stride $wstride, specifies the weight of each
           datapoint. The weight is the reciprocal of the variance for each datapoint in y. The
           covariance matrix for the parameters (c0, c1) is computed using the weights and
           returned via the parameters (cov00, cov01, cov11). The weighted sum of squares of the
           residuals from the best-fit line, \chi^2, is returned in chisq. The function returns
           the following values in this order : 0 if the operation succeeded, 1 otherwise, c0,
           c1, cov00, cov01, cov11 and sumsq.

       gsl_fit_linear_est($x, $c0, $c1, $cov00, $cov01, $cov11)
           This function uses the best-fit linear regression coefficients $c0, $c1 and their
           covariance $cov00, $cov01, $cov11 to compute the fitted function y and its standard
           deviation y_err for the model Y = c_0 + c_1 X at the point $x. The function returns
           the following values in this order : 0 if the operation succeeded, 1 otherwise, y and
           y_err.

       gsl_fit_mul($x, $xstride, $y, $ystride, $n)
           This function computes the best-fit linear regression coefficient c1 of the model Y =
           c_1 X for the datasets ($x, $y), two vectors (in form of arrays) of length $n with
           strides $xstride and $ystride. The errors on y are assumed unknown so the variance of
           the parameter c1 is estimated from the scatter of the points around the best-fit line
           and returned via the parameter cov11. The sum of squares of the residuals from the
           best-fit line is returned in sumsq.  The function returns the following values in this
           order : 0 if the operation succeeded, 1 otherwise, c1, cov11 and sumsq.

       gsl_fit_wmul($x, $xstride, $w, $wstride, $y, $ystride, $n)
           This function computes the best-fit linear regression coefficient c1 of the model Y =
           c_1 X for the weighted datasets ($x, $y), two vectors (in form of arrays) of length $n
           with strides $xstride and $ystride. The vector (also in the form of an array) $w, of
           length $n and stride $wstride, specifies the weight of each datapoint. The weight is
           the reciprocal of the variance for each datapoint in y. The variance of the parameter
           c1 is computed using the weights and returned via the parameter cov11. The weighted
           sum of squares of the residuals from the best-fit line, \chi^2, is returned in chisq.
           The function returns the following values in this order : 0 if the operation
           succeeded, 1 otherwise, c1, cov11 and sumsq.

       gsl_fit_mul_est($x, $c1, $cov11)
           This function uses the best-fit linear regression coefficient $c1 and its covariance
           $cov11 to compute the fitted function y and its standard deviation y_err for the model
           Y = c_1 X at the point $x. The function returns the following values in this order : 0
           if the operation succeeded, 1 otherwise, y and y_err.

       For more information on the functions, we refer you to the GSL official documentation:
       <http://www.gnu.org/software/gsl/manual/html_node/>

EXAMPLES

       This example shows how to use the function gsl_fit_linear. It's important to see that the
       array passed to to function must be an array reference, not a simple array. Also when you
       use strides, you need to initialize all the value in the range used, otherwise you will
       get warnings.

           my @norris_x = (0.2, 337.4, 118.2, 884.6, 10.1, 226.5, 666.3, 996.3,
                               448.6, 777.0, 558.2, 0.4, 0.6, 775.5, 666.9, 338.0,
                               447.5, 11.6, 556.0, 228.1, 995.8, 887.6, 120.2, 0.3,
                               0.3, 556.8, 339.1, 887.2, 999.0, 779.0, 11.1, 118.3,
                               229.2, 669.1, 448.9, 0.5 ) ;
           my @norris_y = ( 0.1, 338.8, 118.1, 888.0, 9.2, 228.1, 668.5, 998.5,
                               449.1, 778.9, 559.2, 0.3, 0.1, 778.1, 668.8, 339.3,
                               448.9, 10.8, 557.7, 228.3, 998.0, 888.8, 119.6, 0.3,
                               0.6, 557.6, 339.3, 888.0, 998.5, 778.9, 10.2, 117.6,
                               228.9, 668.4, 449.2, 0.2);
           my $xstride = 2;
           my $wstride = 3;
           my $ystride = 5;
           my ($x, $w, $y);
           for my $i (0 .. 175)
           {
               $x->[$i] = 0;
               $w->[$i] = 0;
               $y->[$i] = 0;
           }

           for my $i (0 .. 35)
           {
               $x->[$i*$xstride] = $norris_x[$i];
               $w->[$i*$wstride] = 1.0;
               $y->[$i*$ystride] = $norris_y[$i];
           }
           my ($status, @results) = gsl_fit_linear($x, $xstride, $y, $ystride, 36);

AUTHORS

       Jonathan "Duke" Leto <jonathan@leto.net> and Thierry Moisan <thierry.moisan@gmail.com>

COPYRIGHT AND LICENSE

       Copyright (C) 2008-2021 Jonathan "Duke" Leto and Thierry Moisan

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