Last modified on Mon Aug 26 22:55:30 1991 by kalsow modified on Thu Nov 2 18:11:42 1989 by muller
modified on Thu Aug 4 08:14:28 1988 by stolfi modified on Fri Jun 10 14:23:17 PDT 1988 by glassman
INTERFACETools for elementary statistics of a sequence of real quantities A tiny set of tools for collecting elementary statistics (count, maximum, minimum, mean, and variance) of a sequence of real quantities. Index: statistics, collecting; printing, statisticsStat ;
IMPORT Wr, Thread; TYPE T = RECORD (* A statistics accumulator *) num : LONGREAL; mean : LONGREAL; variance : LONGREAL; maximum : REAL; minimum : REAL; END; (* Typical usage: | VAR st: Stat.T; | BEGIN | Stat.Init(st); | LOOP | weight := ... | Stat.Accum(st, weight); | ... | END; | Wr.PrintF(stderr, "Weight statistics: "); | Stat.Print(stderr, st); | Wr.PrintF(stderr, "\n"); | END; The mean is arithmetic mean. The variance is the sum of of (x - mean)**2, divided by num (NOT num-1). Thus, the standard deviation is sqrt(variance*num/(num-1)). *)******************************************************** GATHERING: ********************************************************
PROCEDURE Init (VAR s: T);
Resets the statistics accumulator s
PROCEDURE Accum (VAR s: T; x: REAL);
Accumulates another observation x into the statistics accumulator s
PROCEDURE Combine (READONLY r, s: T): T;
Combines statistics of two disjoint samples into a single sample
******************************************************** EXTRACTING: ********************************************************
PROCEDURE Num (READONLY s: T): REAL;
The number of observations in s. Same as FLOAT(s.num).
PROCEDURE Max (READONLY s: T): REAL;
The maximum observed value. Same as s.maximum.
PROCEDURE Min (READONLY s: T): REAL;
The minimum observed value. Same as s.minimum.
PROCEDURE Mean (READONLY s: T): REAL;
The arithmetic mean. Same as FLOAT(s.mean).
PROCEDURE Var (READONLY s: T): REAL;
The variance, i.e. sum((x[i]-mean)^2)/num. Same as FLOAT(s.variance).
PROCEDURE SDev (READONLY s: T): REAL;
The standard deviation, sqrt(sum((x[i]-mean)^2)/(num-1)).
Returns 0.0 if num < 2
PROCEDURE RMS (READONLY s: T): REAL;
The root mean square value, sqrt(sum(x[i]^2)/num)
******************************************************** PRINTING: ********************************************************
PROCEDURE Print (wr: Wr.T; READONLY s: T) RAISES {Wr.Failure, Thread.Alerted};
Prints the text string"num: %d min: %g max: %g mean: %g dev: %g"on the given writer. If num=0, all other entries are omitted. Thedev
entry is the standard deviation, and is omitted if num<=1.
END Stat.