Взвешенная выборка PyMC - PullRequest
       70

Взвешенная выборка PyMC

0 голосов
/ 04 сентября 2018

Большинство моих выборок являются повторениями, есть ли способ дать вес каждой выборке, который бы представлял, как часто он должен проходить только через уникальный набор?

Или есть способ манипулирования функцией логарифма (вероятности), которую я определил для достижения этого эффекта?

# simple example for data:
data = [(0,1,10), (0,2,10), (1,0,20), (1,0,20), (1,0,20), (0,0,49), (1,1,12)]

member_a = mc.Uniform('a', lower=-1.0, upper=0.0)
member_d = mc.Uniform('d', lower=-1.0, upper=0.0)

@mc.stochastic(observed=True, dtype=int)
def logLikelihood(value=data, a=member_a, d=member_d):
    ratesMatrix = np.zeros((2,2))
    ratesMatrix[0,0] = a
    ratesMatrix[0,1] = -a
    ratesMatrix[1,0] = -d
    ratesMatrix[1,1] = d

    r = []
    t = []
    for i in range(len(data)):
        r.append(ratesMatrix[int(value[i][0]), int(value[i][1])])
        t.append(value[i][2])
    r = np.array(r, dtype=np.float64)
    t = np.array(t, dtype=np.float64)

model = mc.MCMC([member_a,member_d,logLikelihood])
trace = model.sample(iter=5000)
...