REGRESSION: Implement /ORIGIN subcommand.
[pspp] / src / math / linreg.h
index c4bec321b6631360bdb4ff5fd88120cc67e9a0e9..39cda89f295806bc46cf9930aac99dddaad94c17 100644 (file)
@@ -90,7 +90,6 @@ typedef struct pspp_linreg_opts_struct pspp_linreg_opts;
 
 struct linreg_struct
 {
-  int refcnt;
   double n_obs;                        /* Number of observations. */
   int n_indeps;                        /* Number of independent variables. */
   int n_coeffs;                 /* The intercept is not considered a
@@ -139,46 +138,44 @@ struct linreg_struct
   double dfe;
   double dfm;
 
-  struct variable *pred;
-  struct variable *resid;
   int dependent_column; /* Column containing the dependent variable. Defaults to last column. */
+  int refcnt;
+
+  bool origin;
 };
 
 typedef struct linreg_struct linreg;
 
 
 
-linreg *linreg_alloc (const struct variable *, const struct variable **, 
-                     double, size_t);
+linreg *linreg_alloc (const struct variable *, const struct variable **,
+                     double, size_t, bool);
 
 void linreg_unref (linreg *);
-void linreg_ref (linreg *c);
+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 *);
 
 /*
   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 *);
@@ -188,5 +185,5 @@ double linreg_ssreg (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