问题描述
我试图找到一个切换点,并为后代获得一些极高的价值。具体来说,lambda_1和tau似乎没有多大意义。数据集如下所示:
我一直在使用类似于此处找到的手机数据示例的方法:https://nbviewer.jupyter.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter1_Introduction/Ch1_Introduction_PyMC2.ipynb
我的模型如下:
with pm.Model() as model:
alpha = 1.0/np.array(pos_df['positiveIncrease']).mean()
lambda_1 = pm.Exponential("lambda_1",alpha)
lambda_2 = pm.Exponential("lambda_2",alpha)
tau = pm.DiscreteUniform("tau",lower=0,upper=n_date)
idx = np.arange(n_date)
lambda_ = pm.math.switch(tau > idx,lambda_1,lambda_2)
observation = pm.Poisson("obs",lambda_,observed = pos_df['positiveIncrease'])
step = pm.Metropolis()
trace = pm.sample(10000,tune=5000,step=step)
当我运行 model.check_test_point()时,我得到以下信息:
lambda_1_log__ -1.06
lambda_2_log__ -1.06
tau -5.03
obs -26857.07
Name: Log-probability of test_point,dtype: float64
我的lambda_2_samples是[61.56487732、61.56487732、60.23909822,...,61.21167046、61.39722331、61.39722331]
我的lambda_1_samples是[715.19559043、715.19559043、716.98035641,...,717.35203171、717.35203171、717.35203171]
我的tau_samples也是:([[125,125,125,...,125,125,125],dtype = int64)
我期望这两个分布将落在数据集中的某个位置,就像下面的示例一样
但是,我的结果看起来像是一团糟:
我一直在盲目地调整诸如样本大小,调整量和测试值之类的变量,但它们似乎并没有以任何有意义的方式改善结果。我将很高兴为您提供有关如何解决该问题的建议,以及可以帮助我更好地了解其最初原因的信息。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)