initial version of glm
[pspp-builds.git] / src / language / stats / ChangeLog
1 2007-07-10  Jason Stover  <jhs@math.gcsu.edu>
2
3         * glm.q: Initial version of the GLM procedure.
4
5 2007-06-06  Ben Pfaff  <blp@gnu.org>
6
7         Adapt case sources, sinks, and clients of procedure code to the
8         new infrastructure.
9         
10         * aggregate.c: Simplify greatly since everything is more uniform
11         now.
12
13         * autorecode.c: Adapt to new procedure code.
14         * binomial.c: Ditto.
15         * chisquare.c: Ditto.
16         * crosstabs.q: Ditto.
17         * descriptives.c: Ditto.
18         * examine.q: Ditto.
19         * npar-summary.c: Ditto.
20         * frequencies.q: Ditto.
21         * npar.q: Ditto.
22         * oneway.q: Ditto.
23         * regression.q: Ditto.
24         * sort-cases.c: Ditto.
25         * t-test.c: Ditto.
26
27         * sort-criteria.c: Rewrite to output a struct case_ordering.
28         
29         * flip.c: Rewrite to be a casereader.
30
31         * rank.q: Simplify greatly since casereaders are much more
32         flexible than what we had before.
33         
34 2007-05-15  Jason Stover  <jhs@math.gcsu.edu>
35
36         * regression.q (run_regression): Tell the user when the data
37         contain no valid cases.
38
39 2007-05-08  Jason Stover  <jhs@math.gcsu.edu>
40
41         * regression.q: Partial fix of bug which caused a crash if
42         dependent variable and independent variable were the same.
43
44 2007-04-16 John Darrington <john@darrington.wattle.id.au>
45
46         * t-test.q: Changed the output width of reported counts and 
47         degrees of freedom, to avoid truncating these values.  Thanks
48         to Seth Woolley for reporting this problem.  A proper fix involves
49         re-thinking the output driver.
50
51 2007-04-12  Jason Stover  <jhs@math.gcsu.edu>
52
53         * regression.q (run_regression): Added if (n_data >0) to fix bug
54         19581.
55
56 2007-03-29  Jason Stover  <jhs@math.gcsu.edu>
57
58         * regression.q (prepare_data): New function.
59
60         * regression.q (compute_moments): New function.
61
62 2007-03-18  Ben Pfaff  <blp@gnu.org>
63
64         * crosstabs.q (static var write): Rename write_style to avoid
65         conflict with POSIX function of same name.
66
67 2007-03-16  Jason Stover  <jhs@math.gcsu.edu>
68
69         * regression.q (run_regression): Added support for moments.
70
71 Sat Feb 17 08:16:00 2007  Ben Pfaff  <blp@gnu.org>
72
73         * flip.c (flip_sink_create): Improve error message when temporary
74         file cannot be created.
75
76 Tue Feb  6 19:58:03 2007  Ben Pfaff  <blp@gnu.org>
77
78         * flip.c (flip_file): Give better error message on end-of-file.
79
80 2007-02-04  Jason Stover  <jhs@math.gcsu.edu>
81
82         * regression.q: Fixed p-value computation in the test for
83         individual regression coefficients.
84
85 Mon Jan 15 11:03:20 2007  Ben Pfaff  <blp@gnu.org>
86
87         Fix bugs found by valgrind when --enable-debug is used with the
88         new case code.  These bugs are hidden when the data set is small
89         enough to find in memory; if a bigger data set that would overflow
90         to disk were used, then data corruption would occur.
91
92         * chisquare.c (create_freq_hash): Pass free_freq_mutable_hash to
93         hsh_create as free function.  Make copy of data put into hash.
94
95         * oneway.q (free_value): New function.
96         (run_oneway): Use free_value as arg to hsh_create.  Make copy of
97         data put into hash.
98
99         * rank.q (rank_cases): Don't access data in case after we've given
100         away the case.
101
102 Tue Jan  9 19:16:11 2007  Ben Pfaff  <blp@gnu.org>
103
104         Fix bug #18739.
105         
106         * aggregate.c (parse_aggregate_functions) Initialize
107         function_name.
108
109 Fri Dec 22 14:04:09 2006  Ben Pfaff  <blp@gnu.org>
110
111         Simplify missing value handling.
112         
113         * aggregate.c (struct agr_var): Remove `bool include_missing', add
114         `enum mv_class exclude'.  Remove `int missing', add `bool
115         saw_missing'.  Update users.
116
117         * descriptives.c (struct dsc_trns): Removed `int
118         include_user_missing', add `enum mv_class exclude'.  Update users.
119         (struct dsc_proc): Ditto.
120
121         * examine.q: (static var value_is_missing): Rename
122         `exclude_values', change type to `enum mv_class'.  Update users.
123
124         * rank.q: Ditto.
125
126 Fri Dec 22 19:22:18 WST 2006 John Darrington <john@darrington.wattle.id.au>
127
128         * frequencies.q : Fixed bug #17420, where the table bounds were overun
129         when /FORMAT=nolabels was given.
130
131 Wed Dec 20 18:45:31 WST 2006 John Darrington <john@darrington.wattle.id.au>
132
133         * binomial.c binomial.h : New files.  Thanks to Jason Stover 
134           for assistance with these.
135
136         * chisquare.c chisquare.h freq.c freq.h npar-summary.c npar-summary.h 
137           npar.h npar.q: New files.  Implementing NPAR TESTS.
138
139         * frequencies.q  : Moved  structure definitions into freq.[ch]
140
141 Sat Dec 16 22:26:44 2006  Ben Pfaff  <blp@gnu.org>
142
143         Make it possible to pull cases from the active file with a
144         function call, instead of requiring indirection through a callback
145         function.
146
147         * aggregate.c (cmd_aggregate): Take advantage of new procedure
148         interface.
149         (agr_to_active_file): Removed.
150         (presorted_agr_to_sysfile): Removed.
151
152         * autorecode.c (cmd_autorecode): Take advantage of new procedure
153         interface.
154         (autorecode_proc_func): Removed.
155
156         * flip.c (struct flip_pgm): New members to allow conformance with
157         new case_source_class interface.
158         (cmd_flip): Adapt to new case_source_class interface.
159         (flip_source_read): Ditto.
160         (flip_source_destroy): Ditto.
161
162 Sat Dec 16 12:54:27 2006  Ben Pfaff  <blp@gnu.org>
163
164         * rank.q (rank_custom_variables): Allow grouping variables to be
165         strings.  Fixes bug #18533.  Thanks to John Darrington for review.
166
167 Sat Dec  9 18:47:51 2006  Ben Pfaff  <blp@gnu.org>
168
169         * regression.q (is_depvar): Compare variable pointers instead of
170         variable names.
171
172 Thu Dec  7 15:26:25 WST 2006 John Darrington <john@darrington.wattle.id.au>
173
174         * examine.q: Allocated the categorical values for the dependent and 
175         independent variables, on the heap.  Hence they can be of any width.
176
177 Wed Dec  6 21:14:26 2006  Ben Pfaff  <blp@gnu.org>
178
179         * regression.q (reg_inserted): Compare variable pointers instead
180         of variable indexes.
181
182 Mon Dec  4 22:33:46 2006  Ben Pfaff  <blp@gnu.org>
183
184         * crosstabs.q (insert_summary): Use var_to_string for labeling.
185         (output_pivot_table) Ditto.
186         (submit) Ditto.
187
188         * frequencies.q (setup_z_trns): Ditto.
189         (dump_full) Ditto.
190         (dump_condensed) Ditto.
191         (dump_statistics) Ditto.
192         
193
194 Sun Nov  5 08:31:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
195
196         * t-test.q, oneway.q: Changed to use the new casefilter structure.
197
198 Sat Oct 14 16:52:28 2006  Ben Pfaff  <blp@gnu.org>
199
200         * rank.q: (rank_sorted_casefile) Add some missing case_destroy()
201         calls to fix a memory leak.
202
203 Sun Oct  8 09:45:40 WST 2006 John Darrington <john@darrington.wattle.id.au>
204
205         * rank.q: Plugged a small memory leak which occurred under error
206         conditions.
207         
208 Sat Oct  7 11:06:01 WST 2006 John Darrington <john@darrington.wattle.id.au>
209
210         * rank.q: Implemented most of the RANK command.
211
212 2006-07-14  Jason Stover  <jhs@math.gcsu.edu>
213
214         * regression.q (run_regression): New function to move knowledge of
215         pspp_linreg_cache out of math/coefficient.[ch].
216
217 Sat Jul  1 17:41:46 2006  Ben Pfaff  <blp@gnu.org>
218
219         Fix bug #11612, "q2c documentation does not agree with code".
220         
221         * examine.q: Audit use of q2c "+" prefixes that indicate that a
222         command may appear multiple times.
223
224         * frequencies.q: Ditto.
225
226         * oneway.q: Ditto.
227
228         * regression.q: Ditto.
229
230         * t-test.q: Ditto.
231
232 Fri Jun 23 14:18:22 2006  Ben Pfaff  <blp@gnu.org>
233
234         Support long string variables on FREQUENCIES, as
235         an extension when in enhanced algorithms mode.  For Greg Hunt
236         <greg@firmansyah.com>.
237         
238         * frequencies.q: (struct freq) Change `v' member from union value
239         to union value *.  Update all references.
240         (struct var_freqs) Add width, print members to represent effective
241         variable width and display format.
242         (calc) Copy entire long string value into the hash table.
243         (frq_custom_variables) Set new width, print members.
244         (hash_value_alpha) Get width from var_freqs.
245         (compare_value_alpha_a) Ditto.
246         (compare_freq_alpha_a) Ditto.
247         (compare_freq_alpha_d) Ditto.
248         (dump_full) Get display format from var_freqs.
249         (dump_condensed) Ditto.
250
251 Mon Jun 19 22:07:13 2006  Ben Pfaff  <blp@gnu.org>
252
253         * frequencies.q: (dump_full) Only put the first MAX_SHORT_STRING
254         bytes of string variables into the output cells, seeing as we only
255         copy that many.
256         (dump_condensed) Ditto.
257
258 Mon Jun 19 21:52:05 2006  Ben Pfaff  <blp@gnu.org>
259
260         Fixes a bug reported by Greg Hunt <greg@firmansyah.com>.
261         
262         * frequencies.q: (hsh_hash_bytes) We only copy the first
263         MAX_SHORT_STRING bytes of string variables, so we must only
264         compare that many bytes, even if the string variable is longer.
265         (compare_value_alpha_a) Ditto.
266         (compare_freq_alpha_a) Ditto.
267         (compare_freq_alpha_d) Ditto.
268
269 2006-05-11  Jason Stover  <jhs@math.gcsu.edu>
270
271         * regression.q: Adjusted code to account for cache->coeff being a
272         pspp_linreg_coeff **.
273
274 Sun May  7 18:31:25 2006  Ben Pfaff  <blp@gnu.org>
275
276         Fix memory leak.
277         
278         * aggregate.c (cmd_aggregate): Free default_dict before replacing
279         it.
280
281 Sun May  7 17:09:19 2006  Ben Pfaff  <blp@gnu.org>
282
283         * flip.c (flip_file): Check return value of pool_fclose().
284
285 Sat May  6 16:00:13 2006  Ben Pfaff  <blp@gnu.org>
286
287         Get rid of `char *c' member in union value, for cleanliness.
288         
289         * aggregate.c: (union agr_argument) New union.
290         (struct agr_var) Change element type of arg[] from union value to
291         union agr_argument.
292         (parse_aggregate_functions) Change local variable types likewise.
293
294         * autorecode.c: (union arc_value) New union.
295         (struct arc_item) Change "from" from union value to union
296         arc_value.
297         (recode) Change local variable from union value to union
298         arc_value.
299         (autorecode_trns_proc) Ditto.
300         (compare_alpha_value) Ditto.
301         (hash_alpha_value) Ditto.
302         (compare_numeric_value) Ditto.
303         (hash_numeric_value) Ditto.
304         (autorecode_proc_func) Ditto.
305
306 Sat May  6 10:43:33 2006  Ben Pfaff  <blp@gnu.org>
307
308         Continue reforming procedure execution.  In this phase, get rid of
309         the output code for SPLIT FILE groups in procedure.c, which really
310         shouldn't be doing any output.  Move it into the individual
311         procedures instead.  This also adds some flexibility.
312
313         * crosstabs.q (precalc): Call output_split_file_values().
314
315         * descriptives.c (calc_descriptives): Ditto.
316
317         * examine.q (run_examine): Ditto.
318         
319         * frequencies.q (precalc): Ditto.
320
321         * oneway.q (run_oneway): Ditto.
322
323         * regression.q (run_regression): Ditto.
324
325         * t-test.q (calculate): Ditto.
326
327 Wed May  3 23:05:31 2006  Ben Pfaff  <blp@gnu.org>
328
329         Continue reforming procedure execution.  In this phase, get rid of
330         many global variables, consolidating procedure execution in
331         procedure.c.  Encapsulate transformations in new "struct
332         trns_chain".  Also, change implementation of N OF CASES, FILTER,
333         and PROCESS IF from special cases to transformations.
334          
335         * aggregate.c (cmd_aggregate) Use discard_variables().
336         
337 2006-04-28  Jason Stover  <jhs@math.gcsu.edu>
338
339         * regression.q (regression_trns_resid_proc): Pass only the
340         variables used in the model to (*model->residual)().
341
342         * regression.q (regression_trns_pred_proc): Pass only the
343         variables used in the model to (*model->pred)().
344
345 2006-04-26  Jason Stover  <jhs@math.gcsu.edu>
346
347         * regression.q: Added support for multiple transformations.
348         
349         * regression.q (regression_trns_resid_proc): New function.
350
351         * regression.q (regression_trns_pred_proc): New function.
352
353         * regression.q (subcommand_save): Added support for saving
354         predicted values.
355
356         * regression.q (regression_trns_free): New function. 
357
358         * regression.q (reg_get_name): New function.
359
360         * regression.q (reg_save_var): New function.
361
362 Tue Apr 25 13:18:56 2006  Ben Pfaff  <blp@gnu.org>
363
364         * rank.q (parse_rank_function): Use SE instead of ME for parse
365         errors.
366
367 Tue Apr 25 13:16:28 2006  Ben Pfaff  <blp@gnu.org>
368
369         * flip.c (flip_sink_write): Use snprintf() to simplify a bit of
370         code.
371
372 2006-04-21  Jason Stover  <jhs@math.gcsu.edu>
373
374         * regression.q (try_name): New function. (Partly copied from
375         try_name in descriptives.c.)
376
377         * regression.q (subcommand_save): Choose residual variable names
378         correctly. 
379
380 2006-04-20  Jason Stover  <jhs@math.gcsu.edu>
381
382         * regression.q (cmd_regression): Moved call to subcommand_save()
383         outside multipass_procedure_with_splits().
384         
385         * regression.q (regression_trns_proc): Fixed value counter n_vals
386         before calling *model->residual().
387
388 2006-04-19  Jason Stover  <jhs@math.gcsu.edu>
389
390         * regression.q (regression_trns_proc): Fixed the look-up of the
391         number of variables.
392
393 2006-04-18  Jason Stover  <jhs@math.gcsu.edu>
394
395         * regression.q (regression_trns_proc): Look up the residual
396         variable in the linear regression cache.
397
398         * regression.q (subcommand_save): Set the residual variable in the
399         linear regression cache.
400
401 2006-04-17  Jason Stover  <jason@wonko.gcsu.edu>
402
403         * regression.q (regression_trns_proc): Accept case_idx as an int
404         to match the definition of trns_proc_func.
405
406 2006-04-17  Jason Stover  <jhs@math.gcsu.edu>
407
408         * regression.q (regression_trns_proc): New function.
409
410         * regression.q (subcommand_save): Create variable residuals and
411         add a transformation to assign values to them. Also free the
412         linreg_cache if the SAVE command was not called. Removed the
413         casereading loop. Placed actual computation of residuals in
414         regression_trns_proc.
415
416         * regression.q (run_regression): Moved call to free
417         pspp_linreg_cache to subcommand_save.
418
419 Sat Apr 15 18:01:03 2006  Ben Pfaff  <blp@gnu.org>
420
421         * examine.q (output_examine): Add casts to fix warnings.
422
423 2006-04-07  Jason Stover  <jhs@math.gcsu.edu>
424
425         * regression.q (subcommand_save): New function.
426
427 2006-04-04  Jason Stover  <jhs@math.gcsu.edu>
428
429         * regression.q: New function reg_has_categorical () to tell
430         whether a pspp_linreg_struct was made with any variables of type
431         ALPHA.
432
433         * regression.q: (subcommand_export): Call
434         reg_print_categorical_encoding() only if the model uses any
435         categorical variables.
436
437 Mon Mar 27 16:00:42 2006  Ben Pfaff  <blp@gnu.org>
438
439         * crosstabs.q: (output_pivot_table) Drop spurious space from
440         message.
441
442 2006-03-15  Jason Stover  <jhs@math.gcsu.edu>
443
444         * regression.q: Added custom syntax parser for VARIABLES subcommand
445
446         * regression.q: Moved most instructions for run_regression ()
447         inside the loop over dependent variables.
448
449 Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
450         
451         * Moved files from src directory