134 lines
4.6 KiB
C
134 lines
4.6 KiB
C
/*
|
|
chronyd/chronyc - Programs for keeping computer clocks accurate.
|
|
|
|
**********************************************************************
|
|
* Copyright (C) Richard P. Curnow 1997-2002
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of version 2 of the GNU General Public License as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
**********************************************************************
|
|
|
|
=======================================================================
|
|
|
|
Header file for regression routine(s)
|
|
|
|
*/
|
|
|
|
#ifndef GOT_REGRESS_H
|
|
#define GOT_REGRESS_H
|
|
|
|
extern void
|
|
RGR_WeightedRegression
|
|
(double *x, /* independent variable */
|
|
double *y, /* measured data */
|
|
double *w, /* weightings (large => data
|
|
less reliable) */
|
|
|
|
int n, /* number of data points */
|
|
|
|
/* And now the results */
|
|
|
|
double *b0, /* estimated y axis intercept */
|
|
double *b1, /* estimated slope */
|
|
double *s2, /* estimated variance (weighted) of
|
|
data points */
|
|
|
|
double *sb0, /* estimated standard deviation of
|
|
intercept */
|
|
double *sb1 /* estimated standard deviation of
|
|
slope */
|
|
|
|
/* Could add correlation stuff later if required */
|
|
);
|
|
|
|
/* Return the weighting to apply to the standard deviation to get a
|
|
given size of confidence interval assuming a T distribution */
|
|
|
|
extern double RGR_GetTCoef(int dof);
|
|
|
|
/* Return the value to apply to the variance to make an upper one-sided
|
|
test assuming a chi-square distribution. */
|
|
|
|
extern double RGR_GetChi2Coef(int dof);
|
|
|
|
/* Maximum ratio of number of points used for runs test to number of regression
|
|
points */
|
|
#define REGRESS_RUNS_RATIO 2
|
|
|
|
/* Minimum number of samples for regression */
|
|
#define MIN_SAMPLES_FOR_REGRESS 3
|
|
|
|
/* Return a status indicating whether there were enough points to
|
|
carry out the regression */
|
|
|
|
extern int
|
|
RGR_FindBestRegression
|
|
(double *x, /* independent variable */
|
|
double *y, /* measured data */
|
|
double *w, /* weightings (large => data
|
|
less reliable) */
|
|
|
|
int n, /* number of data points */
|
|
int m, /* number of extra samples in x and y arrays
|
|
(negative index) which can be used to
|
|
extend runs test */
|
|
int min_samples, /* minimum number of samples to be kept after
|
|
changing the starting index to pass the runs
|
|
test */
|
|
|
|
/* And now the results */
|
|
|
|
double *b0, /* estimated y axis intercept */
|
|
double *b1, /* estimated slope */
|
|
double *s2, /* estimated variance of data points */
|
|
|
|
double *sb0, /* estimated standard deviation of
|
|
intercept */
|
|
double *sb1, /* estimated standard deviation of
|
|
slope */
|
|
|
|
int *new_start, /* the new starting index to make the
|
|
residuals pass the two tests */
|
|
|
|
int *n_runs, /* number of runs amongst the residuals */
|
|
|
|
int *dof /* degrees of freedom in statistics (needed
|
|
to get confidence intervals later) */
|
|
|
|
);
|
|
|
|
int
|
|
RGR_FindBestRobustRegression
|
|
(double *x,
|
|
double *y,
|
|
int n,
|
|
double tol,
|
|
double *b0,
|
|
double *b1,
|
|
int *n_runs,
|
|
int *best_start);
|
|
|
|
int
|
|
RGR_MultipleRegress
|
|
(double *x1, /* first independent variable */
|
|
double *x2, /* second independent variable */
|
|
double *y, /* measured data */
|
|
|
|
int n, /* number of data points */
|
|
|
|
/* The results */
|
|
double *b2 /* estimated second slope */
|
|
);
|
|
|
|
#endif /* GOT_REGRESS_H */
|