X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fglm.c;h=fd5870c137d95f1d72aee239136ff497206abf76;hb=ce4f35416abc94c3c4d39312da42b9fff0788073;hp=2536c5f52de069c9e326f3891e18600d61394c1e;hpb=be3a7bd753e0582a6b7bbdc032bc0891ab2900d6;p=pspp-builds.git diff --git a/src/language/stats/glm.c b/src/language/stats/glm.c index 2536c5f5..fd5870c1 100644 --- a/src/language/stats/glm.c +++ b/src/language/stats/glm.c @@ -68,6 +68,8 @@ struct glm_spec bool intercept; double alpha; + + bool dump_coding; }; struct glm_workspace @@ -143,6 +145,7 @@ cmd_glm (struct lexer *lexer, struct dataset *ds) glm.intercept = true; glm.wv = dict_get_weight (glm.dict); glm.alpha = 0.05; + glm.dump_coding = false; if (!parse_variables_const (lexer, glm.dict, &glm.dep_vars, &glm.n_dep_vars, @@ -284,6 +287,13 @@ cmd_glm (struct lexer *lexer, struct dataset *ds) if (glm.n_interactions > 0) design = true; } + else if (lex_match_id (lexer, "SHOWCODES")) + /* Undocumented debug option */ + { + lex_match (lexer, T_EQUALS); + + glm.dump_coding = true; + } else { lex_error (lexer, NULL); @@ -478,7 +488,12 @@ run_glm (struct glm_spec *cmd, struct casereader *input, } casereader_destroy (reader); - for (reader = input; + if (cmd->dump_coding) + reader = casereader_clone (input); + else + reader = input; + + for (; (c = casereader_read (reader)) != NULL; case_unref (c)) { double weight = dict_get_case_weight (dict, c, &warn_bad_weight); @@ -491,6 +506,21 @@ run_glm (struct glm_spec *cmd, struct casereader *input, } casereader_destroy (reader); + + if (cmd->dump_coding) + { + struct tab_table *t = + covariance_dump_enc_header (cov, + 1 + casereader_count_cases (input)); + for (reader = input; + (c = casereader_read (reader)) != NULL; case_unref (c)) + { + covariance_dump_enc (cov, c, t); + } + casereader_destroy (reader); + tab_submit (t); + } + { gsl_matrix *cm = covariance_calculate_unnormalized (cov);