print('f cdf for 100:', stats.f.cdf(100,1,10)) print('sqt stats:', squaretg.stats(10, moments='mvsk')) print('f stats:', stats.f.stats(1,10, moments='mvsk')) #Note the results differ for skew and kurtosis. I think the 3rd and 4th moment # in the scipy.stats.f distribution is incorrect. # I corrected it now in stats.distributions.py in bzr branch v1=1 v2=10 g1 = 2*(v2+2*v1-2.)/(v2-6.)*np.sqrt(2*(v2-4.)/(v1*(v2+v1-2.))) g2 = 3/(2.*v2-16)*(8+g1*g1*(v2-6.)) print('corrected skew, kurtosis of f(1,10) is', g1, g2) print(squarenormalg.rvs()) print(squarenormalg.rvs(size=(2,4))) print('sqt random variables') print(stats.f.rvs(1,10,size=4)) print(squaretg.rvs(10,size=4)) #a large number check: np.random.seed(464239857) rvstsq = squaretg.rvs(10,size=100000) squaretg.moment(4,10) (rvstsq**4).mean() squaretg.moment(3,10) (rvstsq**3).mean() squaretg.stats(10, moments='mvsk') stats.describe(rvstsq) ''' >>> np.random.seed(464239857) >>> rvstsq = squaretg.rvs(10,size=100000) >>> squaretg.moment(4,10)
print('sqt stats:', squaretg.stats(10, moments='mvsk')) print('f stats:', stats.f.stats(1, 10, moments='mvsk')) #Note the results differ for skew and kurtosis. I think the 3rd and 4th moment # in the scipy.stats.f distribution is incorrect. # I corrected it now in stats.distributions.py in bzr branch v1 = 1 v2 = 10 g1 = 2 * (v2 + 2 * v1 - 2.) / (v2 - 6.) * np.sqrt(2 * (v2 - 4.) / (v1 * (v2 + v1 - 2.))) g2 = 3 / (2. * v2 - 16) * (8 + g1 * g1 * (v2 - 6.)) print('corrected skew, kurtosis of f(1,10) is', g1, g2) print(squarenormalg.rvs()) print(squarenormalg.rvs(size=(2, 4))) print('sqt random variables') print(stats.f.rvs(1, 10, size=4)) print(squaretg.rvs(10, size=4)) #a large number check: np.random.seed(464239857) rvstsq = squaretg.rvs(10, size=100000) squaretg.moment(4, 10) (rvstsq**4).mean() squaretg.moment(3, 10) (rvstsq**3).mean() squaretg.stats(10, moments='mvsk') stats.describe(rvstsq) ''' >>> np.random.seed(464239857) >>> rvstsq = squaretg.rvs(10,size=100000) >>> squaretg.moment(4,10) 2734.3750000000009