问题标签 [pymc]
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.
python - PYMC 安装 --fcompiler 无法识别
我正在尝试在 OSX Mountain lion 上安装 pymc。
我已经安装了 gfortran(来自http://gcc.gnu.org/wiki/GFortranBinaries#MacOS)并克隆了 pymc。
我尝试了以前的工作:'setup.py config --fcompiler=gfortran build',但这会产生错误:
用法:setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
或: setup.py --help [cmd1 cmd2 ...]
或: setup.py --help-commands
或: setup.py cmd --help
错误:选项 --fcompiler 无法识别
如果我只是这样做:'sudo python setup.py install' 那么我得到这个
.
.
.
clang:警告:编译期间未使用的参数:'-mno-fused-madd'
在 src/ft2font.cpp:3 包含的文件中:
在 src/ft2font.h:16 包含的文件中:
/usr/X11/include/ft2build.h:56:10:致命错误:找不到“freetype/config/ftheader.h”文件
包含 ^ 1 个错误。错误:安装脚本退出并出现错误:命令“clang”失败,退出状态为 1
有什么想法吗?
谢谢,
仁
python - 从直方图制作概率分布函数 (PDF)
假设我有几个直方图,每个直方图在不同的 bin 位置(在实轴上)都有计数。例如
如何标准化这些直方图,以便获得 每个 PDF 的积分在给定范围(例如 0 和 100)内加起来为 1 的PDF ?
我们可以假设直方图在预定义的 bin 大小(例如 10)上计数事件
例如,我见过的大多数实现都是基于从数据开始的高斯内核(参见scipy
和)。scikit-learn
就我而言,我需要从直方图中执行此操作,因为我无权访问原始数据。
更新:
请注意,所有当前答案都假设我们正在查看位于 (-Inf, +Inf) 中的随机变量。这可以作为粗略的近似值,但根据应用程序可能并非如此,其中变量可能定义在某个其他范围内[a,b]
(例如,在上述情况下为 0 和 100)
pymc - PyMC:逐步采样?
我想知道为什么采样器在逐步采样时速度非常慢。例如,如果我运行:
采样速度很快。但是,如果我运行:
采样速度较慢(采样越多,速度越慢)。
如果您想知道我为什么要问这个.. 好吧,我需要逐步采样,因为我想在采样器的每一步之后对变量的值执行一些操作。
有没有办法加快速度?
先感谢您!
- - - - - - - - - 编辑 - - - - - - - - - - - - - - - - ------------------------------
在这里,我更详细地介绍了具体问题:
我有两个竞争模型,它们是更大模型的一部分,该模型具有一个分类变量,作为两者之间的“开关”。
在这个玩具示例中,我有观察到的向量“Y”,可以用泊松或几何分布来解释。分类变量“switch_model”在 = 0 时选择几何模型,在 =1 时选择泊松模型。
在每个样本之后,如果 switch_model 选择几何模型,我希望泊松模型的变量不要更新,因为它们不会影响可能性,因此它们只是逐渐消失。如果 switch_model 选择 Poisson 模型,则相反。
基本上,我在每一步所做的就是通过手动将其向后退一步来“更改”未选择模型的值。
我希望我的解释和注释代码足够清楚。如果您需要更多详细信息,请告诉我。
python - 如何使用 pymc 制作离散状态马尔可夫模型?
我试图弄清楚如何正确地制作离散状态马尔可夫链模型pymc
。
作为一个例子(在nbviewer中查看),让我们制作一个长度为 T=10 的链,其中马尔可夫状态是二进制的,初始状态分布是 [0.2, 0.8] 并且在状态 1 中切换状态的概率是 0.01 2 它是 0.5
为了制作模型,我制作了一个状态变量数组和一个依赖于状态变量的转换概率数组(使用 pymc.Index 函数)
对模型进行采样表明状态边际是它们应该是的(与在 Matlab 中使用 Kevin Murphy 的 BNT 包构建的模型相比)
打印出来:
我的问题是——这似乎不是用 pymc 构建马尔可夫链的最优雅的方式。是否有一种不需要确定性函数数组的更简洁的方法?
我的目标是为更通用的动态贝叶斯网络编写一个基于 pymc 的包。
python - 我对如何在 Mac 上将包“pymc”安装到 iPython 中感到困惑
我是 Python 和 iPython 的新手。我在 Mac 上将包“pymc”安装到 iPython 时遇到问题。
我基本上遵循了这些说明。
这是我所做的:
首先,我从github下载了pymc源文件,然后在“Document”文件夹下解压,这个解压后的文件夹名为“pymc-devs-pymc-79bc2dc”;
其次,我从终端输入:
第三,我想让 canopy python 成为我的默认 python。在“pymc-devs-pymc-79bc2dc”目录下,我输入:
此步骤遵循https://support.enthought.com/entries/23646538-Make-Canopy-s-Python-be-your-default-Python-ie-on-the-PATH-。但我不确定我是否需要在不同的目录下输入这个。但是,输出对我来说看起来是正确的。
第四步,我尝试了两种不同的方法。
第一种方法:我在终端中输入以下代码:
但是,输入 python setup.py config_fc --fcompiler gfortran build 后返回错误。我想知道是否需要安装其他软件包。
第二种方法是我直接使用 pip :
安装成功。然后我进入下一步。
第五步,我还是按照指示做的
有一条警告消息:
警告:未找到 statsmodels 和/或 patsy,未导入 glm 子模块。
如果我做了什么不当的事,我会很困惑。
bayesian-networks - 如何使用 PyMC 估计贝叶斯网络中的参数
我想使用 PyMC 估计有向贝叶斯网络的参数。我遇到了一个实现喷水器网络的特定示例,该网络具有 3 个随机变量和为每个节点定义的条件概率分布 (CPD)。
但是,此示例使用确定性变量对 CPD 进行了编码。
是否可以将 2 或 3 个随机变量的联合或边际分布作为观测数据提供给确定性 PyMC 变量?换句话说,如果我的网络是 X -> Z <- Y 的形式,是否可以提供一组形式为 'x1,y1,z1' 的元组作为观察数据,以学习 CPD 的参数( Z|X,Y)?
pymc - 用可变速率拟合上限泊松过程
我正在尝试使用最大后验估计来估计泊松过程的速率,其中速率随时间变化。这是一个简化的示例,其速率呈线性变化 (λ = ax+b):
这工作正常。但是我的实际泊松过程受到确定性值的限制。由于我无法将观察到的值与确定性函数相关联,因此我正在为我的观察添加一个方差很小的正态随机函数:
此代码产生以下错误:
知道我在做什么错吗?
pymc - PyMC 3 中的确定性变量和 Fortran Scipy 函数
我正在尝试构建一个简单的 PyMC 3 模型,在该模型中,我估计潜在二元高斯密度中的两个切点和一个相关参数,为(多项式)计数向量产生四个预测概率。(我希望这最终会成为一个更大模型的一部分,在这个模型中,这些参数和其他参数是针对许多潜在的多元高斯密度进行估计的。)
因此,我想将切点 cx 和 cy 建模为正常随机变量,并将相关参数 rho 建模为缩放的 Beta 随机变量(作为旁注,我很想听到处理 rho 的更好方法 - PyMC 3截断了正常的随机变量,例如?)。我想使用函数 mvnun 来计算给定 cx、cy 和 rho 值的预测概率。函数 mvnun 是 scipy.stats.mvn 的一部分,它是一段编译的 Fortran 代码,有两个函数用于计算非常准确的多元正态 CDF 值。
如果我尝试将 rho 粘贴在相关矩阵 S 中,或者如果我将 cx 或 cy 放入指示积分限制的数组中,我会得到:
如果我对 cx、cy 和/或 rho 使用固定数值,mvnun 就可以正常工作(在“with model:”块内或外)。我一直在四处寻找,试图弄清楚为什么 PyMC RVs 会导致这个错误,但我很难过。我收集到 cx、cy 和 rho 是 theano TensorVariables,但我无法弄清楚关于 theano TensorVariables 的什么(如果有的话)会导致这些问题。
尝试使用 PyMC RV 作为参数调用 Fortran 函数是否存在根本问题?还是我的代码在某些方面存在缺陷?两个都?完全不同的东西?
我是 PyMC 的新手,我安装 PyMC 3 时认为它是当前版本(我发誓说几周前我安装它时没有 alpha 版本)。也许我应该安装 2.3 并弄清楚如何把它和那个放在一起?
无论如何,任何有关如何解决问题的建议都将不胜感激。
这是我的代码:
python - 如何使用 pymc 为贝叶斯网络制作条件概率表 (CPT)
我想建立一个依赖于其他分类变量的离散(pymc.Categorical)变量的贝叶斯网络。作为一个最简单的例子,假设变量a和b是分类变量,并且b取决于a
这是使用 pymc 对其进行编码的尝试(假设a采用三个值之一,b采用四个值之一)。想法是使用 pymc 从数据中学习 CPT 分布。
如果我们绘制这个模型,它看起来像这样
然而,运行这段代码我们得到一个错误:
显然,pymc 可以将 Dirichlet 变量作为分类变量的参数。当 Categorical 变量将 Dirichlet 变量作为其参数时,它知道期望 k-1 个概率向量,并假设第 k 个概率将向量求和为 1。但是,当 Dirichlet 变量是一个确定性变量,这是我制作 CPT 所需要的。
我会以正确的方式解决这个问题吗?如何解决表示不匹配的问题?我应该提一下,我对 pymc 和 Python 比较陌生。
这个问题与上一个关于使用 pymc 制作离散状态马尔可夫模型的问题有关
python - PyMC 多元线性回归
我正在尝试拟合共享相同截距的几条线。
计算出的 MAP 估计值与实际值相差甚远。这些值也对 和 的下限和上限sigmas
、a
实际值a
(例如a = [.2, .5, .7]
会给我很好的估计)或进行回归的行数非常敏感。
这是执行我的线性回归的正确方法吗?
ps:我尝试对 sigmas 使用指数先验分布,但结果并不好。