In [1]:
from scipy.stats import gamma,rv_continuous,norm
from scipy.special import gamma as gm
from scipy.special import kv
from scipy.integrate import quad
import matplotlib.pyplot as plt
import math
import numpy as np

In [2]:
class gen_gamma(rv_continuous):
    def _pdf(self, x, v, k, b):
        return abs(v)*x**(k*v-1)*np.exp(-(x**v)/(b**abs(v)))/(b**(k*abs(v))*gm(k))
    def _argcheck(self, v, k,b):
        return k>0 and b>0

In [3]:
class GVG:
    def cdf(self,x,a,v,k,b):
        def integrand(z,x,a,v,k,b):
            gg = gen_gamma(a=0.)
            return norm.cdf((x-a*z)/math.sqrt(z))*gg.pdf(z,v,k,b)
        return quad(integrand,0.0001,np.inf,args=(x,a,v,k,b))[0]
    def pdf(self,x,a,v,k,b):
        return (self.cdf(x,a,v,k,b)-self.cdf(x-0.001,a,v,k,b))/0.001

In [102]:
class gvg(rv_continuous):
    def _cdf(self,x,a,v,k,b):
        def integrand(z,x,a,v,k,b):
            gg = gen_gamma(a=0.)
            return norm.cdf((x-a*z)/math.sqrt(z))*gg.pdf(z,v,k,b)
        return quad(integrand,0.0001,np.inf,args=(x,a,v,k,b))[0]
    def _argcheck(self,a, v, k,b):
        return k>0 and b>0

In [4]:
def gvg_rand(a,v, k, b,size=1000):
    GG = gen_gamma(a=0.)
    rand_gg=GG.rvs(v, k, b, size=size)
    return norm.rvs(size=size) * np.sqrt(rand_gg) + a*rand_gg

In [5]:
#a- масштаб
plt.hist(gvg_rand(2,0.8,3,1,1000),40,normed=True)
plt.show()



In [6]:
def grid_likehood(sample,u,p,a):
    summ=0
    for x in sample:
        for i in range(0,len(p)):
            summ += p[i]/math.sqrt(u[i]) * norm.pdf((x-a*u[i])/math.sqrt(u[i]))
    return summ

In [7]:
class Mixture():
    def __init__(self,p,a,u):
        self.p=p
        self.a=a
        self.u=u
    def cdf(self,x):
        return (self.p*norm.cdf((x-self.a*self.u)/np.sqrt(self.u))).sum()
    def pdf(self,x):
        return (self.cdf(x)-self.cdf(x-0.001))/0.001

In [8]:
def move_grid(grid1,p1):
    class piecewise(rv_continuous):
        def _pdf(self, x):
            grid=grid1
            p=p1
            try:
                res=np.zeros(x.shape[0])
            except:
                res=np.zeros(1)
                x=[x]
            for i,num in enumerate(x):
                if (num<=grid[1]):
                    z = np.poly1d(np.polyfit([grid[0],grid[1]], [p[0],p[1]], 1))
                    res[i]= max(0,z(num))
                elif (num>grid[-2]):
                    z = np.poly1d(np.polyfit([grid[-1],grid[-2]], [p[-1],p[-2]], 1))
                    res[i]= max(0,z(num))
                else: 
                    idx=grid.index(min([ i for i in grid if i < num], key=lambda k:abs(k-num)))
                    z = np.poly1d(np.polyfit([grid[idx],grid[idx+1]],[p[idx],p[idx+1]], 1))
                    res[i]= z(num)
            return res
        
    piece = piecewise()
    n=len(grid1)+1
    quant = [i/n for i in range(n) if i >0]
    u = piece.ppf(quant)
    p = piece.pdf(u)
    return u,p
    

def fit_mixture(sample,u,eps=0.05,verbose=1,irreg_grid=False):
    p = np.full(len(u), 1/len(u))
    mean = np.mean(sample)
    a = mean/(u*p).sum()
    f = np.zeros((len(u),len(sample)))
    g = np.zeros((len(u),len(sample)))
    new_likehood = grid_likehood(sample,u,p,a)
    iteration = 0
    while True:
        for i in range(0,len(u)):
            for j in range(0,len(sample)):
                f[i,j]= 1/math.sqrt(u[i]) * norm.pdf((sample[j]-a*u[i])/math.sqrt(u[i]))
                 
        for i in range(0,len(u)):
            for j in range(0,len(sample)):
                g[i,j] = p[i]*f[i,j]/ (p*f[:,j]).sum()
        
        p = g.sum(axis=1)/len(sample)
        a = mean/(u*p).sum()
        prev_likehood = new_likehood
        new_likehood = grid_likehood(sample,u,p,a)
        iteration += 1
        if (verbose): print('Iter: %d  likehood: %f' %(iteration,new_likehood))
        if (abs(new_likehood-prev_likehood)<eps): break
        
        if (irreg_grid):
            u,p = move_grid(u,p)
            a = mean/(u*p).sum()
        print(p)
    return p,a

In [9]:
class piecewise(rv_continuous):
    def _cdf(self, x):
        grid=[  0.01  ,   2.5075,   5.005 ,   7.5025,  10.    ]
        p=[ 0.25941888,  0.64792493,  0.02372754,  0.00882218,  0.06010648]
        bins=list(np.array(grid)-(grid[1]-grid[0])/2) + [grid[-1]+(grid[1]-grid[0])/2] 
        square = np.sum(np.array(p)*(grid[1]-grid[0]))
        p=p/square
        try:
            res=np.zeros(x.shape[0])
        except:
            res=np.zeros(1)
            x=[x]
        for i,num in enumerate(x):
            
            #closest point
            try:
                idx=bins.index(min([i for i in bins if i>num], key=lambda k:abs(k-num)))
            except:
                res[i]= 1
                continue
                
            if (idx==0):
                res[i]= 0
                continue
            res[i] = (np.array(p)[:idx-1] * (grid[1]-grid[0])).sum() + (num - bins[idx-1]) * p[idx-1]                      
        return res

piece = piecewise()
#n=len(grid)+1
#quant = [i/n for i in range(n) if i >0]
#u = piece.ppf(quant)
#p = piece.pdf(u)

In [ ]:
print([  0.01  ,   2.5075,   5.005 ,   7.5025,  10.    ])
print(list(np.array(grid)-(grid[1]-grid[0])/2) + [grid[-1]+(grid[1]-grid[0])/2])

In [10]:
def split_hist(x,p,k):
    c = np.cumsum(p*(x[1:]-x[:-1]))
    res=[]
    for i in range(k-1):
        excess = c-(i+1)/k
        ix = np.where(excess>0)[0].min()
        res.append(x[ix+1]-excess[ix]/p[ix])
    return res

grid=[  0.01  ,   2.5075,   5.005 ,   7.5025,  10.    ]
p=[ 0.25941888,  0.64792493,  0.02372754,  0.00882218,  0.06010648]
bins=list(np.array(grid)-(grid[1]-grid[0])/2) + [grid[-1]+(grid[1]-grid[0])/2] 
square = np.sum(np.array(p)*(grid[1]-grid[0]))
p=p/square

split_hist(np.array(bins),np.array(p),5)


Out[10]:
[0.68670741079061026,
 1.8006358588910907,
 2.571558510370175,
 3.3424811618492591]

In [45]:
sample = gvg_rand(2,0.8,3,1,1000)
grid = np.linspace(0.01,80,20)

In [46]:
plt.hist(sample,50,normed=True)

plt.show()



In [47]:
p,a = fit_mixture(sample,grid,0.1)


Iter: 1  likehood: 44.462380
[ 0.00258908  0.04352996  0.05230836  0.05699681  0.05933873  0.06027163
  0.0602976   0.0597082   0.05869313  0.05738666  0.05588898  0.05427722
  0.05261182  0.05094065  0.04930192  0.0477269   0.04624512  0.04489959
  0.04379174  0.0431959 ]
Iter: 2  likehood: 45.128333
[ 0.0003566   0.03530992  0.05042052  0.05967778  0.06470178  0.06689321
  0.06716436  0.06611291  0.06416144  0.06162416  0.05873931  0.05568794
  0.0526063   0.04959527  0.04672793  0.04405719  0.04162756  0.03950513
  0.03785961  0.0371711 ]
Iter: 3  likehood: 45.689255
[  5.69976491e-05   2.89440314e-02   4.86425137e-02   6.21905147e-02
   6.99701977e-02   7.34618145e-02   7.39102005e-02   7.22426186e-02
   6.91660771e-02   6.52249945e-02   6.08332866e-02   5.62976167e-02
   5.18372186e-02   4.76016329e-02   4.36867913e-02   4.01506837e-02
   3.70342918e-02   3.44059549e-02   3.24738909e-02   3.18686722e-02]
Iter: 4  likehood: 46.226682
[  9.52703139e-06   2.40123987e-02   4.71165957e-02   6.47443756e-02
   7.53354324e-02   8.01293652e-02   8.06424267e-02   7.81678009e-02
   7.37582573e-02   6.82427599e-02   6.22459003e-02   5.62142747e-02
   5.04474766e-02   4.51299186e-02   4.03608552e-02   3.61825028e-02
   3.26125737e-02   2.97026814e-02   2.76752699e-02   2.72696074e-02]
Iter: 5  likehood: 46.749826
[  1.63593449e-06   2.01573585e-02   4.58531997e-02   6.74014348e-02
   8.08409371e-02   8.69003818e-02   8.73258219e-02   8.38277197e-02
   7.78750921e-02   7.06366659e-02   6.29763256e-02   5.54843203e-02
   4.85268395e-02   4.23003483e-02   3.68825061e-02   3.22772797e-02
   2.84609984e-02   2.54536177e-02   2.34743787e-02   2.33431381e-02]
Iter: 6  likehood: 47.258021
[  2.87408513e-07   1.71190070e-02   4.48501547e-02   7.02029100e-02
   8.65055253e-02   9.37496991e-02   9.38944383e-02   8.91364502e-02
   8.14390846e-02   7.23629131e-02   6.30290941e-02   5.41620383e-02
   4.61692557e-02   3.92290966e-02   3.33700927e-02   2.85368411e-02
   2.46501543e-02   2.16888713e-02   1.98588382e-02   2.00452481e-02]
Iter: 7  likehood: 47.748790
[  5.15830669e-08   1.47076191e-02   4.41045390e-02   7.31844978e-02
   9.23391231e-02   1.00638806e-01   1.00269415e-01   9.40023541e-02
   8.43780785e-02   7.33929462e-02   6.24285742e-02   5.23191953e-02
   4.34778847e-02   3.60301390e-02   2.99284855e-02   2.50411212e-02
   2.12248351e-02   1.84138565e-02   1.67971558e-02   1.73213220e-02]
Iter: 8  likehood: 48.219534
[  9.44956449e-09   1.27823115e-02   4.36133774e-02   7.63780819e-02
   9.83448106e-02   1.07519571e-01   1.06365545e-01   9.83371704e-02
   8.66349223e-02   7.37211141e-02   6.12227550e-02   5.00446020e-02
   4.05615877e-02   3.28106719e-02   2.66454322e-02   2.18468025e-02
   1.82053682e-02   1.56127998e-02   1.42431799e-02   1.51098872e-02]
Iter: 9  likehood: 48.668117
[  1.76569397e-09   1.12368475e-02   4.33731206e-02   7.98111256e-02
   1.04518467e-01   1.14336109e-01   1.12096389e-01   1.02063283e-01
   8.81742173e-02   7.33682461e-02   5.94824389e-02   4.74395734e-02
   3.75286364e-02   2.96653835e-02   2.35881583e-02   1.89870169e-02
   1.55901825e-02   1.32531990e-02   1.21410610e-02   1.33465437e-02]
Iter: 10  likehood: 49.093126
[  3.36303530e-10   9.99015340e-03   4.33792785e-02   8.35057555e-02
   1.10848126e-01   1.21026672e-01   1.17379276e-01   1.05119901e-01
   8.89865745e-02   7.23817512e-02   5.72970038e-02   4.46110538e-02
   3.44797190e-02   2.66715318e-02   2.08016839e-02   1.64729240e-02
   1.33598152e-02   1.12909983e-02   1.04302464e-02   1.19675351e-02]
Iter: 11  likehood: 49.493941
[  6.52461534e-11   8.97980805e-03   4.36263418e-02   8.74780264e-02
   1.17313608e-01   1.27525879e-01   1.22140055e-01   1.07467671e-01
   8.90900053e-02   7.08324543e-02   5.47677113e-02   4.16639072e-02
   3.15017986e-02   2.38859914e-02   1.83093911e-02   1.42971025e-02
   1.14818994e-02   9.67586765e-03   9.04994714e-03   1.09125348e-02]
Iter: 12  likehood: 49.870688
[  1.28840289e-11   8.15743969e-03   4.41079269e-02   9.17375169e-02
   1.23886627e-01   1.33767259e-01   1.26317183e-01   1.09091220e-01
   8.85283748e-02   6.88088438e-02   5.19998687e-02   3.86938512e-02
   2.86639546e-02   2.13447522e-02   1.61156785e-02   1.24381550e-02
   9.91637939e-03   8.35592075e-03   7.94262814e-03   1.01264210e-02]
Iter: 13  likehood: 50.224094
[  2.58737059e-12   7.48538442e-03   4.48170500e-02   9.62872841e-02
   1.30531435e-01   1.39685922e-01   1.29864789e-01   1.09999445e-01
   8.73673398e-02   6.64098318e-02   4.90952414e-02   3.57821773e-02
   2.60157177e-02   1.90646864e-02   1.42100331e-02   1.08656897e-02
   8.62022042e-03   7.28139182e-03   7.05631570e-03   9.56004556e-03]
Iter: 14  likehood: 50.555314
[  5.27947963e-13   6.93420790e-03   4.57464543e-02   1.01124138e-01
   1.37205935e-01   1.45221179e-01   1.32754467e-01   1.10223706e-01
   8.56885738e-02   6.37372598e-02   4.61458530e-02   3.29928335e-02
   2.35877604e-02   1.70469132e-02   1.25716448e-02   9.54490305e-03
   7.55111283e-03   6.40707788e-03   6.34577601e-03   9.17020541e-03]
Iter: 15  likehood: 50.865762
[  1.09358805e-13   6.48083808e-03   4.68889340e-02   1.06239169e-01
   1.43863173e-01   1.50318869e-01   1.34975742e-01   1.09814354e-01
   8.35832440e-02   6.08892179e-02   4.32298223e-02   3.03718370e-02
   2.13943377e-02   1.52808993e-02   1.11737793e-02   8.44025337e-03
   6.66998149e-03   5.69362330e-03   5.77279441e-03   8.91913013e-03]
Iter: 16  likehood: 51.156962
[  2.29748061e-14   6.10714307e-03   4.82376274e-02   1.11618462e-01
   1.50453061e-01   1.54933253e-01   1.36535310e-01   1.08836208e-01
   8.11456362e-02   5.79548751e-02   4.04093556e-02   2.79485418e-02
   1.94366824e-02   1.37485215e-02   9.98738408e-03   7.51802627e-03
   5.94237688e-03   5.10788793e-03   5.30585154e-03   8.77379749e-03]
Iter: 17  likehood: 51.430436
[  4.89104600e-15   5.79884059e-03   4.97862642e-02   1.17243909e-01
   1.56924176e-01   1.59028340e-01   1.37455261e-01   1.07363599e-01
   7.84676108e-02   5.50111062e-02   3.77306117e-02   2.57380871e-02
   1.77066184e-02   1.24275624e-02   8.98371297e-03   6.74785033e-03
   5.33897785e-03   4.62269323e-03   4.91946673e-03   8.70531263e-03]
Iter: 18  likehood: 51.687630
[  1.05423891e-15   5.54465739e-03   5.15293628e-02   1.23094078e-01
   1.63225518e-01   1.62578625e-01   1.37770601e-01   1.05475530e-01
   7.56342937e-02   5.21208511e-02   3.52249338e-02   2.37443605e-02
   1.61898631e-02   1.12943897e-02   8.13599154e-03   6.10336697e-03
   4.83548314e-03   4.21621189e-03   4.59340770e-03   8.68847381e-03]
Iter: 19  likehood: 51.929867
[  2.29892273e-16   5.33567897e-03   5.34623738e-02   1.29145055e-01
   1.69308100e-01   1.65569229e-01   1.37526366e-01   1.03251378e-01
   7.27211420e-02   4.93329168e-02   3.29109002e-02   2.19629621e-02
   1.48687323e-02   1.03257972e-02   7.42028994e-03   5.56230572e-03
   4.41214296e-03   3.87120151e-03   4.31188786e-03   8.70154059e-03]
Iter: 20  likehood: 52.158335
[  5.06811777e-17   5.16484416e-03   5.55817676e-02   1.35371221e-01
   1.75126289e-01   1.67995540e-01   1.36774634e-01   1.00767389e-01
   6.97923219e-02   4.66828340e-02   3.07967194e-02   2.03838443e-02
   1.37241622e-02   9.50012044e-03   6.81581993e-03   5.10619600e-03
   4.05312329e-03   3.57421395e-03   4.06281272e-03   8.72614649e-03]
Iter: 21  likehood: 52.374081
[  1.12881905e-17   5.02655086e-03   5.78850650e-02   1.41745923e-01
   1.80638867e-01   1.69862434e-01   1.35571689e-01   9.80940932e-02
   6.69002015e-02   4.41943749e-02   2.88826188e-02   1.89934714e-02
   1.27370972e-02   8.79779915e-03   6.30486144e-03   4.71989645e-03
   3.74583330e-03   3.31485703e-03   3.83710039e-03   8.74726604e-03]
Iter: 22  likehood: 52.578030
[  2.53865828e-18   4.91634713e-03   6.03708084e-02   1.48242001e-01
   1.85809772e-01   1.71183225e-01   1.33975508e-01   9.52946153e-02
   6.40857001e-02   4.18813975e-02   2.71630111e-02   1.77764725e-02
   1.18893578e-02   8.20155854e-03   5.87248360e-03   4.39106596e-03
   3.48029346e-03   3.08514650e-03   3.62808359e-03   8.75315361e-03]
Iter: 23  likehood: 52.770998
[  5.76182552e-19   4.83068847e-03   6.30384808e-02   1.54832188e-01
   1.90608559e-01   1.71978433e-01   1.32043670e-01   9.24237983e-02
   6.13792240e-02   3.97497588e-02   2.56283286e-02   1.67168310e-02
   1.11641177e-02   7.69635391e-03   5.50617655e-03   4.10965229e-03
   3.24858373e-03   2.87896225e-03   3.43099386e-03   8.73520090e-03]
Iter: 24  likehood: 52.953717
[  1.31913578e-19   4.76674682e-03   6.58883783e-02   1.61489369e-01
   1.95010607e-01   1.72274501e-01   1.29831740e-01   8.95279807e-02
   5.88019481e-02   3.77991257e-02   2.42664949e-02   1.57986898e-02
   1.05461106e-02   7.26918569e-03   5.19546755e-03   3.86743754e-03
   3.04438550e-03   2.69160808e-03   3.24252645e-03   8.68769677e-03]
Iter: 25  likehood: 53.126852
[  3.04516570e-20   4.72226047e-03   6.89214481e-02   1.68186739e-01
   1.98997112e-01   1.72102527e-01   1.27392102e-01   8.66452720e-02
   5.63672462e-02   3.60245818e-02   2.30640522e-02   1.50068573e-02
   1.00216601e-02   6.90885683e-03   4.93156250e-03   3.65765572e-03
   2.86261578e-03   2.51946636e-03   3.06048233e-03   8.60750243e-03]
Iter: 26  likehood: 53.291021
[  7.08534119e-21   4.69541611e-03   7.21391039e-02   1.74897869e-01
   2.02554922e-01   1.71497067e-01   1.24773192e-01   8.38061643e-02
   5.40821264e-02   3.44179869e-02   2.20069887e-02   1.43270946e-02
   9.57860463e-03   6.60571719e-03   4.70703169e-03   3.47468295e-03
   2.69914390e-03   2.35973469e-03   2.88348189e-03   8.49367204e-03]
Iter: 27  likehood: 53.446809
[  1.66107996e-21   4.68475674e-03   7.55430299e-02   1.81596735e-01
   2.05676253e-01   1.70495053e-01   1.22019076e-01   8.10343446e-02
   5.19485774e-02   3.29690819e-02   2.10813182e-02   1.37462472e-02
   9.20616502e-03   6.35142001e-03   4.51554548e-03   3.31379384e-03
   2.55057799e-03   2.21023010e-03   2.71074208e-03   8.34705238e-03]
Iter: 28  likehood: 53.594774
[  3.92251472e-22   4.68910985e-03   7.91349852e-02   1.88257709e-01
   2.08358326e-01   1.69134828e-01   1.19169292e-01   7.83476016e-02
   4.99647704e-02   3.16663575e-02   2.02734675e-02   1.32522748e-02
   8.89478885e-03   6.13870304e-03   4.35165849e-03   3.17097416e-03
   2.41410740e-03   2.06924688e-03   2.54190760e-03   8.16989103e-03]
Iter: 29  likehood: 53.735457
[  9.32734799e-23   4.70753174e-03   8.29166138e-02   1.94855549e-01
   2.10602951e-01   1.67455323e-01   1.16258892e-01   7.57587453e-02
   4.81260926e-02   3.04977165e-02   1.95705182e-02   1.28342177e-02
   8.63599070e-03   5.96119956e-03   4.21063750e-03   3.04278008e-03
   2.28738908e-03   1.93545474e-03   2.37692525e-03   7.96547318e-03]
Iter: 30  likehood: 53.869382
[  2.23283244e-23   4.73926463e-03   8.68892698e-02   2.01365402e-01
   2.12416076e-01   1.65495352e-01   1.13318618e-01   7.32764851e-02
   4.64260091e-02   2.94509646e-02   1.89603446e-02   1.24821271e-02
   8.42220178e-03   5.81328035e-03   4.08832729e-03   2.92623459e-03
   2.16846680e-03   1.80782657e-03   2.21595154e-03   7.73779804e-03]
Iter: 31  likehood: 53.997059
[  5.37962142e-24   4.78370361e-03   9.10538590e-02   2.07762832e-01
   2.13807332e-01   1.63293026e-01   1.10375181e-01   7.09062324e-02
   4.48567624e-02   2.85141633e-02   1.84316803e-02   1.21869801e-02
   8.24663606e-03   5.68992547e-03   3.98104902e-03   2.81875332e-03
   2.05571472e-03   1.68558648e-03   2.05928434e-03   7.49129864e-03]
Iter: 32  likehood: 54.118980
[  1.30420523e-24   4.84037149e-03   9.54107015e-02   2.14023865e-01
   2.14789569e-01   1.60885279e-01   1.07451574e-01   6.86508082e-02
   4.34099247e-02   2.76758753e-02   1.79741378e-02   1.19405923e-02
   8.10317660e-03   5.58662378e-03   3.88552573e-03   2.71809320e-03
   1.94779783e-03   1.56817097e-03   1.90731107e-03   7.23060381e-03]
Iter: 33  likehood: 54.235620
[  3.18087844e-25   4.90889970e-03   9.99594164e-02   2.20125075e-01
   2.15378401e-01   1.58307485e-01   1.04567413e-01   6.65110481e-02
   4.20768231e-02   2.69253258e-02   1.75781983e-02   1.17355365e-02
   7.98628328e-03   5.49929755e-03   3.79883040e-03   2.62231818e-03
   1.84364360e-03   1.45519799e-03   1.76046801e-03   6.96033912e-03]
Iter: 34  likehood: 54.347430
[  7.80315658e-26   4.98901396e-03   1.04698830e-01   2.26043699e-01
   2.15591769e-01   1.55593160e-01   1.01739276e-01   6.44863052e-02
   4.08488545e-02   2.62525030e-02   1.72351864e-02   1.15650715e-02
   7.89092173e-03   5.42424909e-03   3.71835243e-03   2.52977740e-03
   1.74242036e-03   1.34643993e-03   1.61920686e-03   6.68496286e-03]
Iter: 35  likehood: 54.454834
[  1.92503038e-26   5.08052368e-03   1.09626911e-01   2.31757771e-01
   2.15449511e-01   1.52773740e-01   9.89810256e-02   6.25748558e-02
   3.97177098e-02   2.56482092e-02   1.69372350e-02   1.14230838e-02
   7.81251164e-03   5.35812619e-03   3.64177827e-03   2.43909152e-03
   1.64351867e-03   1.24179818e-03   1.48396626e-03   6.40863403e-03]
Iter: 36  likehood: 54.558228
[  4.77504304e-27   5.18331420e-03   1.14740722e-01   2.37246286e-01
   2.14972970e-01   1.49878413e-01   9.63041011e-02   6.07742170e-02
   3.86755214e-02   2.51040776e-02   1.66772468e-02   1.13040411e-02
   7.74689193e-03   5.29790281e-03   3.56708250e-03   2.34914369e-03
   1.54653321e-03   1.14127794e-03   1.35514750e-03   6.13510986e-03]
Iter: 37  likehood: 54.657974

In [48]:
mixture = Mixture(p,a,grid)
#mixture = Mixture(np.array([0.2,0.2,0.2,0.2,0.2]),a,grid)
x=np.linspace(-5,30,100)
y=[mixture.pdf(x) for x in x]
plt.hist(sample,30,normed=True)
#plt.hist(sample,60,normed=1)
plt.plot(x,y)
plt.show()



In [125]:
for i,j in zip(grid,p):
    print(i,j)


0.01 1.19075986494e-27
4.22 0.00529734129755
8.43 0.120036406579
12.64 0.242489381002
16.85 0.214184612868
21.06 0.146934020368
25.27 0.0937177884296
29.48 0.0590813878019
33.69 0.037714950779
37.9 0.0246125613407
42.11 0.0164488534327
46.32 0.011202956415
50.53 0.00769029964045
54.74 0.00524087114297
58.95 0.00349252557072
63.16 0.00225907182279
67.37 0.00145124328926
71.58 0.00104496276873
75.79 0.00123309415458
80.0 0.00586767129661

In [123]:
split_hist(np.array(bins),np.array(p)/(np.array(p)*(grid[1]-grid[0])).sum(),10)


Out[123]:
[9.6464772459350172,
 11.831324482905956,
 13.567482982960007,
 15.377466663240861,
 17.343060710181355,
 19.470519871120882,
 22.335751482880625,
 26.357085371504365,
 33.623200977952678]

In [126]:
bins=list(np.array(grid)-(grid[1]-grid[0])/2) + [grid[-1]+(grid[1]-grid[0])/2] 
new_bins=split_hist(np.array(bins),np.array(p)/(np.array(p)*(grid[1]-grid[0])).sum(),10)
new_bins.append(bins[0])
new_bins.append(bins[-1])
new_bins=np.array(sorted(new_bins))
new_bins


Out[126]:
array([ -2.095     ,   9.64647725,  11.83132448,  13.56748298,
        15.37746666,  17.34306071,  19.47051987,  22.33575148,
        26.35708537,  33.62320098,  82.105     ])

In [51]:
new_grid=(new_bins[1:] + new_bins[:-1]) / 2
new_grid


Out[51]:
array([  3.77573862,  10.73890086,  12.69940373,  14.47247482,
        16.36026369,  18.40679029,  20.90313568,  24.34641843,
        29.99014317,  57.86410049])

In [52]:
new_p,new_a = fit_mixture(sample,new_grid,0.001)


Iter: 1  likehood: 53.311138
[ 0.08728113  0.10224591  0.10307636  0.10350387  0.10384335  0.10418812
  0.10460826  0.10508285  0.10499326  0.08117689]
Iter: 2  likehood: 53.695435
[ 0.07977183  0.10513616  0.1059528   0.10612805  0.10619095  0.10635235
  0.10675659  0.10747919  0.10772326  0.06850881]
Iter: 3  likehood: 53.951651
[ 0.07534249  0.10865665  0.10881694  0.10822111  0.10754283  0.10712662
  0.10719157  0.10800586  0.10900462  0.06009131]
Iter: 4  likehood: 54.132361
[ 0.07278108  0.11269232  0.11170291  0.10995415  0.10821216  0.10696034
  0.1064865   0.10731584  0.10943822  0.05445649]
Iter: 5  likehood: 54.267919
[ 0.0713827   0.11712121  0.11459246  0.1114127   0.10839614  0.10615974
  0.10504748  0.10587624  0.10942081  0.05059052]
Iter: 6  likehood: 54.375692
[ 0.07072896  0.12184334  0.11745629  0.11264236  0.10822151  0.10492954
  0.10314878  0.10399976  0.10919825  0.0478312 ]
Iter: 7  likehood: 54.465713
[ 0.07056699  0.1267843   0.12026794  0.11367004  0.10777199  0.10340597
  0.10097075  0.10188729  0.10891697  0.04575776]
Iter: 8  likehood: 54.543879
[ 0.07074158  0.13189089  0.12300701  0.11451353  0.10710468  0.10168005
  0.09863035  0.09966426  0.10866098  0.04410666]
Iter: 9  likehood: 54.613720
[ 0.07115627  0.13712568  0.12565881  0.1151859   0.10625981  0.09981334
  0.09620295  0.09740697  0.10847595  0.04271431]
Iter: 10  likehood: 54.677395
[ 0.07175042  0.14246221  0.12821306  0.11569764  0.10526687  0.09784824
  0.09373701  0.09516051  0.108384    0.04148004]
Iter: 11  likehood: 54.736254
[ 0.07248544  0.14788147  0.13066264  0.11605776  0.10414836  0.0958147
  0.09126384  0.09295046  0.10839287  0.04034247]
Iter: 12  likehood: 54.791173
[ 0.07333641  0.15336928  0.13300268  0.1162744   0.10292218  0.09373457
  0.0888038   0.09079037  0.10850159  0.03926474]
Iter: 13  likehood: 54.842740
[ 0.07428687  0.15891461  0.13522984  0.11635516  0.10160322  0.0916244
  0.08637037  0.08868653  0.1087039   0.03822512]
Iter: 14  likehood: 54.891377
[ 0.07532564  0.16450831  0.13734189  0.11630734  0.10020427  0.08949717
  0.08397266  0.08664099  0.10899048  0.03721125]
Iter: 15  likehood: 54.937405
[ 0.0764448   0.17014238  0.13933735  0.11613806  0.09873671  0.08736351
  0.081617    0.08465339  0.10935033  0.03621648]
Iter: 16  likehood: 54.981080
[ 0.07763846  0.17580938  0.14121532  0.11585431  0.09721083  0.08523234
  0.079308    0.08272213  0.10977162  0.0352376 ]
Iter: 17  likehood: 55.022623
[ 0.078902    0.18150217  0.14297537  0.11546301  0.09563615  0.08311137
  0.07704911  0.08084509  0.11024228  0.03427344]
Iter: 18  likehood: 55.062227
[ 0.08023158  0.18721363  0.14461742  0.11497101  0.09402149  0.08100735
  0.07484304  0.07902003  0.1107504   0.03332404]
Iter: 19  likehood: 55.100066
[ 0.08162387  0.19293659  0.14614168  0.11438509  0.0923751   0.07892631
  0.07269201  0.07724485  0.11128444  0.03239006]
Iter: 20  likehood: 55.136301
[ 0.08307586  0.19866374  0.14754868  0.11371196  0.09070473  0.0768736
  0.07059784  0.07551767  0.11183347  0.03147247]
Iter: 21  likehood: 55.171076
[ 0.08458478  0.20438761  0.14883918  0.11295822  0.08901759  0.07485401
  0.06856209  0.07383695  0.11238724  0.03057234]
Iter: 22  likehood: 55.204527
[ 0.086148    0.21010059  0.15001419  0.11213038  0.08732045  0.07287182
  0.06658606  0.07220147  0.11293629  0.02969075]
Iter: 23  likehood: 55.236772
[ 0.08776308  0.21579494  0.15107498  0.11123481  0.0856196   0.07093081
  0.06467082  0.07061028  0.11347199  0.02882868]
Iter: 24  likehood: 55.267919
[ 0.08942766  0.22146286  0.15202304  0.11027773  0.08392087  0.0690343
  0.06281726  0.06906274  0.11398656  0.02798699]
Iter: 25  likehood: 55.298065
[ 0.09113951  0.22709649  0.15286008  0.1092652   0.08222963  0.06718516
  0.06102604  0.0675584   0.11447311  0.02716637]
Iter: 26  likehood: 55.327292
[ 0.09289653  0.23268804  0.15358806  0.10820311  0.08055081  0.06538584
  0.05929761  0.066097    0.11492559  0.02636739]
Iter: 27  likehood: 55.355671
[ 0.09469673  0.23822976  0.15420917  0.10709715  0.07888889  0.0636384
  0.05763225  0.06467841  0.11533878  0.02559045]
Iter: 28  likehood: 55.383262
[ 0.0965382   0.24371411  0.15472579  0.10595279  0.07724793  0.0619445
  0.05603     0.06330259  0.11570827  0.02483581]
Iter: 29  likehood: 55.410114
[ 0.09841918  0.24913371  0.15514054  0.1047753   0.07563157  0.06030545
  0.05449074  0.06196955  0.11603039  0.02410358]
Iter: 30  likehood: 55.436267
[ 0.10033799  0.2544815   0.15545621  0.1035697   0.07404303  0.0587222
  0.05301413  0.06067929  0.11630218  0.02339378]
Iter: 31  likehood: 55.461752
[ 0.10229306  0.25975073  0.15567581  0.10234078  0.07248516  0.0571954
  0.05159967  0.05943181  0.11652131  0.02270628]
Iter: 32  likehood: 55.486592
[ 0.10428291  0.26493501  0.15580248  0.10109308  0.07096043  0.05572539
  0.05024668  0.05822707  0.11668604  0.0220409 ]
Iter: 33  likehood: 55.510806
[ 0.10630614  0.27002841  0.15583955  0.09983088  0.06947095  0.05431226
  0.04895434  0.05706495  0.11679518  0.02139733]
Iter: 34  likehood: 55.534405
[ 0.10836143  0.27502544  0.15579045  0.09855822  0.06801849  0.05295584
  0.04772166  0.05594528  0.11684797  0.02077523]
Iter: 35  likehood: 55.557397
[ 0.11044751  0.27992109  0.15565874  0.09727885  0.0666045   0.05165573
  0.04654754  0.05486778  0.11684408  0.02017417]
Iter: 36  likehood: 55.579788
[ 0.1125632   0.28471088  0.15544805  0.09599628  0.06523015  0.05041135
  0.04543077  0.05383209  0.11678355  0.01959368]
Iter: 37  likehood: 55.601580
[ 0.11470735  0.28939084  0.15516209  0.09471373  0.06389631  0.04922193
  0.04437002  0.05283775  0.11666671  0.01903327]
Iter: 38  likehood: 55.622773
[ 0.11687885  0.29395755  0.15480459  0.09343417  0.06260361  0.04808654
  0.04336391  0.05188423  0.11649417  0.01849239]
Iter: 39  likehood: 55.643368
[ 0.11907664  0.29840813  0.15437929  0.09216031  0.06135242  0.04700414
  0.04241095  0.05097088  0.11626676  0.01797048]
Iter: 40  likehood: 55.663364
[ 0.1212997   0.3027402   0.15388994  0.0908946   0.06014292  0.04597356
  0.04150964  0.05009698  0.11598551  0.01746695]
Iter: 41  likehood: 55.682762
[ 0.12354702  0.30695193  0.15334024  0.08963924  0.05897507  0.04499354
  0.04065841  0.04926174  0.1156516   0.01698122]
Iter: 42  likehood: 55.701561
[ 0.12581763  0.31104199  0.15273383  0.08839618  0.05784865  0.04406273
  0.03985566  0.04846429  0.11526633  0.01651269]
Iter: 43  likehood: 55.719763
[ 0.12811057  0.31500954  0.1520743   0.08716715  0.05676331  0.04317975
  0.0390998   0.0477037   0.11483114  0.01606074]
Iter: 44  likehood: 55.737369
[ 0.13042494  0.31885418  0.15136513  0.08595363  0.05571851  0.04234312
  0.03838921  0.04697896  0.11434752  0.01562479]
Iter: 45  likehood: 55.754383
[ 0.13275981  0.32257598  0.15060969  0.08475691  0.05471362  0.04155139
  0.03772227  0.04628905  0.11381705  0.01520422]
Iter: 46  likehood: 55.770808
[ 0.13511433  0.3261754   0.14981125  0.08357804  0.05374788  0.04080302
  0.03709738  0.04563287  0.11324137  0.01479846]
Iter: 47  likehood: 55.786650
[ 0.13748762  0.32965329  0.14897292  0.08241791  0.05282044  0.04009651
  0.03651294  0.04500932  0.11262213  0.01440691]
Iter: 48  likehood: 55.801915
[ 0.13987886  0.33301084  0.14809771  0.08127721  0.05193035  0.03943032
  0.03596739  0.04441724  0.11196106  0.01402901]
Iter: 49  likehood: 55.816611
[ 0.14228725  0.33624957  0.14718844  0.08015647  0.05107662  0.03880294
  0.03545919  0.04385547  0.11125986  0.01366419]
Iter: 50  likehood: 55.830745
[ 0.14471199  0.33937129  0.14624782  0.07905605  0.05025818  0.03821285
  0.03498681  0.04332282  0.11052028  0.01331191]
Iter: 51  likehood: 55.844329
[ 0.14715232  0.34237807  0.14527839  0.07797617  0.04947392  0.03765855
  0.03454878  0.0428181   0.10974406  0.01297164]
Iter: 52  likehood: 55.857371
[ 0.14960752  0.34527221  0.14428253  0.07691692  0.04872268  0.03713856
  0.03414366  0.0423401   0.10893297  0.01264287]
Iter: 53  likehood: 55.869884
[ 0.15207685  0.34805621  0.14326247  0.07587827  0.04800328  0.03665143
  0.03377003  0.04188762  0.10808873  0.0123251 ]
Iter: 54  likehood: 55.881880
[ 0.15455964  0.35073276  0.14222031  0.07486009  0.04731453  0.03619574
  0.03342651  0.04145946  0.10721311  0.01201785]
Iter: 55  likehood: 55.893372
[ 0.15705519  0.3533047   0.14115798  0.07386214  0.04665522  0.03577008
  0.03311178  0.04105442  0.10630783  0.01172066]
Iter: 56  likehood: 55.904374
[ 0.15956287  0.35577499  0.14007729  0.0728841   0.04602411  0.0353731
  0.03282454  0.04067131  0.10537462  0.01143308]
Iter: 57  likehood: 55.914899
[ 0.16208203  0.35814671  0.13897989  0.07192557  0.04541999  0.03500346
  0.03256353  0.04030895  0.10441519  0.01115469]
Iter: 58  likehood: 55.924963
[ 0.16461204  0.36042301  0.13786732  0.07098609  0.04484164  0.03465986
  0.03232753  0.03996617  0.10343124  0.01088509]
Iter: 59  likehood: 55.934582
[ 0.1671523   0.36260713  0.13674099  0.07006516  0.04428785  0.03434105
  0.03211536  0.03964183  0.10242445  0.01062387]
Iter: 60  likehood: 55.943772
[ 0.1697022   0.36470235  0.13560219  0.06916221  0.04375743  0.03404579
  0.03192588  0.03933479  0.10139648  0.01037067]
Iter: 61  likehood: 55.952549
[ 0.17226116  0.36671197  0.13445211  0.06827664  0.0432492   0.0337729
  0.03175796  0.03904393  0.10034899  0.01012514]
Iter: 62  likehood: 55.960931
[ 0.17482857  0.36863933  0.13329184  0.06740783  0.04276199  0.03352123
  0.03161054  0.03876816  0.09928358  0.00988693]
Iter: 63  likehood: 55.968935
[ 0.17740386  0.37048776  0.13212235  0.06655512  0.04229468  0.03328964
  0.03148258  0.03850641  0.09820186  0.00965573]
Iter: 64  likehood: 55.976580
[ 0.17998644  0.3722606   0.13094456  0.06571785  0.04184615  0.03307707
  0.03137306  0.03825763  0.09710542  0.00943122]
Iter: 65  likehood: 55.983883
[ 0.18257573  0.37396115  0.12975929  0.06489534  0.04141531  0.03288245
  0.03128102  0.03802079  0.0959958   0.00921312]
Iter: 66  likehood: 55.990863
[ 0.18517113  0.37559271  0.12856729  0.06408692  0.04100111  0.03270478
  0.03120549  0.0377949   0.09487452  0.00900115]
Iter: 67  likehood: 55.997541
[ 0.18777206  0.3771585   0.12736924  0.0632919   0.04060252  0.03254308
  0.03114557  0.03757898  0.0937431   0.00879506]
Iter: 68  likehood: 56.003935
[ 0.19037791  0.37866173  0.12616577  0.06250961  0.04021855  0.03239639
  0.03110037  0.03737208  0.092603    0.00859458]
Iter: 69  likehood: 56.010064
[ 0.19298809  0.38010554  0.12495746  0.06173938  0.03984824  0.03226381
  0.03106904  0.0371733   0.09145566  0.0083995 ]
Iter: 70  likehood: 56.015950
[ 0.19560196  0.38149299  0.12374481  0.06098058  0.03949065  0.03214444
  0.03105074  0.03698174  0.09030248  0.0082096 ]
Iter: 71  likehood: 56.021611
[ 0.19821891  0.38282711  0.12252833  0.06023255  0.03914491  0.03203746
  0.03104466  0.03679656  0.08914485  0.00802465]
Iter: 72  likehood: 56.027068
[ 0.20083831  0.38411082  0.12130845  0.0594947   0.03881014  0.03194204
  0.03105005  0.03661693  0.08798409  0.00784448]
Iter: 73  likehood: 56.032341
[ 0.2034595   0.38534697  0.12008557  0.05876642  0.03848552  0.03185739
  0.03106615  0.03644206  0.08682152  0.00766889]
Iter: 74  likehood: 56.037452
[ 0.20608184  0.38653833  0.11886009  0.05804715  0.03817028  0.03178276
  0.03109224  0.0362712   0.08565839  0.00749771]
Iter: 75  likehood: 56.042418
[ 0.20870467  0.38768756  0.11763236  0.05733634  0.03786366  0.03171744
  0.03112763  0.03610363  0.08449593  0.00733079]
Iter: 76  likehood: 56.047262
[ 0.2113273   0.38879725  0.11640272  0.05663349  0.03756494  0.03166073
  0.03117165  0.03593866  0.08333531  0.00716796]
Iter: 77  likehood: 56.052003
[ 0.21394906  0.38986987  0.11517149  0.0559381   0.03727345  0.03161198
  0.03122367  0.03577564  0.08217766  0.00700909]
Iter: 78  likehood: 56.056660
[ 0.21656925  0.39090781  0.11393896  0.05524971  0.03698855  0.03157057
  0.03128307  0.03561397  0.08102408  0.00685404]
Iter: 79  likehood: 56.061254
[ 0.21918718  0.39191334  0.11270542  0.0545679   0.03670964  0.03153588
  0.03134927  0.03545306  0.07987562  0.0067027 ]
Iter: 80  likehood: 56.065802
[ 0.22180214  0.39288863  0.11147117  0.05389226  0.03643614  0.03150737
  0.03142172  0.03529238  0.07873325  0.00655493]
Iter: 81  likehood: 56.070325
[ 0.22441342  0.39383574  0.11023645  0.05322244  0.03616753  0.0314845
  0.03149989  0.03513144  0.07759793  0.00641065]
Iter: 82  likehood: 56.074839
[ 0.22702031  0.39475664  0.10900155  0.05255809  0.03590331  0.03146676
  0.03158328  0.03496976  0.07647056  0.00626975]
Iter: 83  likehood: 56.079364
[ 0.22962207  0.39565318  0.10776672  0.05189891  0.03564301  0.03145369
  0.03167141  0.03480692  0.07535196  0.00613213]
Iter: 84  likehood: 56.083916
[ 0.23221799  0.39652708  0.10653222  0.05124462  0.03538621  0.03144483
  0.03176385  0.03464254  0.07424294  0.00599772]
Iter: 85  likehood: 56.088511
[ 0.23480734  0.39738     0.10529829  0.05059496  0.03513252  0.03143978
  0.03186017  0.03447627  0.07314423  0.00586643]
Iter: 86  likehood: 56.093165
[ 0.23738939  0.39821345  0.10406519  0.04994973  0.03488156  0.03143816
  0.03196     0.0343078   0.07205653  0.0057382 ]
Iter: 87  likehood: 56.097895
[ 0.2399634   0.39902886  0.10283317  0.04930871  0.03463302  0.03143961
  0.03206297  0.03413685  0.07098045  0.00561296]
Iter: 88  likehood: 56.102713
[ 0.24252863  0.39982755  0.10160248  0.04867176  0.03438659  0.0314438
  0.03216876  0.03396318  0.0699166   0.00549066]
Iter: 89  likehood: 56.107633
[ 0.24508436  0.40061074  0.10037336  0.04803872  0.034142    0.03145044
  0.03227706  0.03378658  0.06886549  0.00537125]
Iter: 90  likehood: 56.112669
[ 0.24762984  0.40137955  0.09914608  0.04740948  0.033899    0.03145927
  0.0323876   0.0336069   0.06782762  0.00525467]
Iter: 91  likehood: 56.117832
[ 0.25016433  0.40213503  0.09792089  0.04678394  0.0336574   0.03147002
  0.03250013  0.03342398  0.0668034   0.00514089]
Iter: 92  likehood: 56.123133
[ 0.25268708  0.40287809  0.09669803  0.04616203  0.03341699  0.03148249
  0.03261444  0.03323773  0.06579324  0.00502987]
Iter: 93  likehood: 56.128582
[ 0.25519736  0.40360961  0.09547778  0.0455437   0.03317761  0.03149649
  0.03273032  0.03304807  0.06479747  0.00492158]
Iter: 94  likehood: 56.134188
[ 0.25769442  0.40433035  0.09426038  0.04492892  0.03293912  0.03151185
  0.03284763  0.03285496  0.06381638  0.004816  ]
Iter: 95  likehood: 56.139960
[ 0.2601775   0.405041    0.09304611  0.04431766  0.03270141  0.03152842
  0.0329662   0.03265838  0.06285022  0.0047131 ]
Iter: 96  likehood: 56.145905
[ 0.26264585  0.40574218  0.09183522  0.04370994  0.03246438  0.03154608
  0.03308593  0.03245835  0.06189921  0.00461286]
Iter: 97  likehood: 56.152028
[ 0.26509871  0.40643446  0.09062799  0.04310576  0.03222794  0.03156472
  0.03320671  0.03225489  0.06096352  0.00451527]
Iter: 98  likehood: 56.158336
[ 0.26753533  0.40711832  0.08942469  0.04250516  0.03199205  0.03158428
  0.03332848  0.03204808  0.06004329  0.00442032]
Iter: 99  likehood: 56.164833
[ 0.26995493  0.40779419  0.08822559  0.04190819  0.03175665  0.03160467
  0.03345118  0.03183799  0.05913862  0.00432799]
Iter: 100  likehood: 56.171522
[ 0.27235674  0.40846246  0.08703096  0.04131489  0.03152173  0.03162586
  0.03357478  0.03162472  0.05824959  0.00423828]
Iter: 101  likehood: 56.178405
[ 0.27473998  0.40912345  0.08584109  0.04072533  0.03128726  0.03164781
  0.03369927  0.0314084   0.05737624  0.00415117]
Iter: 102  likehood: 56.185484
[ 0.27710389  0.40977747  0.08465626  0.04013959  0.03105325  0.0316705
  0.03382463  0.03118916  0.0565186   0.00406665]
Iter: 103  likehood: 56.192759
[ 0.27944769  0.41042476  0.08347673  0.03955774  0.0308197   0.03169394
  0.03395089  0.03096716  0.05567666  0.00398472]
Iter: 104  likehood: 56.200229
[ 0.28177058  0.41106554  0.08230281  0.03897988  0.03058664  0.03171814
  0.03407809  0.03074256  0.0548504   0.00390537]
Iter: 105  likehood: 56.207894
[ 0.28407179  0.41170002  0.08113477  0.0384061   0.03035409  0.0317431
  0.03420625  0.03051553  0.05403978  0.00382858]
Iter: 106  likehood: 56.215751
[ 0.28635055  0.41232835  0.07997289  0.03783649  0.03012209  0.03176886
  0.03433542  0.03028626  0.05324475  0.00375434]
Iter: 107  likehood: 56.223796
[ 0.28860608  0.41295069  0.07881746  0.03727116  0.02989069  0.03179544
  0.03446567  0.03005493  0.05246525  0.00368263]
Iter: 108  likehood: 56.232026
[ 0.29083762  0.41356716  0.07766877  0.03671022  0.02965992  0.0318229
  0.03459706  0.02982174  0.05170119  0.00361343]
Iter: 109  likehood: 56.240435
[ 0.29304442  0.4141779   0.07652708  0.03615376  0.02942984  0.03185126
  0.03472965  0.02958688  0.05095249  0.00354671]
Iter: 110  likehood: 56.249018
[ 0.29522575  0.414783    0.07539269  0.03560189  0.02920051  0.03188059
  0.03486351  0.02935055  0.05021906  0.00348244]
Iter: 111  likehood: 56.257768
[ 0.29738089  0.41538257  0.07426587  0.03505472  0.02897198  0.03191092
  0.03499871  0.02911295  0.0495008   0.00342059]
Iter: 112  likehood: 56.266677
[ 0.29950914  0.4159767   0.07314689  0.03451236  0.0287443   0.03194231
  0.03513533  0.02887425  0.0487976   0.00336112]
Iter: 113  likehood: 56.275739
[ 0.30160983  0.41656548  0.07203601  0.0339749   0.02851755  0.0319748
  0.03527341  0.02863466  0.04810936  0.00330399]
Iter: 114  likehood: 56.284944
[ 0.30368233  0.417149    0.07093352  0.03344245  0.02829176  0.03200845
  0.03541303  0.02839434  0.04743598  0.00324914]
Iter: 115  likehood: 56.294284
[ 0.30572604  0.41772734  0.06983965  0.03291511  0.02806701  0.03204329
  0.03555424  0.02815347  0.04677733  0.00319652]
Iter: 116  likehood: 56.303750
[ 0.30774038  0.41830058  0.06875467  0.03239297  0.02784335  0.03207936
  0.03569709  0.02791221  0.0461333   0.00314609]
Iter: 117  likehood: 56.313331
[ 0.30972483  0.41886881  0.06767882  0.03187612  0.02762083  0.03211672
  0.03584162  0.02767071  0.04550378  0.00309777]
Iter: 118  likehood: 56.323018
[ 0.31167891  0.4194321   0.06661234  0.03136466  0.0273995   0.03215538
  0.03598785  0.02742912  0.04488865  0.00305151]
Iter: 119  likehood: 56.332801
[ 0.31360218  0.41999052  0.06555545  0.03085865  0.02717942  0.03219538
  0.03613581  0.02718757  0.04428778  0.00300724]
Iter: 120  likehood: 56.342669
[ 0.31549424  0.42054417  0.06450838  0.0303582   0.02696065  0.03223675
  0.03628552  0.02694617  0.04370105  0.00296489]
Iter: 121  likehood: 56.352612
[ 0.31735475  0.4210931   0.06347134  0.02986336  0.02674321  0.0322795
  0.03643698  0.02670504  0.04312833  0.00292439]
Iter: 122  likehood: 56.362619
[ 0.31918342  0.42163739  0.06244454  0.0293742   0.02652716  0.03232366
  0.03659018  0.02646429  0.04256948  0.00288568]
Iter: 123  likehood: 56.372680
[ 0.32098     0.4221771   0.06142816  0.0288908   0.02631255  0.03236924
  0.0367451   0.02622399  0.04202438  0.00284868]
Iter: 124  likehood: 56.382786
[ 0.3227443   0.42271229  0.06042238  0.02841321  0.0260994   0.03241624
  0.03690173  0.02598423  0.04149287  0.00281333]
Iter: 125  likehood: 56.392925
[ 0.32447618  0.42324303  0.05942738  0.02794149  0.02588777  0.03246467
  0.03706003  0.02574509  0.04097482  0.00277954]
Iter: 126  likehood: 56.403088
[ 0.32617554  0.42376936  0.05844332  0.02747568  0.02567769  0.03251453
  0.03721996  0.02550661  0.04047006  0.00274726]
Iter: 127  likehood: 56.413266
[ 0.32784233  0.42429133  0.05747034  0.02701583  0.02546918  0.03256582
  0.03738146  0.02526885  0.03997843  0.00271642]
Iter: 128  likehood: 56.423448
[ 0.32947654  0.42480898  0.05650858  0.02656198  0.02526229  0.03261854
  0.03754449  0.02503187  0.03949978  0.00268694]
Iter: 129  likehood: 56.433626
[ 0.33107824  0.42532234  0.05555817  0.02611416  0.02505704  0.03267267
  0.03770898  0.0247957   0.03903393  0.00265877]
Iter: 130  likehood: 56.443790
[ 0.33264748  0.42583144  0.05461923  0.02567239  0.02485347  0.03272821
  0.03787486  0.02456037  0.03858071  0.00263184]
Iter: 131  likehood: 56.453933
[ 0.33418442  0.42633631  0.05369184  0.02523671  0.02465159  0.03278514
  0.03804207  0.02432591  0.03813993  0.00260609]
Iter: 132  likehood: 56.464045
[ 0.3356892   0.42683696  0.05277611  0.02480712  0.02445144  0.03284345
  0.03821051  0.02409235  0.0377114   0.00258146]
Iter: 133  likehood: 56.474120
[ 0.33716203  0.42733339  0.05187211  0.02438365  0.02425304  0.03290314
  0.03838012  0.0238597   0.03729493  0.00255789]
Iter: 134  likehood: 56.484149
[ 0.33860315  0.42782562  0.05097991  0.02396629  0.0240564   0.03296417
  0.0385508   0.02362799  0.03689032  0.00253534]
Iter: 135  likehood: 56.494125
[ 0.34001282  0.42831364  0.05009957  0.02355505  0.02386156  0.03302654
  0.03872248  0.02339722  0.03649737  0.00251375]
Iter: 136  likehood: 56.504042
[ 0.34139134  0.42879744  0.04923112  0.02314993  0.02366852  0.03309022
  0.03889507  0.02316742  0.03611587  0.00249306]
Iter: 137  likehood: 56.513893
[ 0.34273902  0.42927702  0.04837461  0.02275092  0.02347731  0.03315521
  0.03906846  0.02293858  0.03574561  0.00247324]
Iter: 138  likehood: 56.523672
[ 0.34405623  0.42975236  0.04753006  0.02235801  0.02328793  0.03322148
  0.03924259  0.02271073  0.03538637  0.00245424]
Iter: 139  likehood: 56.533373
[ 0.34534331  0.43022345  0.04669749  0.02197117  0.02310041  0.03328901
  0.03941735  0.02248386  0.03503794  0.00243602]
Iter: 140  likehood: 56.542991
[ 0.34660067  0.43069027  0.04587688  0.02159039  0.02291475  0.03335778
  0.03959266  0.02225799  0.03470009  0.00241853]
Iter: 141  likehood: 56.552521
[ 0.3478287   0.43115278  0.04506824  0.02121565  0.02273096  0.03342778
  0.03976842  0.02203313  0.03437259  0.00240174]
Iter: 142  likehood: 56.561958
[ 0.34902784  0.43161098  0.04427155  0.0208469   0.02254906  0.03349899
  0.03994456  0.02180927  0.03405524  0.00238561]
Iter: 143  likehood: 56.571298
[ 0.35019851  0.43206483  0.04348678  0.02048412  0.02236904  0.03357138
  0.04012097  0.02158644  0.03374779  0.00237012]
Iter: 144  likehood: 56.580537
[ 0.35134117  0.43251432  0.0427139   0.02012727  0.02219092  0.03364495
  0.04029758  0.02136464  0.03345003  0.00235522]
Iter: 145  likehood: 56.589671
[ 0.35245627  0.43295941  0.04195286  0.01977631  0.02201469  0.03371966
  0.0404743   0.02114388  0.03316173  0.00234089]
Iter: 146  likehood: 56.598697
[ 0.35354428  0.43340009  0.04120362  0.01943119  0.02184036  0.0337955
  0.04065104  0.02092416  0.03288266  0.00232709]
Iter: 147  likehood: 56.607611
[ 0.35460567  0.43383632  0.04046611  0.01909187  0.02166792  0.03387246
  0.04082773  0.02070551  0.03261259  0.00231381]
Iter: 148  likehood: 56.616412
[ 0.35564092  0.4342681   0.03974027  0.01875829  0.02149738  0.03395051
  0.04100428  0.02048792  0.03235132  0.00230102]
Iter: 149  likehood: 56.625095
[ 0.35665051  0.43469539  0.03902602  0.01843039  0.02132873  0.03402963
  0.04118063  0.02027142  0.0320986   0.00228869]
Iter: 150  likehood: 56.633660
[ 0.35763493  0.43511817  0.03832329  0.01810813  0.02116197  0.0341098
  0.04135668  0.02005601  0.03185422  0.0022768 ]
Iter: 151  likehood: 56.642104
[ 0.35859468  0.43553644  0.03763199  0.01779143  0.02099708  0.03419101
  0.04153237  0.0198417   0.03161796  0.00226533]
Iter: 152  likehood: 56.650425
[ 0.35953023  0.43595017  0.03695202  0.01748025  0.02083407  0.03427324
  0.04170764  0.01962852  0.03138962  0.00225426]
Iter: 153  likehood: 56.658623
[ 0.36044207  0.43635936  0.03628329  0.01717451  0.02067291  0.03435646
  0.0418824   0.01941647  0.03116896  0.00224357]
Iter: 154  likehood: 56.666695
[ 0.36133071  0.43676399  0.03562571  0.01687415  0.02051361  0.03444065
  0.04205659  0.01920557  0.03095578  0.00223324]
Iter: 155  likehood: 56.674641
[ 0.36219661  0.43716406  0.03497915  0.0165791   0.02035614  0.03452581
  0.04223015  0.01899584  0.03074988  0.00222326]
Iter: 156  likehood: 56.682460
[ 0.36304027  0.43755957  0.03434351  0.01628929  0.0202005   0.0346119
  0.04240302  0.01878728  0.03055105  0.00221361]
Iter: 157  likehood: 56.690151
[ 0.36386216  0.4379505   0.03371868  0.01600465  0.02004667  0.0346989
  0.04257514  0.01857993  0.03035909  0.00220428]
Iter: 158  likehood: 56.697715
[ 0.36466277  0.43833687  0.03310454  0.01572511  0.01989463  0.0347868
  0.04274645  0.01837378  0.0301738   0.00219525]
Iter: 159  likehood: 56.705150
[ 0.36544256  0.43871867  0.03250096  0.0154506   0.01974437  0.03487558
  0.0429169   0.01816887  0.02999498  0.00218651]
Iter: 160  likehood: 56.712456
[ 0.366202    0.43909592  0.03190783  0.01518104  0.01959588  0.03496521
  0.04308642  0.01796521  0.02982246  0.00217804]
Iter: 161  likehood: 56.719635
[ 0.36694155  0.43946862  0.03132501  0.01491635  0.01944912  0.03505568
  0.04325498  0.01776281  0.02965604  0.00216984]
Iter: 162  likehood: 56.726685
[ 0.36766168  0.43983678  0.03075238  0.01465648  0.01930408  0.03514696
  0.04342252  0.01756169  0.02949553  0.0021619 ]
Iter: 163  likehood: 56.733608
[ 0.36836283  0.44020042  0.03018981  0.01440132  0.01916075  0.03523903
  0.043589    0.01736187  0.02934077  0.0021542 ]
Iter: 164  likehood: 56.740404
[ 0.36904545  0.44055955  0.02963716  0.01415083  0.0190191   0.03533187
  0.04375438  0.01716336  0.02919157  0.00214673]
Iter: 165  likehood: 56.747073
[ 0.36970998  0.4409142   0.0290943   0.0139049   0.01887911  0.03542546
  0.04391861  0.01696619  0.02904777  0.00213949]
Iter: 166  likehood: 56.753617
[ 0.37035684  0.44126438  0.02856109  0.01366348  0.01874076  0.03551978
  0.04408164  0.01677036  0.0289092   0.00213246]
Iter: 167  likehood: 56.760036
[ 0.37098646  0.44161012  0.0280374   0.01342649  0.01860402  0.03561481
  0.04424346  0.0165759   0.0287757   0.00212564]
Iter: 168  likehood: 56.766331
[ 0.37159927  0.44195144  0.02752309  0.01319384  0.01846888  0.03571053
  0.04440401  0.01638283  0.02864711  0.00211901]
Iter: 169  likehood: 56.772503
[ 0.37219566  0.44228836  0.02701802  0.01296547  0.01833531  0.03580691
  0.04456326  0.01619114  0.02852327  0.00211258]
Iter: 170  likehood: 56.778554
[ 0.37277605  0.44262093  0.02652206  0.0127413   0.01820329  0.03590393
  0.04472119  0.01600087  0.02840404  0.00210634]
Iter: 171  likehood: 56.784484
[ 0.37334083  0.44294916  0.02603507  0.01252125  0.01807279  0.03600158
  0.04487776  0.01581203  0.02828926  0.00210027]
Iter: 172  likehood: 56.790295
[ 0.37389039  0.44327309  0.0255569   0.01230526  0.01794379  0.03609982
  0.04503295  0.01562463  0.0281788   0.00209437]
Iter: 173  likehood: 56.795988
[ 0.3744251   0.44359275  0.02508743  0.01209324  0.01781627  0.03619865
  0.04518672  0.01543868  0.02807252  0.00208864]
Iter: 174  likehood: 56.801565
[ 0.37494535  0.44390818  0.02462651  0.01188513  0.0176902   0.03629804
  0.04533905  0.0152542   0.02797027  0.00208307]
Iter: 175  likehood: 56.807027
[ 0.3754515   0.44421941  0.02417401  0.01168085  0.01756556  0.03639796
  0.04548993  0.01507119  0.02787194  0.00207765]
Iter: 176  likehood: 56.812375
[ 0.37594391  0.44452647  0.02372978  0.01148033  0.01744233  0.0364984
  0.04563932  0.01488968  0.02777739  0.00207238]
Iter: 177  likehood: 56.817612
[ 0.37642292  0.44482941  0.0232937   0.01128351  0.01732048  0.03659933
  0.04578721  0.01470967  0.0276865   0.00206726]
Iter: 178  likehood: 56.822738
[ 0.37688889  0.44512827  0.02286564  0.01109031  0.01719998  0.03670074
  0.04593358  0.01453118  0.02759915  0.00206227]
Iter: 179  likehood: 56.827756
[ 0.37734215  0.44542307  0.02244544  0.01090067  0.01708082  0.0368026
  0.04607841  0.01435421  0.02751522  0.00205741]
Iter: 180  likehood: 56.832667
[ 0.37778303  0.44571387  0.02203299  0.01071451  0.01696297  0.0369049
  0.04622168  0.01417877  0.02743459  0.00205269]
Iter: 181  likehood: 56.837472
[ 0.37821185  0.44600069  0.02162815  0.01053177  0.01684641  0.03700761
  0.04636339  0.01400487  0.02735716  0.00204809]
Iter: 182  likehood: 56.842174
[ 0.37862893  0.44628359  0.02123079  0.01035238  0.01673111  0.03711072
  0.04650352  0.01383252  0.02728283  0.00204361]
Iter: 183  likehood: 56.846773
[ 0.37903457  0.4465626   0.02084079  0.01017628  0.01661705  0.0372142
  0.04664206  0.01366173  0.02721147  0.00203925]
Iter: 184  likehood: 56.851272
[ 0.37942908  0.44683777  0.020458    0.01000341  0.01650421  0.03731803
  0.04677899  0.0134925   0.02714301  0.002035  ]
Iter: 185  likehood: 56.855673
[ 0.37981275  0.44710913  0.02008231  0.00983371  0.01639256  0.0374222
  0.04691431  0.01332484  0.02707733  0.00203087]
Iter: 186  likehood: 56.859977
[ 0.38018586  0.44737673  0.01971359  0.0096671   0.01628209  0.03752668
  0.04704801  0.01315874  0.02701434  0.00202684]
Iter: 187  likehood: 56.864185
[ 0.3805487   0.44764061  0.01935172  0.00950354  0.01617278  0.03763146
  0.04718009  0.01299423  0.02695396  0.00202291]
Iter: 188  likehood: 56.868301
[ 0.38090154  0.44790081  0.01899657  0.00934296  0.01606459  0.03773652
  0.04731053  0.0128313   0.02689609  0.00201909]
Iter: 189  likehood: 56.872324
[ 0.38124465  0.44815738  0.01864803  0.0091853   0.01595751  0.03784184
  0.04743933  0.01266995  0.02684064  0.00201536]
Iter: 190  likehood: 56.876258
[ 0.38157828  0.44841036  0.01830598  0.0090305   0.01585152  0.03794741
  0.0475665   0.01251019  0.02678754  0.00201173]
Iter: 191  likehood: 56.880103
[ 0.3819027   0.44865978  0.01797029  0.00887852  0.0157466   0.0380532
  0.04769202  0.01235201  0.0267367   0.00200818]
Iter: 192  likehood: 56.883861
[ 0.38221815  0.4489057   0.01764085  0.00872929  0.01564273  0.03815919
  0.04781589  0.01219542  0.02668804  0.00200473]
Iter: 193  likehood: 56.887535
[ 0.38252487  0.44914815  0.01731755  0.00858276  0.01553989  0.03826538
  0.04793812  0.01204042  0.02664149  0.00200137]
Iter: 194  likehood: 56.891125
[ 0.3828231   0.44938717  0.01700028  0.00843887  0.01543805  0.03837174
  0.04805871  0.01188701  0.02659698  0.00199808]
Iter: 195  likehood: 56.894634
[ 0.38311308  0.44962281  0.01668892  0.00829758  0.01533721  0.03847826
  0.04817764  0.01173519  0.02655443  0.00199488]
Iter: 196  likehood: 56.898063
[ 0.38339501  0.44985512  0.01638336  0.00815883  0.01523733  0.03858492
  0.04829494  0.01158495  0.02651377  0.00199176]
Iter: 197  likehood: 56.901414
[ 0.38366913  0.45008412  0.01608351  0.00802258  0.01513841  0.03869171
  0.04841059  0.01143629  0.02647494  0.00198872]
Iter: 198  likehood: 56.904688
[ 0.38393564  0.45030987  0.01578924  0.00788877  0.01504043  0.03879861
  0.0485246   0.01128922  0.02643787  0.00198575]
Iter: 199  likehood: 56.907887
[ 0.38419476  0.4505324   0.01550047  0.00775735  0.01494336  0.0389056
  0.04863698  0.01114372  0.02640251  0.00198286]
Iter: 200  likehood: 56.911012
[ 0.38444668  0.45075175  0.01521708  0.00762829  0.01484719  0.03901267
  0.04874773  0.01099979  0.02636879  0.00198003]
Iter: 201  likehood: 56.914065
[ 0.3846916   0.45096797  0.01493898  0.00750152  0.0147519   0.03911981
  0.04885685  0.01085743  0.02633665  0.00197728]
Iter: 202  likehood: 56.917048
[ 0.38492973  0.45118109  0.01466606  0.00737702  0.01465748  0.03922701
  0.04896436  0.01071664  0.02630603  0.00197459]
Iter: 203  likehood: 56.919962
[ 0.38516123  0.45139116  0.01439823  0.00725472  0.01456392  0.03933424
  0.04907025  0.01057741  0.02627689  0.00197196]
Iter: 204  likehood: 56.922809
[ 0.3853863   0.45159821  0.01413539  0.00713459  0.01447118  0.03944149
  0.04917453  0.01043973  0.02624916  0.0019694 ]
Iter: 205  likehood: 56.925590
[ 0.38560512  0.45180228  0.01387745  0.0070166   0.01437927  0.03954876
  0.04927722  0.01030359  0.02622281  0.00196691]
Iter: 206  likehood: 56.928306
[ 0.38581784  0.45200342  0.01362432  0.00690068  0.01428816  0.03965603
  0.04937831  0.010169    0.02619777  0.00196447]
Iter: 207  likehood: 56.930959
[ 0.38602466  0.45220166  0.01337591  0.00678681  0.01419784  0.03976328
  0.04947782  0.01003593  0.026174    0.00196209]
Iter: 208  likehood: 56.933551
[ 0.38622572  0.45239703  0.01313212  0.00667495  0.0141083   0.03987051
  0.04957575  0.0099044   0.02615146  0.00195977]
Iter: 209  likehood: 56.936082
[ 0.38642119  0.45258958  0.01289287  0.00656504  0.01401951  0.0399777
  0.04967212  0.00977437  0.0261301   0.0019575 ]
Iter: 210  likehood: 56.938554
[ 0.38661122  0.45277934  0.01265808  0.00645707  0.01393148  0.04008485
  0.04976693  0.00964586  0.02610988  0.00195529]
Iter: 211  likehood: 56.940968
[ 0.38679596  0.45296636  0.01242765  0.00635099  0.01384418  0.04019193
  0.04986019  0.00951885  0.02609075  0.00195313]
Iter: 212  likehood: 56.943327
[ 0.38697557  0.45315066  0.01220151  0.00624676  0.0137576   0.04029894
  0.04995192  0.00939333  0.02607268  0.00195102]
Iter: 213  likehood: 56.945630
[ 0.38715018  0.45333228  0.01197958  0.00614434  0.01367173  0.04040588
  0.05004213  0.0092693   0.02605562  0.00194896]
Iter: 214  likehood: 56.947879
[ 0.38731994  0.45351127  0.01176177  0.00604371  0.01358656  0.04051272
  0.05013081  0.00914673  0.02603954  0.00194695]
Iter: 215  likehood: 56.950076
[ 0.38748497  0.45368765  0.01154801  0.00594483  0.01350207  0.04061945
  0.050218    0.00902563  0.02602441  0.00194499]
Iter: 216  likehood: 56.952222
[ 0.38764542  0.45386145  0.01133821  0.00584766  0.01341826  0.04072608
  0.05030369  0.00890598  0.02601018  0.00194307]
Iter: 217  likehood: 56.954317
[ 0.3878014   0.45403272  0.01113232  0.00575217  0.0133351   0.04083259
  0.0503879   0.00878778  0.02599683  0.0019412 ]
Iter: 218  likehood: 56.956364
[ 0.38795305  0.45420149  0.01093024  0.00565833  0.0132526   0.04093897
  0.05047063  0.008671    0.02598432  0.00193937]
Iter: 219  likehood: 56.958362
[ 0.38810049  0.45436779  0.01073191  0.00556611  0.01317074  0.0410452
  0.05055192  0.00855565  0.02597261  0.00193758]
Iter: 220  likehood: 56.960314
[ 0.38824383  0.45453166  0.01053725  0.00547548  0.0130895   0.0411513
  0.05063175  0.00844171  0.02596169  0.00193584]
Iter: 221  likehood: 56.962221
[ 0.38838319  0.45469312  0.0103462   0.0053864   0.01300888  0.04125723
  0.05071016  0.00832916  0.02595152  0.00193413]
Iter: 222  likehood: 56.964082
[ 0.38851867  0.45485222  0.01015869  0.00529885  0.01292888  0.041363
  0.05078714  0.00821801  0.02594207  0.00193247]
Iter: 223  likehood: 56.965900
[ 0.3886504   0.45500898  0.00997465  0.0052128   0.01284947  0.04146861
  0.05086272  0.00810823  0.02593331  0.00193084]
Iter: 224  likehood: 56.967676
[ 0.38877847  0.45516343  0.00979401  0.00512822  0.01277065  0.04157403
  0.05093691  0.00799982  0.02592522  0.00192925]
Iter: 225  likehood: 56.969410
[ 0.38890299  0.45531561  0.00961671  0.00504508  0.0126924   0.04167927
  0.05100971  0.00789276  0.02591777  0.0019277 ]
Iter: 226  likehood: 56.971104
[ 0.38902405  0.45546555  0.00944269  0.00496336  0.01261474  0.04178431
  0.05108114  0.00778704  0.02591094  0.00192619]
Iter: 227  likehood: 56.972758
[ 0.38914176  0.45561328  0.00927188  0.00488302  0.01253763  0.04188915
  0.05115122  0.00768265  0.0259047   0.0019247 ]
Iter: 228  likehood: 56.974374
[ 0.38925621  0.45575883  0.00910423  0.00480405  0.01246107  0.04199379
  0.05121996  0.00757957  0.02589903  0.00192326]
Iter: 229  likehood: 56.975952
[ 0.38936749  0.45590223  0.00893967  0.00472642  0.01238507  0.04209821
  0.05128737  0.0074778   0.02589391  0.00192184]
Iter: 230  likehood: 56.977493
[ 0.38947569  0.4560435   0.00877814  0.0046501   0.01230959  0.04220242
  0.05135346  0.00737733  0.02588931  0.00192046]
Iter: 231  likehood: 56.978998
[ 0.3895809   0.45618268  0.00861959  0.00457507  0.01223465  0.0423064
  0.05141826  0.00727813  0.02588522  0.00191911]
Iter: 232  likehood: 56.980468
[ 0.38968319  0.4563198   0.00846395  0.0045013   0.01216023  0.04241015
  0.05148176  0.00718021  0.02588161  0.00191779]
Iter: 233  likehood: 56.981904
[ 0.38978266  0.45645489  0.00831119  0.00442877  0.01208632  0.04251367
  0.05154399  0.00708354  0.02587848  0.00191649]
Iter: 234  likehood: 56.983306
[ 0.38987938  0.45658797  0.00816123  0.00435747  0.01201292  0.04261694
  0.05160497  0.00698811  0.02587578  0.00191523]
Iter: 235  likehood: 56.984676
[ 0.38997343  0.45671907  0.00801403  0.00428735  0.01194002  0.04271997
  0.05166469  0.00689391  0.02587352  0.001914  ]
Iter: 236  likehood: 56.986014
[ 0.39006489  0.45684822  0.00786953  0.00421842  0.01186761  0.04282274
  0.05172319  0.00680093  0.02587167  0.00191279]
Iter: 237  likehood: 56.987321
[ 0.39015382  0.45697545  0.00772769  0.00415063  0.01179569  0.04292526
  0.05178046  0.00670916  0.02587022  0.00191161]
Iter: 238  likehood: 56.988598
[ 0.39024031  0.45710078  0.00758845  0.00408398  0.01172425  0.04302752
  0.05183653  0.00661857  0.02586914  0.00191046]
Iter: 239  likehood: 56.989845
[ 0.39032441  0.45722424  0.00745177  0.00401844  0.01165328  0.04312951
  0.05189141  0.00652917  0.02586843  0.00190933]
Iter: 240  likehood: 56.991063
[ 0.3904062   0.45734586  0.00731759  0.00395399  0.01158277  0.04323124
  0.05194511  0.00644094  0.02586807  0.00190823]
Iter: 241  likehood: 56.992253
[ 0.39048574  0.45746566  0.00718587  0.00389062  0.01151273  0.04333269
  0.05199764  0.00635386  0.02586804  0.00190715]
Iter: 242  likehood: 56.993416
[ 0.39056309  0.45758366  0.00705657  0.00382829  0.01144314  0.04343387
  0.05204903  0.00626792  0.02586833  0.0019061 ]
Iter: 243  likehood: 56.994552
[ 0.39063832  0.4576999   0.00692962  0.003767    0.011374    0.04353476
  0.05209928  0.00618312  0.02586893  0.00190507]
Iter: 244  likehood: 56.995661
[ 0.39071149  0.45781439  0.00680501  0.00370672  0.01130531  0.04363537
  0.0521484   0.00609943  0.02586982  0.00190406]
Iter: 245  likehood: 56.996745
[ 0.39078265  0.45792717  0.00668267  0.00364744  0.01123705  0.0437357
  0.05219642  0.00601685  0.02587099  0.00190307]
Iter: 246  likehood: 56.997805
[ 0.39085186  0.45803825  0.00656256  0.00358914  0.01116922  0.04383573
  0.05224334  0.00593535  0.02587243  0.00190211]
Iter: 247  likehood: 56.998839
[ 0.39091917  0.45814767  0.00644465  0.0035318   0.01110182  0.04393547
  0.05228918  0.00585494  0.02587413  0.00190117]
Iter: 248  likehood: 56.999850
[ 0.39098465  0.45825543  0.00632889  0.0034754   0.01103485  0.04403492
  0.05233394  0.0057756   0.02587607  0.00190024]
Iter: 249  likehood: 57.000838

In [53]:
#mean = np.mean(sample)
#a1 = mean/(np.array([0.75,0.25])*new_grid).sum()
 
mixture = Mixture(np.array(new_p),new_a,np.array(new_grid))

x=np.linspace(-5,30,100)
y=[mixture.pdf(x) for x in x]
plt.hist(sample,40,normed=True)
#plt.hist(sample,60,normed=1)
plt.plot(x,y)
plt.show()


Расстояние К-Л


In [58]:
def fit_gvg(p,a,u):
    from scipy.stats import entropy
    from scipy.optimize import minimize
    GG = gen_gamma(shapes='v,k,b')
    fun = lambda x: entropy(GG.pdf(u,x[0],x[1],x[2]),p+1e-06)
    x0 = [1, 1, 1]
    bnds = ((None, None), (0, None), (0, None))
    res = minimize(fun, x0=x0, bounds=bnds,tol=0.0001)
    return res

In [59]:
%%time
res=fit_gvg(p,a,grid)
print(res.message)
res=res.x
gvg=GVG()
x=np.linspace(-3,25,50)
y=[gvg.pdf(x,a,res[0],res[1],res[2]) for x in x]
plt.hist(sample,40,normed=1)
plt.plot(x,y)
plt.show()


b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'
Wall time: 19.4 s

In [57]:
# Если сгенерировать выборку

def gen(p,a,grid):

    sample_gen=[]
    rate=10000
    for i in range(0,len(p)):
        sample0 = np.full(math.floor(p[i]*rate),grid[i]) #+ np.random.normal(grid[i],(grid[1]-grid[0])*1.5,size=math.floor(p[i]*rate))
        sample_gen= sample_gen+[i for i in list(sample0) if i>0]

    GG = gen_gamma(shapes='v,k,b',a=0.)
    v,k,b,_,_ = GG.fit(sample_gen, floc=0, fscale=1)

    x=np.linspace(-1,25,100)
    plt.hist(sample_gen,40,normed=1)
    plt.plot(x,GG.pdf(x,v,k,b))
    plt.show()

    gvg=GVG()
    x=np.linspace(-3,25,100)
    y=[gvg.pdf(x,a,v,k,b) for x in x]
    plt.hist(sample,40,normed=1)
    plt.plot(x,y,label=('fitted: a=%0.3f v=%0.3f k=%0.3f b=%0.3f' %(a,v,k,b) ))
    plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.03),prop={'size':10})

    plt.show()
    
gen(p,a,grid)
gen(new_p,new_a,new_grid)



In [121]:
def pdf_dist(params1,params2):
    gvg1=gvg()
    a1,v1,k1,b1 = params1
    a2,v2,k2,b2 = params2
    
    lower = min(gvg1.ppf(0.0001,a1,v1,k1,b1),gvg1.ppf(0.0001,a2,v2,k2,b2))
    upper = max(gvg1.ppf(0.9999,a1,v1,k1,b1),gvg1.ppf(0.9999,a2,v2,k2,b2))
    
    step=(upper-lower)/100
    
    grid=np.arange(lower,upper,step)
    dist=0
    for dot in list(grid):
        dist=dist+step*abs(gvg1.pdf(dot,a1,v1,k1,b1)-gvg1.pdf(dot,a2,v2,k2,b2))
    
    return dist

In [122]:
print(pdf_dist([0.849,0.399,15.6,0.009],[2,0.8,3,1]))
print(pdf_dist([a,res[0],res[1],res[2]],[2,0.8,3,1]))


0.0728194069713
1.09783235153

In [76]:
gvg1=GVG()
gvg2=GVG()
abs(gvg1.pdf(10,0.849,0.399,15.6,0.009)-gvg2.pdf(10,2,0.8,3,1))


Out[76]:
0.0029549988408428263

In [117]:
gvg1 = gvg(shapes='a,v,k,b')
gvg1.ppf(0.0001,0.849,0.399,15.6,0.009)


Out[117]:
-3.6471299743101104

In [118]:
min(1,2)


Out[118]:
1

In [ ]:
count=0
for ia in [-5,0,5]:
    for iv in [-1,1,10]:
        for ik in [1,10,100]:
            for ib in [0.01,0.1,1]:
                count += 1
                print('a=%f, v=%f, k=%f, b=%f' %(ia,iv,ik,ib))
                sample = gvg_rand(ia,iv,ik,ib,4000)
                grid = np.linspace(0.001,10,40)
                
                p,a = fit_mixture(sample,grid,0.03,verbose=0)
                
                sample_gen=[]
                rate=10000
                for i in range(0,len(p)):
                    sample0 = np.full(math.floor(p[i]*rate),grid[i])
                    sample_gen= sample_gen+[i for i in list(sample0) if i>0]
                    
                GG = gen_gamma(shapes='v,k,b',a=0.)
                v,k,b,_,_ = GG.fit(sample_gen, floc=0, fscale=1)
                
                gvg=GVG()
                x=np.linspace(-3,6,100)
                y=[gvg.pdf(x,a,v,k,b) for x in x]
                plt.hist(sample,40,normed=1)
                plt.plot(x,y,label=('generated: a=1,v=1.5,k=1,b=1 \nfitted: a=%0.3f v=%0.3f k=%0.3f b=%0.3f \nCoef error:' %(a,v,k,b) ))
                plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.03),prop={'size':10})

                plt.savefig('diplom/%d.jpg' %(count,ia,iv,ik,ib),dpi=100)

GH


In [ ]:
class GIG(rv_continuous):
    def _pdf(self, x, v, m,l):
        return (l**(v/2) * x**(v-1) * np.exp(-0.5 * (m/x + l*x)))/(2*m**(v/2)*kv(v,np.sqrt(m*l)))
    def _argcheck(self, v, m,l):
          return m>1e-10 and l > 1e-10 
    
class GH:
    def cdf(self,x,a,v,m,l):
        def integrand(z,x,a,v,m,l):
            gig = GIG(a=1e-10)
            return norm.cdf((x-a*z)/math.sqrt(z))*gig.pdf(z,v,m,l)
        return quad(integrand,0.0001,np.inf,args=(x,a,v,m,l),limit=1000)[0]
    def pdf(self,x,a,v,m,l):
        return (self.cdf(x,a,v,m,l)-self.cdf(x-0.001,a,v,m,l))/0.001

In [ ]:
def gh_rand(a,v, m,l,size=1000):
    gig = GIG(a=1e-10)
    rand_gig=gig.rvs(v, m,l, size=size)
    return norm.rvs(size=size) * np.sqrt(rand_gig) + a*rand_gig

In [ ]:
sample = gh_rand(1,1.5,1,1,2000)
grid = np.linspace(0.001,5,30)

In [ ]:
p,a = fit_mixture(sample,grid,0.01)

In [ ]:
mixture = Mixture(p,a,grid)
x=np.linspace(-6,20,100)
y=[mixture.pdf(x) for x in x]

plt.hist(sample,40,normed=1)
plt.plot(x,y)
plt.show()

In [ ]:
sample_gen=[]
rate=10000
for i in range(0,len(p)):
    sample0 = np.full(math.floor(p[i]*rate),grid[i])
    sample_gen= sample_gen+[i for i in list(sample0) if i>0]

In [ ]:
gig = GIG(shapes='v,m,l',a=0.)
v,m,l,_,_ = gig.fit(sample_gen, floc=0, fscale=1)

In [ ]:
x=np.linspace(-1,12,100)
plt.hist(sample_gen,40,normed=1)
plt.plot(x,gig.pdf(x,v,m,l))
plt.show()

In [ ]:
gh=GH()
x=np.linspace(-6,20,100)
y=[gh.pdf(x,a,v,m,l) for x in x]
plt.hist(sample,40,normed=1)
plt.plot(x,y)
plt.show()

In [ ]:
for i,j in zip(p,grid):
    print(j,'  ',i)

In [ ]:
gig.pdf(0.001 ,v,m,l)

In [ ]: