On 12/09/2010 05:44 PM, Steven D'Aprano wrote:
(1) Multivariate statistics such as covariance have two obvious APIs:

     A pass the X and Y values as two separate iterable arguments, e.g.:
       cov([1, 2, 3], [4, 5, 6])

     B pass the X and Y values as a single iterable of tuples, e.g.:
       cov([(1, 4), (2, 5), (3, 6)]

I currently support both APIs. Do people prefer one, or the other, or
both? If there is a clear preference for one over the other, I may drop
support for the other.

I'm partial to the "B" form (iterable of 2-tuples) -- it indicates that the two data-sets (x_n and y_n) should be of the same length and paired. The "A" form leaves this less obvious that len(param1) should equal len(param2).

I haven't poked at your code sufficiently to determine whether all the functions within can handle streamed data, or whether they keep the entire dataset internally, but handing off an iterable-of-pairs tends to be a little more straight-forward:

  cov(humongous_dataset_iter)

or

  cov(izip(humongous_dataset_iter1, humongous_dataset_iter2))

The "A" form makes doing this a little less obvious than the "B" form.

(2) Statistics text books often give formulae in terms of sums and
differences such as

Sxx = n*Σ(x**2) - (Σx)**2

There are quite a few of these: I count at least six common ones,

When you take this count, is it across multiple text-books, or are they common in just a small sampling of texts? (I confess it's been a decade and a half since I last suffered a stats class)

all closely related and confusing named:

Sxx, Syy, Sxy, SSx, SSy, SPxy

(the x and y should all be subscript).

Are they useful, or would they just add unnecessary complexity?

I think it depends on your audience: amateur statisticians or pros? I suspect that pros wouldn't blink at the distinctions while weekenders like myself would get a little bleary-eyed without at least a module docstring to clearly spell out the distinctions and the forumlae used for determining them.

Just my from-the-hip thoughts for whatever little they may be worth.

-tkc



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to