02110-1301, USA. */
#include <config.h>
+
#include <gsl/gsl_cdf.h>
-#include <libpspp/message.h>
+#include <math.h>
#include <stdio.h>
#include <stdlib.h>
-#include <math.h>
-#include <libpspp/alloc.h>
+
#include <data/case.h>
#include <data/casefile.h>
+#include <data/dictionary.h>
+#include <data/procedure.h>
+#include <data/value-labels.h>
+#include <data/variable.h>
#include <language/command.h>
+#include <language/dictionary/split-file.h>
+#include <language/lexer/lexer.h>
+#include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
#include <libpspp/compiler.h>
-#include <data/dictionary.h>
-#include <libpspp/message.h>
-#include <math/group-proc.h>
#include <libpspp/hash.h>
-#include <math/levene.h>
-#include <language/lexer/lexer.h>
#include <libpspp/magic.h>
+#include <libpspp/message.h>
+#include <libpspp/message.h>
#include <libpspp/misc.h>
-#include "size_max.h"
-#include <output/manager.h>
#include <libpspp/str.h>
+#include <math/group-proc.h>
+#include <math/levene.h>
+#include <output/manager.h>
#include <output/table.h>
-#include <data/value-labels.h>
-#include <data/variable.h>
-#include <procedure.h>
+
+#include "size_max.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
"T-TEST" (tts_):
+groups=custom;
testval=double;
- variables=varlist("PV_NO_SCRATCH | PV_NUMERIC");
- pairs=custom;
- +missing=miss:!analysis/listwise,
- incl:include/!exclude;
- format=fmt:!labels/nolabels;
+ +variables=varlist("PV_NO_SCRATCH | PV_NUMERIC");
+ +pairs=custom;
+ missing=miss:!analysis/listwise,
+ incl:include/!exclude;
+ +format=fmt:!labels/nolabels;
criteria=:cin(d:criteria,"%s > 0. && %s < 1.").
*/
/* (declarations) */
};
-static int common_calc (const struct ccase *, void *);
+static int common_calc (const struct dictionary *dict,
+ const struct ccase *, void *);
static void common_precalc (struct cmd_t_test *);
static void common_postcalc (struct cmd_t_test *);
-static int one_sample_calc (const struct ccase *, void *);
+static int one_sample_calc (const struct dictionary *dict, const struct ccase *, void *);
static void one_sample_precalc (struct cmd_t_test *);
static void one_sample_postcalc (struct cmd_t_test *);
-static int paired_calc (const struct ccase *, void *);
+static int paired_calc (const struct dictionary *dict, const struct ccase *, void *);
static void paired_precalc (struct cmd_t_test *);
static void paired_postcalc (struct cmd_t_test *);
static void group_precalc (struct cmd_t_test *);
-static int group_calc (const struct ccase *, struct cmd_t_test *);
+static int group_calc (const struct dictionary *dict, const struct ccase *, struct cmd_t_test *);
static void group_postcalc (struct cmd_t_test *);
-static bool calculate(const struct casefile *cf, void *_mode);
+static bool calculate(const struct ccase *first,
+ const struct casefile *cf, void *_mode,
+ const struct dataset *ds);
static int mode;
static struct cmd_t_test cmd;
-static int bad_weight_warn;
+static bool bad_weight_warn = false;
static int compare_group_binary(const struct group_statistics *a,
int
-cmd_t_test(void)
+cmd_t_test (struct dataset *ds)
{
bool ok;
- if ( !parse_t_test(&cmd) )
+ if ( !parse_t_test (ds, &cmd, NULL) )
return CMD_FAILURE;
if (! cmd.sbc_criteria)
else
value_is_missing = mv_is_value_missing;
- bad_weight_warn = 1;
+ bad_weight_warn = true;
- ok = multipass_procedure_with_splits (calculate, &cmd);
+ ok = multipass_procedure_with_splits (ds, calculate, &cmd);
n_pairs=0;
free(pairs);
}
static int
-tts_custom_groups (struct cmd_t_test *cmd UNUSED)
+tts_custom_groups (struct dataset *ds, struct cmd_t_test *cmd UNUSED, void *aux UNUSED)
{
int n_group_values=0;
lex_match('=');
- indep_var = parse_variable ();
+ indep_var = parse_variable (dataset_dict (ds));
if (!indep_var)
{
lex_error ("expecting variable name in GROUPS subcommand");
static int
-tts_custom_pairs (struct cmd_t_test *cmd UNUSED)
+tts_custom_pairs (struct dataset *ds, struct cmd_t_test *cmd UNUSED, void *aux UNUSED)
{
struct variable **vars;
size_t n_vars;
lex_match('=');
n_vars=0;
- if (!parse_variables (default_dict, &vars, &n_vars,
+ if (!parse_variables (dataset_dict (ds), &vars, &n_vars,
PV_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH))
{
free (vars);
if (lex_match (T_WITH))
{
n_before_WITH = n_vars;
- if (!parse_variables (default_dict, &vars, &n_vars,
+ if (!parse_variables (dataset_dict (ds), &vars, &n_vars,
PV_DUPLICATE | PV_APPEND
| PV_NUMERIC | PV_NO_SCRATCH))
{
{
if (!lex_force_string ())
return 0;
- strncpy (v->s, ds_c_str (&tokstr), ds_length (&tokstr));
+ strncpy (v->s, ds_cstr (&tokstr), ds_length (&tokstr));
}
lex_get ();
ssbox_paired_init(ssb,cmd);
break;
default:
- assert(0);
+ NOT_REACHED ();
}
}
this->populate = ssbox_one_sample_populate;
ssbox_base_init(this, hsize,vsize);
- tab_title (this->t, 0, _("One-Sample Statistics"));
+ tab_title (this->t, _("One-Sample Statistics"));
tab_vline(this->t, TAL_2, 1,0,vsize - 1);
tab_text (this->t, 1, 0, TAB_CENTER | TAT_TITLE, _("N"));
tab_text (this->t, 2, 0, TAB_CENTER | TAT_TITLE, _("Mean"));
this->populate = ssbox_independent_samples_populate;
ssbox_base_init(this, hsize,vsize);
- tab_title (this->t, 0, _("Group Statistics"));
- tab_vline(this->t,0,1,0,vsize - 1);
+ tab_vline (this->t, TAL_GAP, 1, 0,vsize - 1);
+ tab_title (this->t, _("Group Statistics"));
tab_text (this->t, 1, 0, TAB_CENTER | TAT_TITLE, indep_var->name);
tab_text (this->t, 2, 0, TAB_CENTER | TAT_TITLE, _("N"));
tab_text (this->t, 3, 0, TAB_CENTER | TAT_TITLE, _("Mean"));
this->populate = ssbox_paired_populate;
ssbox_base_init(this, hsize,vsize);
- tab_title (this->t, 0, _("Paired Sample Statistics"));
- tab_vline(this->t,TAL_0,1,0,vsize-1);
+ tab_title (this->t, _("Paired Sample Statistics"));
+ tab_vline(this->t,TAL_GAP,1,0,vsize-1);
tab_vline(this->t,TAL_2,2,0,vsize-1);
tab_text (this->t, 2, 0, TAB_CENTER | TAT_TITLE, _("Mean"));
tab_text (this->t, 3, 0, TAB_CENTER | TAT_TITLE, _("N"));
trbox_paired_init(trb,cmd);
break;
default:
- assert(0);
+ NOT_REACHED ();
}
}
self->populate = trbox_independent_samples_populate;
trbox_base_init(self,cmd->n_variables*2,hsize);
- tab_title(self->t,0,_("Independent Samples Test"));
+ tab_title(self->t,_("Independent Samples Test"));
tab_hline(self->t,TAL_1,2,hsize-1,1);
tab_vline(self->t,TAL_2,2,0,vsize-1);
tab_vline(self->t,TAL_1,4,0,vsize-1);
self->populate = trbox_paired_populate;
trbox_base_init(self,n_pairs,hsize);
- tab_title (self->t, 0, _("Paired Samples Test"));
+ tab_title (self->t, _("Paired Samples Test"));
tab_hline(self->t,TAL_1,2,6,1);
tab_vline(self->t,TAL_2,2,0,vsize - 1);
tab_joint_text(self->t,2,0,6,0,TAB_CENTER,_("Paired Differences"));
tab_box(self->t,-1,-1,-1,TAL_1, 2,1,6,vsize-1);
tab_box(self->t,-1,-1,-1,TAL_1, 6,0,hsize-1,vsize-1);
tab_hline(self->t,TAL_1,5,6, 2);
- tab_vline(self->t,TAL_0,6,0,1);
+ tab_vline(self->t,TAL_GAP,6,0,1);
tab_joint_text(self->t, 5, 1, 6, 1, TAB_CENTER | TAT_PRINTF,
_("%g%% Confidence Interval of the Difference"),
self->populate = trbox_one_sample_populate;
trbox_base_init(self, cmd->n_variables,hsize);
- tab_title (self->t, 0, _("One-Sample Test"));
+ tab_title (self->t, _("One-Sample Test"));
tab_hline(self->t, TAL_1, 1, hsize - 1, 1);
tab_vline(self->t, TAL_2, 1, 0, vsize - 1);
_("%g%% Confidence Interval of the Difference"),
cmd->criteria*100.0);
- tab_vline(self->t,TAL_0,6,1,1);
+ tab_vline(self->t,TAL_GAP,6,1,1);
tab_hline(self->t,TAL_1,5,6,2);
tab_text (self->t, 1, 2, TAB_CENTER | TAT_TITLE, _("t"));
tab_text (self->t, 2, 2, TAB_CENTER | TAT_TITLE, _("df"));
tab_hline(table, TAL_2, 0, cols - 1, 1);
tab_vline(table, TAL_2, 2, 0, rows - 1);
tab_dim(table, tab_natural_dimensions);
- tab_title(table, 0, _("Paired Samples Correlations"));
+ tab_title(table, _("Paired Samples Correlations"));
/* column headings */
tab_text(table, 2,0, TAB_CENTER | TAT_TITLE, _("N"));
/* Per case calculations common to all variants of the T test */
static int
-common_calc (const struct ccase *c, void *_cmd)
+common_calc (const struct dictionary *dict, const struct ccase *c, void *_cmd)
{
int i;
struct cmd_t_test *cmd = (struct cmd_t_test *)_cmd;
- double weight = dict_get_case_weight(default_dict,c,&bad_weight_warn);
+ double weight = dict_get_case_weight (dict, c, &bad_weight_warn);
/* Skip the entire case if /MISSING=LISTWISE is set */
/* Per case calculations for one sample t test */
static int
-one_sample_calc (const struct ccase *c, void *cmd_)
+one_sample_calc (const struct dictionary *dict,
+ const struct ccase *c, void *cmd_)
{
int i;
struct cmd_t_test *cmd = (struct cmd_t_test *)cmd_;
- double weight = dict_get_case_weight(default_dict,c,&bad_weight_warn);
+ double weight = dict_get_case_weight (dict, c, &bad_weight_warn);
/* Skip the entire case if /MISSING=LISTWISE is set */
if ( cmd->miss == TTS_LISTWISE )
static int
-paired_calc (const struct ccase *c, void *cmd_)
+paired_calc (const struct dictionary *dict, const struct ccase *c, void *cmd_)
{
int i;
struct cmd_t_test *cmd = (struct cmd_t_test *) cmd_;
- double weight = dict_get_case_weight(default_dict,c,&bad_weight_warn);
+ double weight = dict_get_case_weight (dict, c, &bad_weight_warn);
/* Skip the entire case if /MISSING=LISTWISE is set ,
AND one member of a pair is missing */
}
static int
-group_calc (const struct ccase *c, struct cmd_t_test *cmd)
+group_calc (const struct dictionary *dict,
+ const struct ccase *c, struct cmd_t_test *cmd)
{
int i;
const union value *gv = case_data (c, indep_var->fv);
- const double weight = dict_get_case_weight(default_dict,c,&bad_weight_warn);
+ const double weight =
+ dict_get_case_weight (dict, c, &bad_weight_warn);
if ( value_is_missing(&indep_var->miss, gv) )
{
static bool
-calculate(const struct casefile *cf, void *cmd_)
+calculate(const struct ccase *first, const struct casefile *cf,
+ void *cmd_, const struct dataset *ds)
{
+ const struct dictionary *dict = dataset_dict (ds);
struct ssbox stat_summary_box;
struct trbox test_results_box;
struct cmd_t_test *cmd = (struct cmd_t_test *) cmd_;
+ output_split_file_values (ds, first);
common_precalc(cmd);
for(r = casefile_get_reader (cf);
casereader_read (r, &c) ;
case_destroy (&c))
{
- common_calc(&c,cmd);
+ common_calc(dict, &c,cmd);
}
casereader_destroy (r);
common_postcalc(cmd);
casereader_read (r, &c) ;
case_destroy (&c))
{
- one_sample_calc(&c,cmd);
+ one_sample_calc (dict, &c,cmd);
}
casereader_destroy (r);
one_sample_postcalc(cmd);
casereader_read (r, &c) ;
case_destroy (&c))
{
- paired_calc(&c,cmd);
+ paired_calc (dict, &c,cmd);
}
casereader_destroy (r);
- paired_postcalc(cmd);
+ paired_postcalc (cmd);
break;
case T_IND_SAMPLES:
casereader_read (r, &c) ;
case_destroy (&c))
{
- group_calc(&c,cmd);
+ group_calc (dict, &c, cmd);
}
casereader_destroy (r);
group_postcalc(cmd);
- levene(cf, indep_var, cmd->n_variables, cmd->v_variables,
+ levene (dict, cf, indep_var, cmd->n_variables, cmd->v_variables,
(cmd->miss == TTS_LISTWISE)?LEV_LISTWISE:LEV_ANALYSIS ,
value_is_missing);
break;
flag = which_group(g,p);
}
else
- assert(0);
+ NOT_REACHED ();
return flag;
}