projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
give CTABLES its own freq structure
[pspp]
/
src
/
language
/
stats
/
glm.c
diff --git
a/src/language/stats/glm.c
b/src/language/stats/glm.c
index c8a3dd36e15f714b0f0b76b9d390b88396647d39..2766279f2ed9fbcaad9c80531a7c0752fb63ccde 100644
(file)
--- 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);
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;
{
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);
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;
}
{
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;
}
{
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);
{
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);
lex_get (lexer);
- if (
! lex_force_match (lexer, T_RPAREN))
+ if (! lex_force_match (lexer, T_RPAREN))
{
lex_error (lexer, NULL);
goto error;
{
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);
}
{
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;
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;
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);
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--;
{
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_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);
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;
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++)
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;
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++;
{
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_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);
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;
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;
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;
model_dropped[i] = false;
- if (
cmd->interactions [k] == x)
+ if (cmd->interactions [k] == x)
{
assert (n_dropped_model < covariance_dim (cov));
n_dropped_model++;
{
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)
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);
}
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)
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);
}
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;
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))
{
return false;
if (lex_match (lexer, T_LPAREN))
{
- if (
! parse_nested_variable (lexer, glm))
+ if (! parse_nested_variable (lexer, glm))
return false;
return false;
- if (
! lex_force_match (lexer, T_RPAREN))
+ if (! lex_force_match (lexer, T_RPAREN))
return false;
}
return false;
}
- lex_error (lexer, "Nested variables are not yet implemented");
return false;
- return
tru
e;
+ lex_error (lexer, "Nested variables are not yet implemented");
+ return
fals
e;
}
/* A design term is an interaction OR a nested variable */
}
/* 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 */
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;
}
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;
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 (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);
}
return false;
lex_match (lexer, T_COMMA);
return parse_design_spec (lexer, glm);
}
-