PYMC3开关点分析

问题描述

我试图找到一个切换点,并为后代获得一些极高的价值。具体来说,lambda_1和tau似乎没有多大意义。数据集如下所示:

Graphed Data

我一直在使用类似于此处找到的手机数据示例的方法: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)

我期望这两个分布将落在数据集中的某个位置,就像下面的示例一样

Expected results

但是,我的结果看起来像是一团糟:

Actual results

我一直在盲目地调整诸如样本大小,调整量和测试值之类的变量,但它们似乎并没有以任何有意义的方式改善结果。我将很高兴为您提供有关如何解决该问题的建议,以及可以帮助我更好地了解其最初原因的信息。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...