>From 707489b0a1efa6ca496dcdc27d3db11d696ca862 Mon Sep 17 00:00:00 2001 From: Jason H Stover Date: Thu, 23 Jun 2011 17:23:57 -0400 Subject: [PATCH] Added support for type 3 sums of squares in GLM --- src/language/stats/glm.c | 15 +++++++-------- 1 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/language/stats/glm.c b/src/language/stats/glm.c index fbc8075..b8aa71c 100644 --- a/src/language/stats/glm.c +++ b/src/language/stats/glm.c @@ -223,13 +223,12 @@ get_ssq (struct covariance * cov, gsl_vector * ssq, struct glm_spec * cmd) vars = xcalloc (covariance_dim (cov), sizeof (*vars)); covariance_get_var_indices (cov, vars); - for (k = 1; k <= cmd->n_factor_vars; k++) + for (k = 0; k < cmd->n_factor_vars; k++) { - dropped[0] = k; - n_dropped = 1; - for (i = (k + 1); i < covariance_dim (cov); i++) + n_dropped = 0; + for (i = 1; i < covariance_dim (cov); i++) { - if (vars [i] == vars [k]) + if (vars [i] == cmd->factor_vars [k]) { dropped [n_dropped++] = i; } @@ -255,7 +254,7 @@ get_ssq (struct covariance * cov, gsl_vector * ssq, struct glm_spec * cmd) } } reg_sweep (small_cov, 0); - gsl_vector_set (ssq, dropped[0], + gsl_vector_set (ssq, k + 1, gsl_matrix_get (small_cov, 0, 0) - gsl_vector_get (ssq, 0)); gsl_matrix_free (small_cov); @@ -342,10 +341,10 @@ run_glm (struct glm_spec *cmd, struct casereader *input, const struct dataset *d /* Store the overall SSE. */ - cmd->ssq = gsl_vector_alloc (cm->size1 - 1); + cmd->ssq = gsl_vector_alloc (cm->size1); gsl_vector_set (cmd->ssq, 0, gsl_matrix_get (cm, 0, 0)); get_ssq (cov, cmd->ssq, cmd); - printf ("%f\t%f\t%f\n\n", gsl_vector_get (cmd->ssq, 0), gsl_vector_get (cmd->ssq, 1), gsl_vector_get (cmd->ssq,2)); + gsl_vector_free (cmd->ssq); dump_matrix (cm); -- 1.5.6.5