
Paul A Bristow wrote:
What about the Qs? (complements)
As I mentioned before, these should be member functions, which could be called "density" (also called 'mass')
Or distribution :-)
and "cumulative".
OHOH many books don't mention either of these words!
The whole nomenclature seems a massive muddle, with mathematicians, statistics, and users or all sorts using different terms and everyone thinks they are the 'Standard' :-(
And the highest priority in my book is the END USERS, not the professionals.
The cumulative density function is a strictly increasing function and therefore can be inverted. The inverse function could be called "inverse_cumulative", which is a completely unambiguous name.
But excessively long :-(
True, how about "persentile", or is that to ambiguous?
Finally, you observe that it is often useful to specify the cumulative probability for a given value of the random variable and solve for the parameter (the "degrees of freedom" for a Students T distribution) that determines the distribution. Since each family of distributions depends on a different set of parameters (for example, normal distributions depend on two parameters, the mean and variance), the interface for this is trickier to define.
I can think of two possibilities (I prefer the first):
1) Define ad hoc inverse functions for each specific distribution. So for the Students T distribution, you would define a member function of the form:
double degrees_of_freedom(double cumulative_probability, double random_variable) const;
I don't like 2 either, so I have snipped it ;-)
This seems OK to me.
That could be a static member function, since we're solving for the degrees of freedom parameter. It would also be more natural to me for the cumulative_probability parameter to come last in the list.
I'd be grateful if you could sketch out how you see the whole Student's t class would look (just for double and omit the equations of course). (This will avoid any confusion about what we are talking about).
However:
But I still worried that the whole scheme will lead to much bigger code compared to a set of names of (template) functions (because code that isn't in fact used will be generated). Can anyone advise on this?
For template classes member functions are only instantiated when used, so if you only use one member, then that's the only one instantiated. John.