X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Flinreg%2Fpspp_linreg.h;h=a83f7b3d11ec7a8b5d240ec194b838082d0e3da9;hb=d39f4365f9e9ee7923e7dade0d7571a0bf3ec58d;hp=a8db8a10f8e7979302fa401394e53088239b55d6;hpb=e238e7fc030ebb64a7f70176c2218783b5b205e3;p=pspp-builds.git diff --git a/lib/linreg/pspp_linreg.h b/lib/linreg/pspp_linreg.h index a8db8a10..a83f7b3d 100644 --- a/lib/linreg/pspp_linreg.h +++ b/lib/linreg/pspp_linreg.h @@ -54,7 +54,9 @@ #include #include #include +#include #include +#define PSPP_LINREG_VAL_NOT_FOUND -1 enum { PSPP_LINREG_SWEEP, @@ -70,13 +72,24 @@ enum 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. - */ + double std_err; /* Standard error of the estimate. */ + struct varinfo *v_info; /* Information pertaining to the + variable(s) associated with this + coefficient. The calling function + should initialize this value with the + functions in coefficient.c. The + estimation procedure ignores this + member. It is here so the caller can + match parameters with relevant variables + and values. If the coefficient is + associated with an interaction, then + v_info contains information for multiple + variables. + */ + int n_vars; /* Number of variables associated with this coefficient. + Coefficients corresponding to interaction terms will + have more than one variable. + */ }; struct pspp_linreg_cache_struct { @@ -177,4 +190,17 @@ void pspp_linreg_cache_free (pspp_linreg_cache * cache); int pspp_linreg (const gsl_vector * Y, const gsl_matrix * X, const pspp_linreg_opts * opts, pspp_linreg_cache * cache); +void pspp_linreg_coeff_init (pspp_linreg_cache *, struct design_matrix *); + +void pspp_linreg_coeff_free (struct pspp_linreg_coeff *); + +void pspp_linreg_coeff_set_estimate (struct pspp_linreg_coeff *, double); + +void pspp_linreg_coeff_set_std_err (struct pspp_linreg_coeff *, double); + +int pspp_linreg_coeff_get_n_vars (struct pspp_linreg_coeff *); + +const struct variable *pspp_linreg_coeff_get_var (struct pspp_linreg_coeff *, int); + +const union value *pspp_linreg_coeff_get_value (struct pspp_linreg_coeff *, const struct variable *); #endif