繁体   English   中英

PyMC3 中的 SARIMAX model

SARIMAX model in PyMC3

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想在 PyMC3 中写下以下 SARIMAX model (2,0,0) (2,0,0,12) 来对其系数进行贝叶斯估计,但我不知道如何从季节性部分开始有没有人试过像这样的东西?

with pm.Model() as ar2:
    theta = pm.Normal("theta", 0.0, 1.0, shape=2)
    sigma = pm.HalfNormal("sigma", 3)
    likelihood = pm.AR("y", theta, sigma=sigma, observed=data)

    trace = pm.sample(
        1000,
        tune=2000,
        random_seed=13,
    )
    idata = az.from_pymc3(trace)
2 个回复

尽管如果您能得到一个专门使用 PyMC3 的答案,那将是最好的(例如最佳性能),如果尚不存在,还有另一种方法可以做到这一点,即使用SARIMAX中的 SARIMAX model 与 PyMC3 结合。

这里有太多细节无法重复完整的答案,但基本上你包装了与 Statsmodels SARIMAX model 相关的对数似然和梯度方法。 这是一个示例 Jupyter 笔记本的链接,它显示了如何执行此操作:

https://www.statsmodels.org/stable/examples/notebooks/generated/statespace_sarimax_pymc3.html

我不确定你是否仍然需要它,但是,扩展 cfulton 的答案,这里是如何修复statsmodels示例中的错误( https://www.statsmodels.org/dev/examples/notebooks/generated/ statespace_sarimax_pymc3.html ,单元格 8):

with pm.Model():
    # Priors
    arL1 = pm.Uniform('ar.L1', -0.99, 0.99)
    maL1 = pm.Uniform('ma.L1', -0.99, 0.99)
    sigma2 = pm.InverseGamma('sigma2', 2, 4)

    # convert variables to tensor vectors
    # # this is wrong:
    theta = tt.as_tensor_variable([arL1, maL1, sigma2])
    # # this is correct:
    theta = tt.as_tensor_variable([arL1, maL1, sigma2], 'v')

    # use a DensityDist (use a lamdba function to "call" the Op)
    # # this is wrong:
    # pm.DensityDist('likelihood', lambda v: loglike(v), observed={'v': theta})
    # # this is correct:
    pm.DensityDist('likelihood', lambda v: loglike(v), observed=theta)


    # Draw samples
    trace = pm.sample(ndraws, tune=nburn, discard_tuned_samples=True, cores=4)

我不是 pymc3/theano 专家,但我认为该错误意味着 Theano 未能将张量的名称与值相关联。 如果您在开头定义名称值,它就可以工作。

我知道这不是您问题的直接答案。 尽管如此,我希望它有所帮助。

1 在 PyMC3 中更新模型

我目前正在 PyMC3 中构建以下 model: 但是,我收到错误消息:“调整后有 159 个分歧。 增加target_accept或重新参数化。 最后是:“对于某些参数,有效样本的数量小于 10%。” 使用这种步进方法,我得到的分歧最少。 我怎样才能摆脱它们? 我知道有可能重新参数化,但是当我的系 ...

2 pymc3中的条件Logit model

我正在尝试在 pymc3 中创建一个条件 logit model。 我有生成参数的代码,这些参数可以识别我的玩具问题中的正确类别。 然而,它产生的参数远非最优。 下面我展示了一个生成 MAP 的版本。 使用扩散先验,这应该有点接近 MLE,但很容易看出(0,较大的负数,0)的 beta 向量将给出 ...

3 Pymc3中的分类混合模型

我是Pymc3的新手,正在尝试创建https://en.wikipedia.org/wiki/Mixture_model#Categorical_mixture_model中显示的分类混合物模型。 我在连接'x'变量时遇到困难。 我认为这是因为我必须使z变量具有确定性,但是在分配'x'的那一 ...

2015-08-28 00:43:44 1 666   pymc3
4 在pymc3中创建Emax模型

我正在尝试根据此视频中的数据和模型使用pymc3建立Emax模型。(大约40分钟) https://www.youtube.com/watch?v=U9Nf-ZYHRQA&feature=youtu.be&list=PLvLDbH2lpyXNGV8mpBdF7EFK9LQJ ...

2016-06-07 13:20:14 1 58   pymc3
5 将 pymc3 模型包装在一个函数中

有人知道在标准 Python 3 函数中存储pymc3模型的方法吗? 我希望将此函数存储在本地以在Jupyter环境中多次调用,其功能旨在在模型实例化后返回视觉效果。 该函数接受控制和实验条件,并在执行建模和MCMC之前将它们转换为numpy数组: def bayesian_ab_test ...

6 pymc3在Jupyter Notebook中-模型未“重置”

我正在pymc3中建立模型的原型,在networkx digraph对象指定的变量之间具有依赖关系结构。 这似乎工作正常。 但是,我在pymc3中可以说是“模型内存”或“模型状态”。 请允许我澄清一下: 在代码中,有一个名为build_mdl(data_set,digraph) ,该方法接收数据集 ...

7 PyMC3模型解释

我是PyMC3的新手,所以我做了一些尝试,试图学习如何使用它。 我想尝试以Think Bayes一书中的“欧元问题”为模型。 快速总结问题: 一枚硬币被翻转250次 140个头和110个尾巴 这是一个公平的硬币吗? (正面概率为0.5吗?) 为了使用PyMC3对其进行建模,我做了 ...

9 PyMC3高斯混合模型

我一直在这里关注PyMC3的高斯混合模型示例: https : //github.com/pymc-devs/pymc3/blob/master/pymc3/examples/gaussian_mixture_model.ipynb并且使它与人工数据集很好地协同工作。 我用真实的数据集尝 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM