FREQUENCIES: Use the smallest mode if there are multiple.
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 14 Aug 2022 23:42:56 +0000 (16:42 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 14 Aug 2022 23:42:56 +0000 (16:42 -0700)
This matches the documentation.

src/language/stats/frequencies.c

index 018cc6237e0e1c1f845c11c17c59a18df3bde015..d20d8392c176d4827a2f4f0e28d3f4e53b73bf0f 100644 (file)
@@ -1502,21 +1502,14 @@ calc_stats (const struct frq_proc *frq, const struct var_freqs *vf,
   int most_often = -1;
   double X_mode = SYSMIS;
 
-  /* Calculate the mode. */
+  /* Calculate the mode.  If there is more than one mode, we take the
+     smallest. */
   for (f = ft->valid; f < ft->missing; f++)
-    {
-      if (most_often < f->count)
-        {
-          most_often = f->count;
-          X_mode = f->values[0].f;
-        }
-      else if (most_often == f->count)
-        {
-          /* A duplicate mode is undefined.
-             FIXME: keep track of *all* the modes. */
-          X_mode = SYSMIS;
-        }
-    }
+    if (most_often < f->count)
+      {
+        most_often = f->count;
+        X_mode = f->values[0].f;
+      }
 
   /* Calculate moments. */
   m = moments_create (MOMENT_KURTOSIS);