/* PSPP - a program for statistical analysis.
- Copyright (C) 2005 Free Software Foundation, Inc. Written by Jason H. Stover.
+ Copyright (C) 2005, 2011 Free Software Foundation, Inc. Written by Jason H. Stover.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#ifndef LINREG_H
#define LINREG_H
-#include <stdbool.h>
+
#include <gsl/gsl_math.h>
-#include <gsl/gsl_vector.h>
#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_vector.h>
+#include <stdbool.h>
enum
{
column of the design matrix.
*/
double depvar_mean;
- double depvar_std;
gsl_vector *indep_means;
gsl_vector *indep_std;
Sums of squares.
*/
double ssm; /* Sums of squares for the overall model. */
- gsl_vector *ss_indeps; /* Sums of squares from each
- independent variable. */
double sst; /* Sum of squares total. */
double sse; /* Sum of squares error. */
double mse; /* Mean squared error. This is just sse /
double dfe;
double dfm;
- struct variable *pred;
- struct variable *resid;
int dependent_column; /* Column containing the dependent variable. Defaults to last column. */
+ int refcnt;
};
typedef struct linreg_struct linreg;
linreg *linreg_alloc (const struct variable *, const struct variable **,
double, size_t);
-bool linreg_free (void *);
+void linreg_unref (linreg *);
+void linreg_ref (linreg *);
/*
Fit the linear model via least squares. All pointers passed to pspp_linreg
are assumed to be allocated to the correct size and initialized to the
values as indicated by opts.
*/
-void
-linreg_fit (const gsl_matrix *, linreg *);
+void linreg_fit (const gsl_matrix *, linreg *);
-double
-linreg_predict (const linreg *, const double *, size_t);
-double
-linreg_residual (const linreg *, double, const double *, size_t);
+double linreg_predict (const linreg *, const double *, size_t);
+double linreg_residual (const linreg *, double, const double *, size_t);
const struct variable ** linreg_get_vars (const linreg *);
-/*
- Return or set the standard deviation of the independent variable.
- */
-double linreg_get_indep_variable_sd (linreg *, size_t);
-void linreg_set_indep_variable_sd (linreg *, size_t, double);
/*
Mean of the independent variable.
*/
-double linreg_get_indep_variable_mean (linreg *, size_t);
+double linreg_get_indep_variable_mean (const linreg *, size_t);
void linreg_set_indep_variable_mean (linreg *, size_t, double);
double linreg_mse (const linreg *);
double linreg_intercept (const linreg *);
-gsl_matrix * linreg_cov (const linreg *);
+const gsl_matrix * linreg_cov (const linreg *);
double linreg_coeff (const linreg *, size_t);
const struct variable * linreg_indep_var (const linreg *, size_t);
size_t linreg_n_coeffs (const linreg *);
double linreg_dfmodel (const linreg *);
double linreg_sst (const linreg *);
void linreg_set_depvar_mean (linreg *, double);
-double linreg_get_depvar_mean (linreg *);
+double linreg_get_depvar_mean (const linreg *);
#endif