Обновление моделей в PyMC3 - PullRequest
0 голосов
/ 05 ноября 2019

В настоящее время я строю следующую модель в PyMC3:

obs_data = 25


with pm.Model() as model:
      xct = pm.Normal('xct',mu = 315.5, sigma = 48)
       #xct = np.random.normal(315.5,48) 
       a = pm.Normal('a',mu=0, sigma = 2.0)


# specify the time that the data points comes in at
       t = 15


       g_e = 2.5
       f_e = 5.0


       RH_ref = 65


       RH_real = pm.Beta('RH_real',alpha=40.0,beta = 100.0)


       k_e = ( (1 - (RH_real/100)**f_e)/ (1 - (RH_ref/100)**f_e)) ** g_e



       b_c = pm.Normal('b_c', mu=-0.567 , sigma = 0.024)
       t_c = 2.0
       k_c = (t_c/7)**b_c



      k_t = pm.Normal('k_t',mu=1.25,sigma = 0.35)

      C_s = pm.Normal('C_s',mu = 0.00082,sigma = 0.0001)


      t0 = 0.767 

      tow = 0.1

      bw = pm.Normal('bw',mu =0.446,sigma = 0.163)
      p_sr = 0.1

      W_t = (t0/t) **(((p_sr * tow)**bw)/2)


      g = a + np.sqrt(2 * k_e * k_c * (k_t * Racc_inv + xct) * C_s) * np.sqrt(t)* W_t


      output = pm.Lognormal('output',mu = g, sigma  = 2, observed = obs_data)
      step0 = pm.NUTS([xct],target_accept = 0.9)
      step1 = pm.NUTS([a],target_accept = 0.9)
      step2 = pm.NUTS([b_c],target_accept = 0.9)
      step3 = pm.NUTS([k_t],target_accept = 0.9)
      step4 = pm.NUTS([RH_real],target_accept = 0.9)
      step5 = pm.NUTS([Racc_inv],target_accept = 0.9)
      step6 = pm.NUTS([epsilon_t],target_accept = 0.9)
      step7 = pm.NUTS([C_s],target_accept = 0.9)
      trace = pm.sample(13000, init='advi+adapt_diag_grad', step=[step0, step1, step2, 
      step3,step4,step5,step6,step7], cores=4, tune=8000,chains = 8)

Однако я получаю ошибки: «После настройки было 159 расхождений. Увеличьте target_accept или перенастройте. и в самом конце: «Количество эффективных выборок для некоторых параметров меньше 10%».

Используя этот шаговый метод, я получил наименьшее количество расхождений. Как я могу избавиться от них? Я знаю, что есть возможность репараметризации, но как я могу это сделать, когда моя система настраивается определенным образом?

Существуют ли другие подходы к выборке?

...