#include <LinearFit.h>
Public Member Functions | |
void | fit (const std::vector< float > &x, const std::vector< float > &y, int ndat, const std::vector< float > &sigy, float &slope, float &intercept, float &covss, float &covii, float &covsi) const |
Straight line fit for data with errors on one coordinate
Definition at line 9 of file LinearFit.h.
void LinearFit::fit | ( | const std::vector< float > & | x, |
const std::vector< float > & | y, | ||
int | ndat, | ||
const std::vector< float > & | sigy, | ||
float & | slope, | ||
float & | intercept, | ||
float & | covss, | ||
float & | covii, | ||
float & | covsi | ||
) | const |
x_i, y_i: measurements of y(x_i), sigy_i: error (sigma) on y_i slope, intercept: fitted parameters covss, covii, covsi: covariance matrix of fitted parameters, s denoting slope, i denoting intercept
Definition at line 3 of file LinearFit.cc.
References i.
Referenced by LinearFitErrorsIn2Coord::slope().
{ float g1 = 0, g2 = 0; float s11 = 0, s12 = 0, s22 = 0; for (int i = 0; i != ndat; i++) { float sy2 = sigy[i] * sigy[i]; g1 += y[i] / sy2; g2 += x[i]*y[i] / sy2; s11 += 1. / sy2; s12 += x[i] / sy2; s22 += x[i]*x[i] / sy2; } float d = s11*s22 - s12*s12; intercept = (g1*s22 - g2*s12) / d; slope = (g2*s11 - g1*s12) / d; covii = s22 / d; covss = s11 / d; covsi = -s12 / d; }