def test_moment_conversion(mom): # this was initially written for an old version of moment_helpers # I'm not sure whether there are not redundant cases after moving functions # test moment -> cumulant assert_equal(mnc2cum(mc2mnc(mom[0])), mom[1]) assert_equal(mnc2cum(mom[0]), mom[2]) if len(mom) <= 4: assert_equal(mc2cum(mom[0]), mom[1]) # test cumulant -> moment assert_equal(cum2mc(mom[1]), mom[0]) assert_equal(mc2mnc(cum2mc(mom[2])), mom[0]) if len(mom) <= 4: assert_equal(cum2mc(mom[1]), mom[0]) # round trip: mnc -> cum -> mc == mnc -> mc, assert_equal(cum2mc(mnc2cum(mom[0])), mnc2mc(mom[0])) # round trip: mc -> mnc -> mc == mc, assert_equal(mc2mnc(mnc2mc(mom[0])), mom[0]) if len(mom[0]) == 4: # round trip: mc -> mvsk -> mc == mc assert_equal(mvsk2mc(mc2mvsk(mom[0])), mom[0])
def examples_normexpand(): skewnorm = SkewNorm_gen() rvs = skewnorm.rvs(5, size=100) normexpan = NormExpan_gen(rvs, mode='sample') smvsk = stats.describe(rvs)[2:] print('sample: mu,sig,sk,kur') print(smvsk) dmvsk = normexpan.stats(moments='mvsk') print('normexpan: mu,sig,sk,kur') print(dmvsk) print('mvsk diff distribution - sample') print(np.array(dmvsk) - np.array(smvsk)) print('normexpan attributes mvsk') print(mc2mvsk(normexpan.cnt)) print(normexpan.mvsk) mnc = mvsk2mnc(dmvsk) mc = mnc2mc(mnc) print('central moments') print(mc) print('non-central moments') print(mnc) pdffn = pdf_moments(mc) print('\npdf approximation from moments') print('pdf at', mc[0] - 1, mc[0] + 1) print(pdffn([mc[0] - 1, mc[0] + 1])) print(normexpan.pdf([mc[0] - 1, mc[0] + 1]))
def examples_normexpand(): skewnorm = SkewNorm_gen() rvs = skewnorm.rvs(5,size=100) normexpan = NormExpan_gen(rvs, mode='sample') smvsk = stats.describe(rvs)[2:] print 'sample: mu,sig,sk,kur' print smvsk dmvsk = normexpan.stats(moments='mvsk') print 'normexpan: mu,sig,sk,kur' print dmvsk print 'mvsk diff distribution - sample' print np.array(dmvsk) - np.array(smvsk) print 'normexpan attributes mvsk' print mc2mvsk(normexpan.cnt) print normexpan.mvsk mnc = mvsk2mnc(dmvsk) mc = mnc2mc(mnc) print 'central moments' print mc print 'non-central moments' print mnc pdffn = pdf_moments(mc) print '\npdf approximation from moments' print 'pdf at', mc[0]-1,mc[0]+1 print pdffn([mc[0]-1,mc[0]+1]) print normexpan.pdf([mc[0]-1,mc[0]+1])
def test_moment_conversion(): #this was initially written for an old version of moment_helpers #I'm not sure whether there are not redundant cases after moving functions ms = [ ([0.0, 1, 0, 3], [0.0, 1.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0]), ([1.0, 1, 0, 3], [1.0, 1.0, 0.0, 0.0], [1.0, 0.0, -1.0, 6.0]), ([0.0, 1, 1, 3], [0.0, 1.0, 1.0, 0.0], [0.0, 1.0, 1.0, 0.0]), ([1.0, 1, 1, 3], [1.0, 1.0, 1.0, 0.0], [1.0, 0.0, 0.0, 2.0]), ([1.0, 1, 1, 4], [1.0, 1.0, 1.0, 1.0], [1.0, 0.0, 0.0, 3.0]), ([1.0, 2, 0, 3], [1.0, 2.0, 0.0, -9.0], [1.0, 1.0, -4.0, 9.0]), ([0.0, 2, 1, 3], [0.0, 2.0, 1.0, -9.0], [0.0, 2.0, 1.0, -9.0]), ([1.0, 0.5, 0, 3], [1.0, 0.5, 0.0, 2.25], [1.0, -0.5, 0.5, 2.25]), #neg.variance if mnc2<mnc1 ([0.0, 0.5, 1, 3], [0.0, 0.5, 1.0, 2.25], [0.0, 0.5, 1.0, 2.25]), ([0.0, 1, 0, 3, 0], [0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0, 0.0]), ([1.0, 1, 0, 3, 1], [1.0, 1.0, 0.0, 0.0, 1.0], [1.0, 0.0, -1.0, 6.0, -20.0]) ] for mom in ms: # test moment -> cumulant assert_equal(mnc2cum(mc2mnc(mom[0])), mom[1]) assert_equal(mnc2cum(mom[0]), mom[2]) if len(mom) <= 4: assert_equal(mc2cum(mom[0]), mom[1]) for mom in ms: # test cumulant -> moment assert_equal(cum2mc(mom[1]), mom[0]) assert_equal(mc2mnc(cum2mc(mom[2])), mom[0]) if len(mom) <= 4: assert_equal(cum2mc(mom[1]), mom[0]) for mom in ms: #round trip: mnc -> cum -> mc == mnc -> mc, assert_equal(cum2mc(mnc2cum(mom[0])), mnc2mc(mom[0])) for mom in ms: #round trip: mc -> mnc -> mc == mc, assert_equal(mc2mnc(mnc2mc(mom[0])), mom[0]) for mom in (m for m in ms if len(m[0]) == 4): #print "testing", mom #round trip: mc -> mvsk -> mc == mc assert_equal(mvsk2mc(mc2mvsk(mom[0])), mom[0])
def test_moment_conversion(): #this was initially written for an old version of moment_helpers #I'm not sure whether there are not redundant cases after moving functions ms = [( [0.0, 1, 0, 3], [0.0, 1.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0] ), ( [1.0, 1, 0, 3], [1.0, 1.0, 0.0, 0.0], [1.0, 0.0, -1.0, 6.0] ), ( [0.0, 1, 1, 3], [0.0, 1.0, 1.0, 0.0], [0.0, 1.0, 1.0, 0.0] ), ( [1.0, 1, 1, 3], [1.0, 1.0, 1.0, 0.0], [1.0, 0.0, 0.0, 2.0] ), ( [1.0, 1, 1, 4], [1.0, 1.0, 1.0, 1.0], [1.0, 0.0, 0.0, 3.0] ), ( [1.0, 2, 0, 3], [1.0, 2.0, 0.0, -9.0], [1.0, 1.0, -4.0, 9.0] ), ( [0.0, 2, 1, 3], [0.0, 2.0, 1.0, -9.0], [0.0, 2.0, 1.0, -9.0] ), ( [1.0, 0.5, 0, 3], [1.0, 0.5, 0.0, 2.25], [1.0, -0.5, 0.5, 2.25] ), #neg.variance if mnc2<mnc1 ( [0.0, 0.5, 1, 3], [0.0, 0.5, 1.0, 2.25], [0.0, 0.5, 1.0, 2.25] ), ( [0.0, 1, 0, 3, 0], [0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0, 0.0] ), ( [1.0, 1, 0, 3, 1], [1.0, 1.0, 0.0, 0.0, 1.0], [1.0, 0.0, -1.0, 6.0, -20.0] )] for mom in ms: # test moment -> cumulant assert_equal(mnc2cum(mc2mnc(mom[0])),mom[1]) assert_equal(mnc2cum(mom[0]),mom[2]) if len(mom) <= 4: assert_equal(mc2cum(mom[0]),mom[1]) for mom in ms: # test cumulant -> moment assert_equal(cum2mc(mom[1]),mom[0]) assert_equal(mc2mnc(cum2mc(mom[2])),mom[0]) if len(mom) <= 4: assert_equal(cum2mc(mom[1]),mom[0]) for mom in ms: #round trip: mnc -> cum -> mc == mnc -> mc, assert_equal(cum2mc(mnc2cum(mom[0])),mnc2mc(mom[0])) for mom in ms: #round trip: mc -> mnc -> mc == mc, assert_equal(mc2mnc(mnc2mc(mom[0])), mom[0]) for mom in (m for m in ms if len(m) == 4): #round trip: mc -> mvsk -> mc == mc assert_equal(mvsk2mc(mc2mvsk(mom[0])), mom[0]) #round trip: mc -> mvsk -> mnc == mc -> mnc assert_equal(mvsk2mnc(mc2mvsk(mom[0])), mc2mnc(mom[0]))