Fixed assignment of the intercept
[pspp-builds.git] / lib / linreg / pspp_linreg.h
index 92e78a0f24b3b853f094b76cf75d8f10371d781d..40c5ad842b3df324c071d3d4771ffd6dc6cd39e4 100644 (file)
@@ -54,6 +54,7 @@
 #include <gsl/gsl_multifit.h>
 #include <gsl/gsl_blas.h>
 #include <gsl/gsl_cblas.h>
+#include <src/var.h>
 enum
 {
   PSPP_LINREG_SWEEP,
@@ -62,17 +63,36 @@ enum
 
 /*
   Cache for the relevant data from the model. There are several
-  members which the caller may not use, and which could use a lot of
+  members which the caller might not use, and which could use a lot of
   storage. Therefore non-essential members of the struct will be
   allocated only when requested.
  */
+struct pspp_linreg_coeff
+{
+  double estimate; /* Estimated coefficient. */
+  const struct variable *v; /* The variable associated with this coefficient. 
+                              The calling function should supply the variable
+                              when it creates the design matrix. The estimation
+                              procedure ignores the struct variable *. It is here so
+                              the caller can match parameters with relevant 
+                              variables.
+                           */
+};
 struct pspp_linreg_cache_struct
 {
   int n_obs;                   /* Number of observations. */
   int n_indeps;                        /* Number of independent variables. */
-  gsl_vector *depvar;
-  gsl_matrix *indepvar;
+  int n_coeffs;
+
+  /* 
+     The variable struct is ignored during estimation.
+     It is here so the calling procedure can
+     find the variable used in the model.
+  */
+  const struct variable *depvar;
+
   gsl_vector *residuals;
+  struct pspp_linreg_coeff *coeff;
   gsl_vector *param_estimates;
   int method;                  /* Method to use to estimate parameters. */
   /*
@@ -81,8 +101,8 @@ struct pspp_linreg_cache_struct
      called, pspp_linreg() will compute their values.
 
      Entry i of indep_means is the mean of independent
-     variable i, whose observations are stored in column i
-     of indepvar.
+     variable i, whose observations are stored in the ith
+     column of the design matrix.
    */
   double depvar_mean;
   double depvar_std;