double *b0, /* estimated y axis intercept */
double *b1, /* estimated slope */
double *s2, /* estimated variance of data points */
- double *us2, /* estimated unweighted variance of data points */
double *sb0, /* estimated standard deviation of
intercept */
{
double P, Q, U, V, W; /* total */
double resid[MAX_POINTS * REGRESS_RUNS_RATIO];
- double ss, uss;
+ double ss;
double a, b, u, ui, aa;
int start, resid_start, nruns, npoints;
*b1 = b;
*b0 = a;
- ss = uss = 0.0;
+ ss = 0.0;
for (i=start; i<n; i++) {
ss += resid[i - resid_start]*resid[i - resid_start] / w[i];
- uss += resid[i - resid_start]*resid[i - resid_start];
}
npoints = n - start;
- ss /= npoints - 2;
- uss /= npoints - 2;
+ ss /= (double)(npoints - 2);
*sb1 = sqrt(ss / V);
aa = u * (*sb1);
*sb0 = sqrt((ss / W) + (aa * aa));
- *s2 = ss * npoints / W;
- *us2 = uss;
+ *s2 = ss * (double) npoints / W;
*new_start = start;
*dof = npoints - 2;
/* This is the estimated residual variance of the data points */
double variance;
- /* This is the estimated unweighted variance of the data points */
- double uvariance;
-
/* This array contains the sample epochs, in terms of the local
clock. */
struct timeval sample_times[MAX_SAMPLES * REGRESS_RUNS_RATIO];
inst->estimated_offset_sd = 86400.0; /* Assume it's at least within a day! */
inst->offset_time.tv_sec = 0;
inst->offset_time.tv_usec = 0;
- inst->variance = inst->uvariance = 16.0;
+ inst->variance = 16.0;
inst->nruns = 0;
return inst;
}
time. E.g. a value of 4 means that we think the standard deviation
is four times the fluctuation of the peer distance */
-#define SD_TO_DIST_RATIO 1.4
+#define SD_TO_DIST_RATIO 1.0
/* ================================================== */
/* This function runs the linear regression operation on the data. It
int degrees_of_freedom;
int best_start, times_back_start;
- double est_intercept, est_slope, est_var, est_uvar, est_intercept_sd, est_slope_sd;
+ double est_intercept, est_slope, est_var, est_intercept_sd, est_slope_sd;
int i, j, nruns;
double min_distance;
double sd_weight, sd;
/* And now, work out the weight vector */
- sd = sqrt(inst->uvariance);
+ sd = sqrt(inst->variance);
if (sd > min_distance || sd <= 0.0)
sd = min_distance;
inst->regression_ok = RGR_FindBestRegression(times_back + inst->runs_samples,
offsets + inst->runs_samples, weights,
inst->n_samples, inst->runs_samples,
- &est_intercept, &est_slope, &est_var, &est_uvar,
+ &est_intercept, &est_slope, &est_var,
&est_intercept_sd, &est_slope_sd,
&best_start, &nruns, °rees_of_freedom);
inst->offset_time = inst->sample_times[inst->last_sample];
inst->estimated_offset_sd = est_intercept_sd;
inst->variance = est_var;
- inst->uvariance = est_uvar;
inst->nruns = nruns;
stress = fabs(old_freq - inst->estimated_frequency) / old_skew;