From 597402f4808b749094b3f90a96d96adf67e41c5b Mon Sep 17 00:00:00 2001 From: Jason Stover Date: Wed, 7 Jun 2006 01:52:48 +0000 Subject: [PATCH] fixed mistakes --- src/math/ts/innovations.c | 22 ++++++++------------ src/math/ts/innovations.h | 43 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 13 deletions(-) create mode 100644 src/math/ts/innovations.h diff --git a/src/math/ts/innovations.c b/src/math/ts/innovations.c index dba44849..3b263bff 100644 --- a/src/math/ts/innovations.c +++ b/src/math/ts/innovations.c @@ -38,9 +38,7 @@ #include #include #include -#include -#include -#define _(msgid) gettext (msgid) +#include static void get_mean_variance (size_t n_vars, const struct casefile *cf, @@ -48,13 +46,10 @@ get_mean_variance (size_t n_vars, const struct casefile *cf, { struct casereader *r; - struct ccase *c; - struct ccase *c2; + struct ccase c; size_t n; - double *x; double d; - double tmp; - double variance; + const union value *tmp; for (n = 0; n < n_vars; n++) { @@ -67,10 +62,10 @@ get_mean_variance (size_t n_vars, const struct casefile *cf, { for (n = 0; n < n_vars; n++) { - if (!mv_is_value_missing (&v->miss, val)) + tmp = case_data (&c, est[n]->variable->fv); + if (!mv_is_value_missing (&(est[n]->variable->miss), tmp)) { - tmp = case_data (&c, est[n]->variable->fv); - d = (tmp - est[n]->mean) / est[n]->n_obs; + d = (tmp->f - est[n]->mean) / est[n]->n_obs; est[n]->mean += d; est[n]->variance += est[n]->n_obs * est[n]->n_obs * d * d; est[n]->n_obs += 1.0; @@ -182,6 +177,7 @@ struct innovations_estimate ** pspp_innovations (const struct variable **vars, s struct casereader *r; struct ccase *c; size_t i; + size_t j; est = xnmalloc (*n_vars, sizeof *est); for (i = 0; i < *n_vars; i++) @@ -202,8 +198,8 @@ struct innovations_estimate ** pspp_innovations (const struct variable **vars, s else { *n_vars--; - msg (MW, _("Cannot compute autocovariance for a non-numeric variable %s"), - var_to_string (vars[i])); +/* msg (MW, _("Cannot compute autocovariance for a non-numeric variable %s"), */ +/* var_to_string (vars[i])); */ } } diff --git a/src/math/ts/innovations.h b/src/math/ts/innovations.h new file mode 100644 index 00000000..5cc6b16c --- /dev/null +++ b/src/math/ts/innovations.h @@ -0,0 +1,43 @@ +/* + src/math/time-series/arma/innovations.h + + Copyright (C) 2006 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 the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along with + this program; if not, write to the Free Software Foundation, Inc., 51 + Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA. + */ +/* + Find preliminary ARMA coefficients via the innovations algorithm. + Also compute the sample mean and covariance matrix for each series. + + Reference: + + P. J. Brockwell and R. A. Davis. Time Series: Theory and + Methods. Second edition. Springer. New York. 1991. ISBN + 0-387-97429-6. Sections 5.2, 8.3 and 8.4. + */ +#ifndef INNOVATIONS_H +#define INNOVATIONS_H +#include +struct innovations_estimate +{ + struct variable *variable; + double mean; + double variance; + double *cov; + double n_obs; + double max_lag; + coefficient *coeff; +}; +#endif -- 2.30.2