Provided by: fitsh_0.9.4-1_amd64 bug

NAME

       lfit - general purpose evaluation and regression analysis tool

SYNOPSIS

       lfit [method of analysis] [options] <input> [-o, --output <output>]

DESCRIPTION

       The  program  `lfit`  is  a  standalone  command line driven tool designed for both interactive and batch
       processed data analysis and regression. In principle, the program may run in  two  modes.  First,  `lfit`
       supports  numerous  regression  analysis  methods that can be used to search for "best fit" parameters of
       model functions in order to model the input data (which  are  read  from  one  or  more  input  files  in
       tabulated  form). Second, `lfit` is capable to read input data and performs various arithmetic operations
       as it is specified by the user. Basically this second mode is used to evaluate the model  functions  with
       the  parameters  presumably  derived  by  the  actual  regression  methods (and in order to complete this
       evaluation, only slight changes are needed in the command line invocation arguments).

OPTIONS

   General options:
       -h, --help
              Gives general summary about the command line options.

       --long-help, --help-long
              Gives a detailed list of command line options.

       --wiki-help, --help-wiki, --mediawiki-help, --help-mediawiki
              Gives a detailed list of command line options in Mediawiki format.

       --version, --version-short, --short-version
              Gives some version information about the program.

       --functions, --list-functions, --function-list
              Lists the available arithmetic operations and built-in functions supported by the program.

       --wiki-functions, --functions-wiki
              Lists the available arithmetic operations and built-in  functions  supported  by  the  program  in
              Mediawiki format.

       --examples
              Prints some very basic examples for the program invocation.

   Common options for regression analysis:
       -v, --variable, --variables <list-of-variables>
              Comma-separated  list  of  regression variables. In case of non-linear regression analysis, all of
              these fit variables are expected to  have  some  initial  values  (specified  as  <name>=<value>),
              otherwise  the  initial  values  are  set  to  be  zero.  Note  that  in  the  case of some of the
              regression/analysis methods, additional parameters should  be  assigned  to  these  fit/regression
              variables. See the section "Regression analysis methods" for additional details.

       -c, --column, --columns <independent>[:<column index>],...
              Comma-separated  list  of  independet  variable  names  as read from the subsequent columns of the
              primary input data file. If the independent variables are not in sequential  order  in  the  input
              file,  the  optional  column indices should be defined for each variable, by separating the column
              index with a colon after the name of the variable. In the case of multiple input  files  and  data
              blocks,  the  user  should  assign  the individual independent variables and the respective column
              names and definitions for each file (see later, Sec. "Multiple data blocks").

       -f, --function <model function>
              Model function of the analysis in a symbolic form. This expression for the model  function  should
              contain  built-in arithmetic operators, built-in functions, user-defined macros (see -x, --define)
              or functions provided by the dynamically loaded external modules (see -d,  --dynamic).  The  model
              function can depend on both the fit/regression variables (see -v, --variables) and the independent
              variables read from the input file (see -c, --columns). In the case of multiple  input  files  and
              data  blocks,  the  user  should  assign  the  respective model functions for each data block (see
              later). Note that  some  of  the  analysis  methods  expects  the  model  function  to  be  either
              differentiable  or linear in the fit/regression variables. See "Regression analysis methods" later
              on about more details.

       -y, --dependent <dependent expression>
              The dependent variable of the regression analysis, in a form of  an  arithmetic  expression.  This
              expression  for  the  dependent variable can depend only on the variables read from the input file
              (see -c, --columns). In the case of multiple input files and data blocks, the user  should  assign
              the respective dependent expressions for each data block (see later).

       -o, --output <output file>
              Name  of  the output file into which the fit results (the values for the fit/regression variables)
              are written.

   Common options for function evaluation:
       -f, --function <function to evaluate>[...]
              List of functions to be evaluated. More expressions can be  specified  by  either  separating  the
              subsequent  expressions  by  a  comma  or by specifying more -f, --function options in the command
              line.

       Note that the two basic modes of `lfit` are distinguished only by the presence or the absence of the  -y,
       --dependent  command  line argument. In other words, there isn't any explicit command line argument which
       specify the mode of `lfit`. If the -y, --dependent command line  argument  is  omitted,  `lfit`  runs  in
       function evaluation mode, otherwise the program runs in regression analysis mode.

       -o, --output <output file>
              Name of the output file in which the results of the function evaluation are written.

   Regression analysis methods:
       -L, --clls, --linear
              The  default mode of `lfit`, the classical linear least squares (CLLS) method. The model functions
              specified after -f, --function are expected to be both differentiable and linear with  respect  to
              the  fit/regression  variables.  Otherwise,  `lfit`  detects the non-differentiable and non-linear
              property of the model function(s)  and  refuses  the  analysis.  In  this  case,  other  types  of
              regression   analysis   methods   can   be   applied   depending   our  needs,  for  instance  the
              Levenberg-Marquardtalgorithm (NLLM, see -N, --nllm) or the downhill  simplex  minimization  (DHSX,
              see -D, --dhsx).

       -N, --nllm, --nonlinear
              This  option  implies a regression involving the nonlinear Levenberg-Marquardt (NLLM) minimization
              algorithm. The model function(s) specified after -f, --function are expected to be  differentiable
              with  respect  to  the  fit/regression variables. Otherwise, `lfit` detects the non-differentiable
              property and refuses the analysis. There some  fine-tune  parameters  of  the  Levenberg-Marquardt
              algorithm,  see  also the secion "Fine-tuning of regression analysis methods" for more details how
              these additional regression parameters can be set. Note that all of the  fit/regression  variables
              should  have a proper initial value, defined in the command line argument -v, --variable (see also
              there).

       -U, --lmnd
              Levenberg-Marquardt minimization with numerical partial  derivatives  (LMND).  Same  as  the  NLLM
              method, with the exception of that the partial derivatives of the model function(s) are calculated
              numerically. Therefore, the model function(s) may contain functions of which  partial  derivatives
              are  not  known  in  an  analytic  form.  The  differences used in the computations of the partial
              derivatives should be declared by the user, see also the command line option -q, --differences.

       -D, --dhsx, --downhill
              This option implies a regression involving the  nonlinear  downhill  simplex  (DHSX)  minimization
              algorithm.  The  user  should  specify  the  proper  inital  values  and  their  uncertainties  as
              <name>=<initial>:<uncertainty>, unless the "fisher" option  is  passed  to  the  -P,  --parameters
              command  line argument (see later in the section "Fine-tuning of regression analysis methods"). In
              the first case, the initial size of the simplex is based on the uncertainties provided by the user
              while  in the second case, the initial simplex is derived from the eigenvalues and eigenvectors of
              the Fisher covariance matrix. Note that the model functions must be differentiable in  the  latter
              case.

       -M, --mcmc
              This  option  implies  the method of Markov Chain Monte-Carlo (MCMC). The model function(s) can be
              arbitrary in the point of differentiability. However, each of the  fit/regression  variables  must
              have  an  initial  assumption for their uncertainties which must be specified via the command line
              argument -v, --variable. The user should specify the proper inital  values  and  uncertainties  of
              these as <name>=<initial>:<uncertainty>. In the actual implementation of `lfit`, each variable has
              an uncorrelated Gaussian a priori distribution with the specified uncertainty. The MCMC  algorithm
              has  some  fine-tune  parameters, see the section "Fine-tuning of regression analysis methods" for
              more details.

       -K, --mchi, --chi2
              With this option one can perform a "brute force" Chi^2 minimization by evaluating the value of the
              merit  function of Chi^2 on a grid of the fit/regression variables. In this case the grid size and
              resolution must be specified in a specific form after the -v, --variable  command  line  argument.
              Namely  each of the fit/regression variables intended to be varied on a grid must have a format of
              <name>=[<min>:<step>:<max>] while the other ones specified as <name>=<value> are kept  fixed.  The
              output  of  this  analysis  will  be  a  series  of  lines  with  N+1 columns, where the values of
              fit/regression variables are followed by the value of the merit function. Note  that  all  of  the
              declared  fit/regression  variables  are written to the output, including the ones which are fixed
              (therefore the output is somewhat redundant).

       -E, --emce
              This option implies the method of "refitting  to  synthetic  data  sets",  or  "error  Monte-Carlo
              estimation" (EMCE). This method must have a primarily assigned minimization algorithm (that can be
              any of the CLLS, NLLM or DHSX methods). First, the program searches the best fit  values  for  the
              fit/regression  variables  involving the assigned primary minimization algorithm and reports these
              best fit variables. Then, additional synthetic data sets are generated around this set of best fit
              variables  and  the minimization is repeated involving the same primary method. The synthetic data
              sets are generated independently for each input data block, taking into account the fit residuals.
              The noise added to the best fit data is generated from the power spectrum of the residuals.

       -X, --xmmc
              This  option implies an improved/extended version of the Markov Chain Monte-Carlo analysis (XMMC).
              The major differences between the classic  MCMC  and  XMMC  methods  are  the  following.  1/  The
              transition  distribution  is derived from the Fisher covariance matrix. 2/ The program performs an
              initial minimization of the merit function involving the method of downhill  simplex.  3/  Various
              sanity checks are performed in order to verify the convergence of the Markov chains (including the
              comparison of the  actual  and  theoretical  transition  probabilities,  the  computation  of  the
              autocorrelation  lengths  of  each  fit/regression  variable  series  and  the  comparison  of the
              statistical and Fisher covariance).

       -A, --fima
              Fisher information matrix analysis  (FIMA).  With  this  analysis  method  one  can  estimate  the
              uncertainties  and  correlations  of  the  fit/regression variables involving the method of Fisher
              matrix analysis. This method does not minimize the merit functions by adjusting the fit/regression
              variables,  instead,  the initial values (specified after the -v, --variables option) are expected
              to be the "best fit" ones.

   Fine-tuning of regression analysis methods:
       -e, --error <error expression>
              Expression for the uncertainties. Note that zero or negative uncertainty  is  equivalent  to  zero
              weight, i.e. input lines with zero or negative errors are discarded from the fit.

       -w, --weight <weight expression>
              Expression  for  the  weights. The weight is simply the reciprocal of the uncertainty. The default
              error/uncertainty (and therefore the weight) is unity. Note that most of  the  analysis/regression
              methods are rather sensitive to the uncertainties since the merit function also depends on these.

       -P, --parameters <regression parameters>
              This  option  is  followed  by  a set of optional fine-tune parameters, that is different for each
              primary regression analysis method:

       default, defaults
              Use the default fine-tune parameters for the given regression method.

       clls, linear
              Use the classic linear least squares method as the primary  minimization  algorithm  of  the  EMCE
              method.  Like  in the case of the CLLS regression analysis (see -L, --clls), the model function(s)
              must be both differentiable and linear with respect to the fit/regression variables.

       nllm, nonlinear
              Use  the  non-linear  Levenberg-Marquardt  minimization  algorithm  as  the  primary  minimization
              algorithm  of  the EMCE method. Like in the case of the NLLM regression analysis (see -N, --nllm),
              the model function(s) must be differentiable with respect to the fit/regression variables.

       lmnd   Use  the  non-linear  Levenberg-Marquardt  minimization  algorithm  as  the  primary  minimization
              algorithm  of  the  EMCE  method. Like in the case of -U, --lmnd regression method, the parametric
              derivatives of the model function(s) are calculated by a numerical  approximation  (see  also  -U,
              --lmnd and -q, --differences for additional details).

       dhsx, downhill
              Use  the  downhill  simplex  (DHSX) minimization as the primary minimization algorithm of the EMCE
              method. Unless the additional 'fisher' option is specified directly, like in the default  case  of
              the  DHSX  regression  method,  the  user  should  specify the uncertainties of the fit/regression
              variables that are used as an initial size of the simplex.

       mc, montecarlo
              Use a primitive Monte-Carlo diffusion minimization technique as the primary minimization algorithm
              of  the  EMCE  method.  The  user should specify the uncertainties of the fit/regression variables
              which are then used to generate the Monte-Carlo transitions. This primary  minimization  technique
              is rather nasty (very slow), so its usage is not recommended.

       fisher In  the  case  of  the  DHSX  regression method or in the case of the EMCE method when the primary
              minimization is the downhill simplex algorithm, the initial size of the simplex  is  derived  from
              the  Fisher  covariance  approximation evaluated at the point represented by the initial values of
              the fit/regression variables. Since the derivation of the Fisher covariance requires the knowledge
              of  the partial derivatives of the model function(s) with respect to the fit/regression variables,
              the(se) model function(s) must be differentiable. On the other hand,  the  user  do  not  have  to
              specify  the  initial  uncertainties  after  the  -v, --variables option since these uncertainties
              derived automatically from the Fisher covariance.

       skip   In the case of EMCE and XMMC method, the initial minimization is skipped.

       lambda=<value>
              Initial value for the "lambda" parameter of the Levenberg-Marquardt algorithm.

       multiply=<value>
              Value of the "lambda multiplicator" parameter of the Levenberg-Marquardt algorithm.

       iterations=<max.iterations>
              Number of iterations during the Levenberg-Marquardt algorithm.

       accepted
              Count the accepted transitions in the MCMC and XMMC methods (default).

       nonaccepted
              Count the total (accepted plus non-accepted) transitions in the MCMC and XMMC methods.

       gibbs  Use the Gibbs sampler in the MCMC method.

       adaptive
              Use the adaptive XMMC algorithm (i.e. the Fisher covariance is  re-computed  after  each  accepted
              transition).

       window=<window size>
              Window   size   for   calculating  the  autocorrelation  lengths  for  the  Markov  chains  (these
              autocorrelation lengths are reported only in the case of XMMC method). The default  value  is  20,
              which  is fine in the most cases since the typical autocorrelation lengths are between 1 and 2 for
              nice convergent chains.

       -q, --difference <variablename>=<difference>[,...]
              The analysis method of LMND (Levenberg-Marquardt minimization using numerical derivatives, see -U,
              --lmnd)  requires the differences that are used during the computations of the partial derivatives
              of the model function(s). With this option, one can specify these differences.

       -k, --separate <variablename>[,...]
              In the case of non-linear regression methods (for  instance,  DHSX  or  XMMC)  the  fit/regression
              variables  in  which  the  model functions are linear can be separated from the nonlinear part and
              therefore make the minimization process more robust and reliable. Since the set  of  variables  in
              which  the  model  functions  are  linear  is  ambiguous,  the user should explicitly specify this
              supposedly  linear  subset  of  regression  variables.   (For   instance,   the   model   function
              "a*b*x+a*cos(x)+b*sin(x)+c*x^2"  is linear in both "(a,c)" and "(b,c)" parameter vectors but it is
              non-linear in "(a,b,c)".) The program checks whether the specified subset of regression  variables
              is  a  linear  subset  and  reports  a  warning  if  not. Note that the subset of separated linear
              variables (defined here) and the  subset  of  the  fit/regression  variables  affected  by  linear
              constraints (see also section "Constraints") must be disjoint.

       --perturbations <noise level>, --perturbations <key>=<noise level>[,...]
              Additional  white  noise  to  be added to each EMCE synthetic data sets. Each data block (referred
              here by the approprate data block  keys,  see  also  section  "Multiple  data  blocks")  may  have
              different  white  noise  levels.  If  there  is only one data block, this command line argument is
              followed only by a single number specifying the white noise level.

   Additional parameters for Monte-Carlo analysis:
       -s, --seed <random seed>
              Seed for the random number generator. By default this seed is  0,  thus  all  of  the  Monte-Carlo
              regression  analyses  (EMCE,  MCMC,  XMMC and the optional generator for the FIMA method) generate
              reproducible parameter distributions. A positive value after this option yields alternative random
              seeds while all negative values result in an automatic random seed (derived from various available
              sources,  such  as  /dev/[u]random,  system  time,  hardware  MAC  address  and   so),   therefore
              distributions generated involving this kind of automatic random seed are not reproducible.

       -i, --[mcmc,emce,xmmc,fima]-iterations <iterations>
              The  actual  number  of Monte-Carlo iterations for the MCMC, EMCE, XMMC methods. Additionally, the
              FIMA method is capable to generate a mock Gaussian distribution of the  parameter  with  the  same
              covariance  as  derived  by the Fisher analysis. The number of points in this mock distribution is
              also specified by this command line option.

   Clipping outlier data points:
       -r, --sigma, --rejection-level <level>
              Rejection level in the units of standard deviations.

       -n, --iterations <number of iterations>
              Maximum number of iterations in the outlier clipping cycles. The actual number of  outlier  points
              can be traced by increasing the verbosity of the program (see -V, --verbose).

       --[no-]weighted-sigma
              During  the  derivation of the standard deviation, the contribution of the data points data points
              can be weighted by the respective weights/error bars (see also -w, --weight or -e, --error in  the
              section  "Fine-tuning of regression analysis methods"). If no weights/error bars are associated to
              the data points (i.e. both -w, --weight or -e, --error options are omitted), this option will have
              no practical effect.

       Note  that  in  the actual version of `lfit`, only the CLLS, NLLM and LMND regression methods support the
       above discussed way of outlier clipping.

   Multiple data blocks:
       -i<key> <input file name>
              Input file name for the data block named as <key>.

       -c<key> <independent>[:<column index>],...
              Column definitions (see also -c, --columns) for the given data block named as <key>.

       -f<key> <model function>
              Expression for the model function assigned to the data block named as <key>.

       -y<key> <dependent expression>
              Expression of the dependent variable for the data block named as <key>.

       -e<key> <errors>
              Expression of the uncertainties for the data block named as <key>.

       -w<key> <weights>
              Expression of the weights for the data block named as <key>. Note that like in  the  case  of  -e,
              --errors and -w, --weights, only one of the -e<key>, -w<key> arguments should be specified.

   Constraints:
       -t, --constraint, --constraints <expression>{=<>}<expression>[,...]
              List  of  fit  and  domain  constraints  between  the  regression  variables.  Each fit constraint
              expression must be linear in the fit/regression variables. The program checks the linearity of the
              fit  constraints  and  reports  an  error  if  any  of  the  constraints are non-linear.  A domain
              constraint can be any expression involving arbitrary binary arithmetic relation  (such  as  strict
              greater  than: '>', strict less than: '<', greater or equal to: '>=' and less or requal to: '<=').
              Constraints can be specified either by a comma-separated list after a single command line argument
              of -t, --constraints or by multiple of these command line arguments.

       -v, --variable <name>:=<value>
              Another  form of specifying constraints. The variable specifications after -v, --variable can also
              be used to define constraints by writing ":=" instead of "=" between the variable name and initial
              value. Thus, -v <name>:=<value> is equivalent to -v <name>=<value> -t <name>=<value>.

   User-defined functions:
       -x, --define, --macro <name>(<parameters>)=<definition expression>
              With  this option, the user can define additional functions (also called macros) on the top of the
              built-in functions and operators, dynamically loadaded functions and  previously  defined  macros.
              Note  that  each  such user-defined function must be stand-alone, i.e. external variables (such as
              fit/regression variables and independent variables) cannot be part of the  definition  expression,
              only the parameters of these functions.

   Dynamically loaded extensions and functions:
       -d, --dynamic <library>:<array>[,...]
              Load  the  dynamically  linked  library  (shared  object)  named  <library>  and import the global
              `lfit`-compatible set of functions defined in the arrays specified after the name of the  library.
              The  arrays must have to be declared with the type of 'lfitfunction', as it is defined in the file
              "lfit.h". Each record in this array contains information about a certain imported function, namely
              the  actual  name of this function, flags specifying whether the function is differentiable and/or
              linear in its regression parameters, the number of regression variables and independent  variables
              and  the  actual  C  subroutine  that  implements the evaulation of the function (and the optional
              computation of the partial derivatives). The module 'linear.c' and 'linear.so' provides  a  simple
              example that implements the "line(a,b,x)=a*x+b" function. This example function has two regression
              variables ("a" and "b") and one independent variable ("x") and the function itself  is  linear  in
              the regression variables.

   More on outputs:
       -z, --columns-output <column indices>
              Column  indices  where  the results are written in evaluation mode. If this option is omitted, the
              results of the function evaluation are written sequentally. Otherwise, the input file  is  written
              to  the output and the appropriate columns (specified here) are replaced by the respective results
              of the function evaluation. Thus, although the default column order  is  sequential,  there  is  a
              significant  difference  between  omitting this option and specifying "-z 1,2,...,N". In the first
              case, the output file contains only the results of the function evaluations, while in  the  latter
              case, the first N columns of the original file are replaced with the results.

       --errors, --error-line, --error-columns
              Print the uncertainties of the fit/regression variables.

       -F, --format <variable name>=<format>[,...]
              Format  of the output in printf-style for each fit/regression variable(see printf(3)). The default
              format is %12.6g (6 signifiant figures).

       -F, --format <format>[,...]
              Format of the output in evaluation mode. The default format is %12.6g (6 signifiant figures).

       -C, --correlation-format <format>
              Format of the correlation matrix elements. The default format is %6.3f (3 significant figures).

       -g, --derived-variable[s] <variable name>=<expression>[,...]
              Some of the regression  and  analysis  methods  are  capable  to  compute  the  uncertainties  and
              correlations  for  derived  regression variables. These additional (and therefore not independent)
              variables can be defined with this command line option. In the definition  expression  one  should
              use  only  the fit/regression variables (as defined by the -v, --variables command line argument).
              The output format of these variables can also be  specified  by  the  -F,  --format  command  line
              argument.

       -u, --output-fitted <filename>
              Neme  of  an output file into which those lines of the input are written that were involved in the
              final regression. This option is useful in the case of outlier clipping in order to see  what  was
              the  actual  subset  of input data that was used in the fit (see also the -n, --iterations and -r,
              --sigma options).

       -j, --output-rejected <filename>
              Neme of an output file into which those lines of the input are written that were rejected from the
              final  regression.  This option is useful in the case of outlier clipping in order to see what was
              the actual subset of input data where the dependent variable represented outlier points (see  also
              the -n, --iterations and -r, --sigma options).

       -a, --output-all <filename>
              File  containing  the  lines  of  the  input  file  that  were involved in the complete regression
              analysis. This file is simply the original file, only the commented and empty lines are omitted.

       -p, --output-expression <filename>
              In this file the model function is written in which the fit/regression variables are  replaced  by
              their best-fit values.

       -l, --output-variables <filename>
              List  of the names and values of the fit/regression variables in the same format as used after the
              -v, --variables command line argument. The content  of  this  file  can  therefore  be  passed  to
              subsequent invocations of `lfit`.

       --delta
              Write  the  individual  differences  between  the independent variables and the evaluated best fit
              model function values for each line in the output files specified by the -u, --output-fitted,  -j,
              --output-rejected and -a, --output-all command line options.

       --delta-comment
              Same  as  --delta, but the differences are written as a comment (i.e. separated by a '##' from the
              original input lines).

       --residual
              Write the final fit residual to the output file (after the list of the  best-fit  values  for  the
              fit/regression variables).

REPORTING BUGS

       Report bugs to <apal@szofi.net>, see also https://fitsh.net/.

COPYRIGHT

       Copyright © 1996, 2002, 2004-2008, 2009-2020; Pal, Andras <apal@szofi.net>