X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Flinreg.h;h=b08f7d0e431dd61190efbf82fb2850e9c7053792;hb=d487d1f72f6c4e8ec178fa8d8ce0aadf4aa34fcd;hp=349d5a909c300c4713ee14a0196d967abbbcb5b6;hpb=f550aee00a62fe1d8baf62d83cd7efef6cc2ee92;p=pspp diff --git a/src/math/linreg.h b/src/math/linreg.h index 349d5a909c..b08f7d0e43 100644 --- a/src/math/linreg.h +++ b/src/math/linreg.h @@ -1,5 +1,5 @@ /* 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 @@ -16,10 +16,11 @@ #ifndef LINREG_H #define LINREG_H -#include + #include -#include #include +#include +#include enum { @@ -113,7 +114,6 @@ struct linreg_struct column of the design matrix. */ double depvar_mean; - double depvar_std; gsl_vector *indep_means; gsl_vector *indep_std; @@ -121,8 +121,6 @@ struct linreg_struct 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 / @@ -140,8 +138,8 @@ 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; }; typedef struct linreg_struct linreg; @@ -151,38 +149,31 @@ 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 *); @@ -192,5 +183,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