double n, size_t p)
{
linreg *c;
+ size_t i;
- c = (linreg *) malloc (sizeof (linreg));
+ c = xmalloc (sizeof (*c));
c->depvar = depvar;
- c->indep_vars = indep_vars;
+ c->indep_vars = xnmalloc (p, sizeof (*indep_vars));
+ for (i = 0; i < p; i++)
+ {
+ c->indep_vars[i] = indep_vars[i];
+ }
c->indep_means = gsl_vector_alloc (p);
c->indep_std = gsl_vector_alloc (p);
c->ssx = gsl_vector_alloc (p); /* Sums of squares for the
Default settings.
*/
c->method = LINREG_SWEEP;
- c->resid = NULL; /* The variable storing my residuals. */
- c->pred = NULL; /* The variable storing my predicted values. */
+ c->pred = NULL;
+ c->resid = NULL;
return c;
}
gsl_vector_free (c->indep_std);
gsl_matrix_free (c->cov);
gsl_vector_free (c->ssx);
+ free (c->indep_vars);
free (c->coeff);
free (c);
}
params = gsl_matrix_calloc (cov->size1, cov->size2);
gsl_matrix_memcpy (params, cov);
+ l->sst = gsl_matrix_get (cov, cov->size1 - 1, cov->size2 - 1);
if (l->method == LINREG_SWEEP)
{
return c->n_obs;
}
+double
+linreg_sse (const linreg *c)
+{
+ return c->sse;
+}
+
double
linreg_ssreg (const linreg *c)
{
- return c->ssm;
+ return (c->sst - c->sse);
+}
+
+double linreg_sst (const linreg *c)
+{
+ return c->sst;
}
double