X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fglm.c;h=5df61c3e0e7b2721f010a1b597e56441a452e0bf;hb=6e5736d55e61f5dca727428213a835998eeacead;hp=92e35ccd27e1f5f4c1f8082d63d402e90f05ca4d;hpb=2414a9e37882fd23d9e50f916bb9e6a7cc2f6bad;p=pspp-builds.git diff --git a/src/language/stats/glm.c b/src/language/stats/glm.c index 92e35ccd..5df61c3e 100644 --- a/src/language/stats/glm.c +++ b/src/language/stats/glm.c @@ -716,6 +716,8 @@ output_glm (const struct glm_spec *cmd, const struct glm_workspace *ws) const struct fmt_spec *wfmt = cmd->wv ? var_get_print_format (cmd->wv) : &F_8_0; + double intercept_ssq; + double ssq_effects; double n_total, mean; double df_corr = 1.0; double mse = 0; @@ -767,9 +769,9 @@ output_glm (const struct glm_spec *cmd, const struct glm_workspace *ws) mse = gsl_vector_get (ws->ssq, 0) / (n_total - df_corr); - const double intercept_ssq = pow2 (mean * n_total) / n_total; + intercept_ssq = pow2 (mean * n_total) / n_total; - double ssq_effects = 0.0; + ssq_effects = 0.0; if (cmd->intercept) { const double df = 1.0; @@ -790,6 +792,8 @@ output_glm (const struct glm_spec *cmd, const struct glm_workspace *ws) double df = categoricals_df (ws->cats, f); double ssq = gsl_vector_get (ws->ssq, f + 1); + double F; + ssq_effects += ssq; if (! cmd->intercept) @@ -798,7 +802,7 @@ output_glm (const struct glm_spec *cmd, const struct glm_workspace *ws) ssq += intercept_ssq; } - const double F = ssq / df / mse; + F = ssq / df / mse; interaction_to_string (cmd->interactions[f], &str); tab_text (t, 0, r, TAB_LEFT | TAT_TITLE, ds_cstr (&str)); ds_destroy (&str); @@ -817,12 +821,14 @@ output_glm (const struct glm_spec *cmd, const struct glm_workspace *ws) /* Model / Corrected Model */ double df = df_corr; double ssq = ws->total_ssq - gsl_vector_get (ws->ssq, 0); + double F; + if ( cmd->intercept ) df --; else ssq += intercept_ssq; - const double F = ssq / df / mse; + F = ssq / df / mse; tab_double (t, 1, heading_rows, 0, ssq, NULL); tab_double (t, 2, heading_rows, 0, df, wfmt); tab_double (t, 3, heading_rows, 0, ssq / df, NULL);