问题标签 [pymc3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pymc - pymc3 中的 GARCH 模型:如何循环随机变量?
我正在尝试按照本示例的思路在 pymc3 中实现 GARCH 模型。为此,我尝试如下实现 GARCH(1, 1) 分布
澄清一下,这是 GARCH(1,1) 模型的对数似然。波动过程是一个时间序列,其中时间 t 的波动取决于时间 t-1 的残差。但是要确定时间 t-1 的残差,我们需要时间 t-1 的波动率。
无论如何,这对我的问题并不重要。重要的是不能通过矢量化 for 循环来计算可能性(这是在帖子顶部的链接中完成的)。因此,您需要一个显式循环,它在每一步首先更新波动率,然后确定观察到的回报的可能性。
但是上面的代码不起作用。如果我尝试建立一个像
“SP500.csv”文件可以在例如github上找到
此代码生成错误:
我很确定这是因为 for 循环与 theano 冲突。我该如何处理?
bayesian - PyMC3 中的条件先验
我正在尝试建立一个模型,其中分配给分布的先验取决于特定值,并且该值是另一个被采样的变量。例如,根据概率 p 的伯努利试验对正确回答问题的学生进行建模。如果学生有给定的先决条件(他们自己是模型的一部分),p 应该从 Beta(20,5) 中得出。如果不是,p 应该从 Beta(5,20) 中得出。
我用下面的代码让它在 PyMC2 中工作:
换句话说,分配给伯努利随机变量的先验是一个确定性函数,它根据某个其他值的 SAMPLED 值返回一个随机变量,在本例中为 theta1[i]。
我无法弄清楚如何在 PyMC3 中执行此操作,因为 @deterministic 装饰器不再存在,并且确定性函数必须将输入/输出作为 Theano 变量。
我真的很感激任何见解或建议!
pymc3 - Pymc3:Dirichlet 先验参数的观测值
我写了一些不起作用的小 pymc3 代码。
我收到一个 theano 错误“IndexError: index out of bounds”错误消息,但我不知道为什么。我尝试了上面代码的不同变体,但它们都不起作用。
如果您对代码的含义感到好奇,这是为了在观察多项式计数后检查狄利克雷参数的后验:(10,3,4)对于具有“均匀”狄利克雷先验的三个类(alpha=[1 .,1.,1.]) 导致 (10.,3.,4.)
简单直接采样:
python - 使用 PyMC3 重复测量的简单线性回归
我正在尝试重现 John Kruschke 的书“做贝叶斯数据分析”(第 2 版)中的示例。这个例子来自第 16 章关于重复测量的简单线性回归。我想我只是在这种情况下指定似然函数。我从John Kruschke 的网站下载了数据并用它制作了一个 csv。这是我在书中遵循他的 R 代码的代码:
任何帮助将非常感激。
python - Theano 步骤给出错误格式的文件错误
我正在尝试复制示例 Getting Started PyMC3。
在 Windows 2012 R2 上。
该步骤
from pymc3 import Model, Normal, HalfNormal
给出
我有 gcc
我错过了什么?
谢谢
pymc3 - 使用 pymc3 进行逻辑回归 - 在 glm 中构建的先验是什么?
在逻辑回归的情况下,通过将 glm 与 pymc3 一起使用,我无法找到确切的解释。所以我将 GLM 版本与显式 pymc3 模型进行了比较。我开始为文档编写 ipython 笔记本,请参阅:
http://christianherta.de/lehre/dataScience/machineLearning/mcmc/logisticRegressionPymc3.slides.php
我不明白的是:
GLM 中的参数使用什么先验?我假设它们也是正态分布的。与 GLM 中的构建相比,我的显式模型得到了不同的结果。(见上面的链接)
使用较少的数据,采样会被卡住和/或我得到的结果非常糟糕。有了更多的训练数据,我无法观察到这种行为。这对mcmc来说正常吗?
笔记本上有更多问题。
感谢您的回答。
python - 如何加速 PyMC 马尔可夫模型?
有没有办法加速这个简单的 PyMC 模型?在 20-40 个数据点上,拟合大约需要 5-11 秒。
只有 40 个数据点,运行需要 11 秒:
(80分需要20秒)。这是一个玩具示例。Lambda()
确定转换的内部表达式实际上更复杂。这种基本的代码结构是灵活的(而使用转换矩阵对模型进行编码不太灵活)。有没有办法保持类似的代码结构但获得更好的性能?如有必要,很高兴切换到 PyMC3。谢谢。
pymc3 - 如何使用 pymc3 独立采样
我正在使用一个简单的二元正态模型,该模型具有一些非常规的先验。我遇到的主要问题是我的后验结果从一次运行到下一次不一致,我猜这与连续样本之间的高度相关性问题有关。这是我的具体问题。
获得 N 个独立样本的最佳方法是什么?目前,我一直在调用 sample() 来获得一个大链(例如长度 10,000),然后从 1,000 开始每 100 个样本。但是现在看看其中一个参数的自相关曲线,看起来我需要至少每 500 个样本进行一次!(我还可以使用互信息来更好地了解滞后之间的依赖关系。)
我一直在遵循pymc3 教程中随机波动率示例中描述的拟合过程。特别是我首先找到 MAP,然后用它生成一个 NUTS() 对象,然后取一个简短的样本,然后使用它生成另一个 NUTS() 对象,使用 gamma=0.25 (???),最后得到我的大样本。我不知道这是否合适或者我是否需要 gamma=0.25。
此外,在同一个示例中,还有指数分布的测试值。我不知道我是否需要这些。(默认使用均值有什么问题?)
这是我正在使用的实际模型。
python - pymc3 SQLite 后端,指定要跟踪的变量列表
我正在拟合一个分层模型,其中一个变量的形状>10K,并且该模型需要 500+k 个样本才能收敛。我想使用持久后端进行跟踪,以便以后可以比较不同的模型。我尝试使用 SQLite 后端,出现以下错误:
/opt/conda/lib/python2.7/site-packages/pymc3/backends/sqlite.pyc in _create_table(self) 123 语句 = template.format(table=varname, 124 value_cols=colnames) --> 125 self.db .cursor.execute(语句)126 127 def _create_insert_queries(自我,链):
OperationalError:individual_freq 上的列太多
我认为这是因为我试图为我的所有变量保存跟踪,包括形状> 10K 的向量变量。我不需要/不想为向量保存跟踪 - 我只对顶级变量感兴趣。使用内存后端时,我可以像这样显式指定变量列表:
但是在使用 SQLite 时,我只能指定:
我想做的是这样的:
可能吗?这应该是功能请求吗?感谢您的任何建议。