[SciPy-dev] Problem with F distribution, or with me?
josef.pktd at gmail.com
josef.pktd at gmail.com
Tue Aug 12 15:43:54 EDT 2008
The problem is that the F distribution in distributions.c is missing
a multiplication by the ratio of the degrees of freedom, see the correct
rk_noncentral_f
*dfden / dfnum
http://projects.scipy.org/scipy/numpy/browser/trunk/numpy/random/mtrand/distributions.c
226 double rk_f(rk_state *state, double dfnum, double dfden)
227 {
228 return rk_chisquare(state, dfnum) / rk_chisquare(state, dfden);
229 }
230
231 double rk_noncentral_f(rk_state *state, double dfnum, double dfden,
double nonc)
232 {
233 return ((rk_noncentral_chisquare(state, dfnum, nonc)*dfden) /
234 (rk_chisquare(state, dfden)*dfnum));
change line 228 to
return (rk_chisquare(state, dfnum)*dfden) / (rk_chisquare(state, dfden)
*dfnum);
correct random variables require normalization:
>>> np.sum(1/2.0*40.0*np.random.f(2, 40, 1000000)> 2.44037)
99891
>>> np.sum(1/1.0*48.0*np.random.f(1, 48, 1000000)> 7.19)
10118
>>> np.sum(1/1.0*48.0*np.random.f(1, 48, 1000000)> 7.19)
10174
>>> np.sum(1/1.0*48.0*np.random.f(1, 48, 1000000)> 7.19)
10043
Josef
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-dev/attachments/20080812/4298cde4/attachment.html>
More information about the SciPy-Dev
mailing list