[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pspp-cvs] pspp/src/language/stats regression.q ChangeLog
From: |
Jason H Stover |
Subject: |
[Pspp-cvs] pspp/src/language/stats regression.q ChangeLog |
Date: |
Fri, 30 Mar 2007 02:16:41 +0000 |
CVSROOT: /sources/pspp
Module name: pspp
Changes by: Jason H Stover <jstover> 07/03/30 02:16:41
Modified files:
src/language/stats: regression.q ChangeLog
Log message:
use moments.c to compute moments
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/regression.q?cvsroot=pspp&r1=1.46&r2=1.47
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/ChangeLog?cvsroot=pspp&r1=1.47&r2=1.48
Patches:
Index: regression.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/regression.q,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -b -r1.46 -r1.47
--- regression.q 17 Mar 2007 03:08:23 -0000 1.46
+++ regression.q 30 Mar 2007 02:16:41 -0000 1.47
@@ -88,7 +88,7 @@
*/
struct moments_var
{
- struct moments *m;
+ struct moments1 *m;
struct variable *v;
};
@@ -981,6 +981,7 @@
struct ccase c;
size_t row;
const union value *val;
+ double w = 1.0;
for (r = casefile_get_reader (cf, NULL);
casereader_read (r, &c); case_destroy (&c))
@@ -990,7 +991,7 @@
val = case_data (&c, v);
if (mom != NULL)
{
- moments_pass_one (mom->m, val->f, 1.0);
+ moments1_add (mom->m, val->f, w);
}
cat_value_update (v, val);
if (var_is_value_missing (v, val, MV_ANY))
@@ -1103,6 +1104,37 @@
pspp_coeff_init (c->coeff + 1, dm);
}
+/*
+ Put the moments in the linreg cache.
+ */
+static void
+compute_moments (pspp_linreg_cache *c, struct moments_var *mom, struct
design_matrix *dm, size_t n)
+{
+ size_t i;
+ size_t j;
+ double weight;
+ double mean;
+ double variance;
+ double skewness;
+ double kurtosis;
+ /*
+ Scan the variable names in the columns of the design matrix.
+ When we find the variable we need, insert its mean in the cache.
+ */
+ for (i = 0; i < dm->m->size2; i++)
+ {
+ for (j = 0; j < n; j++)
+ {
+ if (design_matrix_col_to_var (dm, i) == (mom + j)->v)
+ {
+ moments1_calculate ((mom + j)->m, &weight, &mean, &variance,
+ &skewness, &kurtosis);
+ gsl_vector_set (c->indep_means, i, mean);
+ gsl_vector_set (c->indep_std, i, sqrt (variance));
+ }
+ }
+ }
+}
static bool
run_regression (const struct ccase *first,
const struct casefile *cf, void *cmd_ UNUSED, const struct
dataset *ds)
@@ -1154,7 +1186,7 @@
mom = xnmalloc (n_variables, sizeof (*mom));
for (i = 0; i < n_variables; i++)
{
- (mom + i)->m = moments_create (MOMENT_VARIANCE);
+ (mom + i)->m = moments1_create (MOMENT_VARIANCE);
(mom + i)->v = v_variables[i];
}
lopts.get_depvar_mean_std = 1;
@@ -1249,6 +1281,7 @@
Find the least-squares estimates and other statistics.
*/
pspp_linreg ((const gsl_vector *) Y, X->m, &lopts, models[k]);
+ compute_moments (models[k], mom, X, n_variables);
subcommand_statistics (cmd.a_statistics, models[k]);
subcommand_export (cmd.sbc_export, models[k]);
@@ -1260,7 +1293,7 @@
}
for (i = 0; i < n_variables; i++)
{
- moments_destroy ((mom + i)->m);
+ moments1_destroy ((mom + i)->m);
}
free (mom);
free (is_missing_case);
Index: ChangeLog
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/ChangeLog,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -b -r1.47 -r1.48
--- ChangeLog 19 Mar 2007 04:18:47 -0000 1.47
+++ ChangeLog 30 Mar 2007 02:16:41 -0000 1.48
@@ -1,3 +1,9 @@
+2007-03-29 Jason Stover <address@hidden>
+
+ * regression.q (prepare_data): New function.
+
+ * regression.q (compute_moments): New function.
+
2007-03-18 Ben Pfaff <address@hidden>
* crosstabs.q (static var write): Rename write_style to avoid