X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fglm.c;h=2766279f2ed9fbcaad9c80531a7c0752fb63ccde;hb=3f3b74c2dd0e8468e11b0bb22366f6081ba0d459;hp=c8a3dd36e15f714b0f0b76b9d390b88396647d39;hpb=5cab4cf3322f29c0ed7134d23740e07382914f20;p=pspp diff --git a/src/language/stats/glm.c b/src/language/stats/glm.c index c8a3dd36e1..2766279f2e 100644 --- a/src/language/stats/glm.c +++ b/src/language/stats/glm.c @@ -234,7 +234,7 @@ cmd_glm (struct lexer *lexer, struct dataset *ds) glm.alpha = lex_number (lexer); lex_get (lexer); - if ( ! lex_force_match (lexer, T_RPAREN)) + if (! lex_force_match (lexer, T_RPAREN)) { lex_error (lexer, NULL); goto error; @@ -250,34 +250,28 @@ cmd_glm (struct lexer *lexer, struct dataset *ds) else if (lex_match_id (lexer, "METHOD")) { lex_match (lexer, T_EQUALS); - if ( !lex_force_match_id (lexer, "SSTYPE")) + if (!lex_force_match_id (lexer, "SSTYPE")) { lex_error (lexer, NULL); goto error; } - if ( ! lex_force_match (lexer, T_LPAREN)) + if (! lex_force_match (lexer, T_LPAREN)) { lex_error (lexer, NULL); goto error; } - if ( ! lex_force_int (lexer)) + if (!lex_force_int_range (lexer, "SSTYPE", 1, 3)) { lex_error (lexer, NULL); goto error; } glm.ss_type = lex_integer (lexer); - if (1 > glm.ss_type || 3 < glm.ss_type ) - { - msg (ME, _("Only types 1, 2 & 3 sums of squares are currently implemented")); - goto error; - } - lex_get (lexer); - if ( ! lex_force_match (lexer, T_RPAREN)) + if (! lex_force_match (lexer, T_RPAREN)) { lex_error (lexer, NULL); goto error; @@ -307,7 +301,7 @@ cmd_glm (struct lexer *lexer, struct dataset *ds) } } - if ( ! design ) + if (! design) { design_full (&glm); } @@ -392,8 +386,8 @@ ssq_type1 (struct covariance *cov, gsl_vector *ssq, const struct glm_spec *cmd) const gsl_matrix *cm = covariance_calculate_unnormalized (cov); size_t i; size_t k; - bool *model_dropped = xcalloc (covariance_dim (cov), sizeof (*model_dropped)); - bool *submodel_dropped = xcalloc (covariance_dim (cov), sizeof (*submodel_dropped)); + bool *model_dropped = XCALLOC (covariance_dim (cov), bool); + bool *submodel_dropped = XCALLOC (covariance_dim (cov), bool); const struct categoricals *cats = covariance_get_categoricals (cov); size_t n_dropped_model = 0; @@ -423,7 +417,7 @@ ssq_type1 (struct covariance *cov, gsl_vector *ssq, const struct glm_spec *cmd) const struct interaction * x = categoricals_get_interaction_by_subscript (cats, i - cmd->n_dep_vars); - if ( x == cmd->interactions [k]) + if (x == cmd->interactions [k]) { model_dropped[i] = false; n_dropped_model--; @@ -441,7 +435,7 @@ ssq_type1 (struct covariance *cov, gsl_vector *ssq, const struct glm_spec *cmd) gsl_vector_set (ssq, k + 1, gsl_matrix_get (submodel_cov, 0, 0) - gsl_matrix_get (model_cov, 0, 0) - ); + ); gsl_matrix_free (model_cov); gsl_matrix_free (submodel_cov); @@ -461,8 +455,8 @@ ssq_type2 (struct covariance *cov, gsl_vector *ssq, const struct glm_spec *cmd) const gsl_matrix *cm = covariance_calculate_unnormalized (cov); size_t i; size_t k; - bool *model_dropped = xcalloc (covariance_dim (cov), sizeof (*model_dropped)); - bool *submodel_dropped = xcalloc (covariance_dim (cov), sizeof (*submodel_dropped)); + bool *model_dropped = XCALLOC (covariance_dim (cov), bool); + bool *submodel_dropped = XCALLOC (covariance_dim (cov), bool); const struct categoricals *cats = covariance_get_categoricals (cov); for (k = 0; k < cmd->n_interactions; k++) @@ -484,7 +478,7 @@ ssq_type2 (struct covariance *cov, gsl_vector *ssq, const struct glm_spec *cmd) n_dropped_submodel++; submodel_dropped[i] = true; - if ( cmd->interactions [k]->n_vars < x->n_vars) + if (cmd->interactions [k]->n_vars < x->n_vars) { assert (n_dropped_model < covariance_dim (cov)); n_dropped_model++; @@ -504,7 +498,7 @@ ssq_type2 (struct covariance *cov, gsl_vector *ssq, const struct glm_spec *cmd) gsl_vector_set (ssq, k + 1, gsl_matrix_get (submodel_cov, 0, 0) - gsl_matrix_get (model_cov, 0, 0) - ); + ); gsl_matrix_free (model_cov); gsl_matrix_free (submodel_cov); @@ -524,8 +518,8 @@ ssq_type3 (struct covariance *cov, gsl_vector *ssq, const struct glm_spec *cmd) const gsl_matrix *cm = covariance_calculate_unnormalized (cov); size_t i; size_t k; - bool *model_dropped = xcalloc (covariance_dim (cov), sizeof (*model_dropped)); - bool *submodel_dropped = xcalloc (covariance_dim (cov), sizeof (*submodel_dropped)); + bool *model_dropped = XCALLOC (covariance_dim (cov), bool); + bool *submodel_dropped = XCALLOC (covariance_dim (cov), bool); const struct categoricals *cats = covariance_get_categoricals (cov); double ss0; @@ -548,7 +542,7 @@ ssq_type3 (struct covariance *cov, gsl_vector *ssq, const struct glm_spec *cmd) model_dropped[i] = false; - if ( cmd->interactions [k] == x) + if (cmd->interactions [k] == x) { assert (n_dropped_model < covariance_dim (cov)); n_dropped_model++; @@ -624,8 +618,7 @@ run_glm (struct glm_spec *cmd, struct casereader *input, double weight = dict_get_case_weight (dict, c, &warn_bad_weight); for (v = 0; v < cmd->n_dep_vars; ++v) - moments_pass_one (ws.totals, case_data (c, cmd->dep_vars[v])->f, - weight); + moments_pass_one (ws.totals, case_num (c, cmd->dep_vars[v]), weight); covariance_accumulate_pass1 (cov, c); } @@ -642,8 +635,7 @@ run_glm (struct glm_spec *cmd, struct casereader *input, double weight = dict_get_case_weight (dict, c, &warn_bad_weight); for (v = 0; v < cmd->n_dep_vars; ++v) - moments_pass_two (ws.totals, case_data (c, cmd->dep_vars[v])->f, - weight); + moments_pass_two (ws.totals, case_num (c, cmd->dep_vars[v]), weight); covariance_accumulate_pass2 (cov, c); } @@ -848,20 +840,20 @@ static bool parse_nested_variable (struct lexer *lexer, struct glm_spec *glm) { const struct variable *v = NULL; - if ( ! lex_match_variable (lexer, glm->dict, &v)) + if (! lex_match_variable (lexer, glm->dict, &v)) return false; if (lex_match (lexer, T_LPAREN)) { - if ( ! parse_nested_variable (lexer, glm)) + if (! parse_nested_variable (lexer, glm)) return false; - if ( ! lex_force_match (lexer, T_RPAREN)) + if (! lex_force_match (lexer, T_RPAREN)) return false; } - lex_error (lexer, "Nested variables are not yet implemented"); return false; - return true; + lex_error (lexer, "Nested variables are not yet implemented"); + return false; } /* A design term is an interaction OR a nested variable */ @@ -872,12 +864,12 @@ parse_design_term (struct lexer *lexer, struct glm_spec *glm) if (parse_design_interaction (lexer, glm->dict, &iact)) { /* Interaction parsing successful. Add to list of interactions */ - glm->interactions = xrealloc (glm->interactions, sizeof *glm->interactions * ++glm->n_interactions); + glm->interactions = xrealloc (glm->interactions, sizeof (*glm->interactions) * ++glm->n_interactions); glm->interactions[glm->n_interactions - 1] = iact; return true; } - if ( parse_nested_variable (lexer, glm)) + if (parse_nested_variable (lexer, glm)) return true; return false; @@ -895,11 +887,10 @@ parse_design_spec (struct lexer *lexer, struct glm_spec *glm) if (lex_token (lexer) == T_ENDCMD || lex_token (lexer) == T_SLASH) return true; - if ( ! parse_design_term (lexer, glm)) + if (! parse_design_term (lexer, glm)) return false; lex_match (lexer, T_COMMA); return parse_design_spec (lexer, glm); } -