标签: pymc3

将pyMC2贝叶斯A/B测试示例移植到pyMC3

我正在努力学习pyMC 3并遇到一些麻烦.由于pyMC3的教程有限,我使用的是贝叶斯黑客方法.我试图在贝叶斯A/B测试示例中将pyMC 2代码移植到pyMC 3,但没有成功.从我所看到的,模型没有考虑到观察结果.

我必须从示例中做一些更改,因为pyMC 3是完全不同的,所以应该是这样的:import pymc as pm

# The parameters are the bounds of the Uniform.
p = pm.Uniform('p', lower=0, upper=1)

# set constants
p_true = 0.05  # remember, this is unknown.
N = 1500

# sample N Bernoulli random variables from Ber(0.05).
# each random variable has a 0.05 chance of being a 1.
# this is the data-generation step
occurrences = pm.rbernoulli(p_true, N)

print occurrences  # Remember: Python treats True == 1, …
Run Code Online (Sandbox Code Playgroud)

python bayesian pymc3

6
推荐指数
1
解决办法
1515
查看次数

如何在PyMC3中对多个链进行采样

我正在尝试在PyMC3中对多个链进行采样.在PyMC2中我会做这样的事情:

for i in range(N):
    model.sample(iter=iter, burn=burn, thin = thin)
Run Code Online (Sandbox Code Playgroud)

我应该如何在PyMC3中做同样的事情?我看到'sample'方法中有一个'njobs'参数,但是当我为它设置一个值时它会抛出一个错误.我想使用采样链来获得'pymc.gelman_rubin'输出.

pymc pymc3

6
推荐指数
2
解决办法
2685
查看次数

使用`LKJCorr`先验修改PyMC3中的BPMF:使用`NUTS的PositiveDefiniteError

我之前实现了原始的贝叶斯概率矩阵分解(BPMF)模型pymc3.请参阅我之前的问题以供参考,数据源和问题设置.根据@twiecki对该问题的回答,我已经使用priors实现了模型的变体,LKJCorr用于相关矩阵和标准偏差的均匀先验.在原始模型中,协方差矩阵是从Wishart分布中提取的,但由于当前的局限性pymc3,Wishart分布无法从中正确采样.这个松散相关问题的答案LKJCorr先验的选择提供了简洁的解释.新模型如下.

import pymc3 as pm
import numpy as np
import theano.tensor as t


n, m = train.shape
dim = 10  # dimensionality
beta_0 = 1  # scaling factor for lambdas; unclear on its use
alpha = 2  # fixed precision for likelihood function
std = .05  # how much noise to use for model initialization

# We will use separate priors for sigma and …
Run Code Online (Sandbox Code Playgroud)

python bayesian mcmc pymc pymc3

6
推荐指数
1
解决办法
933
查看次数

pymc3:具有多个obsesrved变量的分层模型

我有一个简单的分层模型,有很多个人,我从正态分布中得到小样本.这些分布的均值也遵循正态分布.

import numpy as np

n_individuals = 200
points_per_individual = 10
means = np.random.normal(30, 12, n_individuals)
y = np.random.normal(means, 1, (points_per_individual, n_individuals))
Run Code Online (Sandbox Code Playgroud)

我想使用PyMC3从样本中计算模型参数.

import pymc3 as pm
import matplotlib.pyplot as plt

model = pm.Model()
with model:
    model_means = pm.Normal('model_means', mu=35, sd=15)

    y_obs = pm.Normal('y_obs', mu=model_means, sd=1, shape=n_individuals, observed=y)

    trace = pm.sample(1000)

pm.traceplot(trace[100:], vars=['model_means'])
plt.show()
Run Code Online (Sandbox Code Playgroud)

mcmc样本

我期待后面model_means看起来像我原来的手段分布.但它似乎趋同于30手段的意思.如何从pymc3模型中恢复均值(我的例子中为12)的原始标准偏差?

bayesian mcmc pymc3

6
推荐指数
1
解决办法
1173
查看次数

使用PyMC3进行增量模型更新

是否可以在pyMC3中逐步更新模型.我目前无法找到相关信息.所有文档始终使用先验已知数据.

但在我的理解中,贝叶斯模型也意味着能够更新信念.这在pyMC3中是否可行?我在哪里可以找到相关信息?

谢谢 :)

python bayesian pymc pymc3

6
推荐指数
1
解决办法
1408
查看次数

PYMC3季节变量

我是比较新的PYMC3,我试图实现贝叶斯结构时间序列(BSTS)没有回归系数,比如模型拟合这里在R.模型如下:

模型

我可以使用GaussianRandomWalk来实现局部线性趋势,如下所示:

delta = pymc3.GaussianRandomWalk('delta',mu=0,sd=1,shape=99)
mu = pymc3.GaussianRandomWalk('mu',mu=delta,sd=1,shape=100)
Run Code Online (Sandbox Code Playgroud)

但是,我对如何在PYMC3中编码季节性变量(tau)感到困惑。我是否需要参加自定义的随机游走课程,还是有其他技巧?

python bayesian pymc pymc3

6
推荐指数
1
解决办法
578
查看次数

Python 3.8 和 macOS15 (Catalina) 中 pymc3 的 Theano 锁定问题

最近,我使用最新的 Anaconda Navigator(使用 Python 3.8)将 macOS 升级到了 macOS15 (Catalina)。当我运行pymc3时,我遇到:

INFO (theano.gof.compilelock): Waiting for existing lock by process '38830' (I am process '40110')
INFO (theano.gof.compilelock): To manually release the lock, delete /Users/STsutsui/.theano/compiledir_macOS-10.15.6-x86_64-i386-64bit-i386-3.8.3-64/lock_dir
Run Code Online (Sandbox Code Playgroud)

由于我对UNIX不熟悉,我不知道该怎么办。欢迎任何帮助。

先感谢您。

ST筒井

python pymc3

6
推荐指数
1
解决办法
286
查看次数

在 pymc3 之外使用 pymc3 可能性/后验:如何?

出于比较目的,我想利用 PyMC3 之外的后验密度函数。

对于我的研究项目,我想了解 PyMC3 与我自己定制的代码相比的性能如何。因此,我需要将它与我们自己的内部采样器和似然函数进行比较。

我想我想出了如何调用内部PyMC3后验的方法,但是感觉很别扭,想知道是否有更好的方法。现在我正在手动转换变量,而我应该能够将参数字典传递给 pymc 并获得后验密度。这可能以直接的方式进行吗?

非常感谢!

演示代码:

import numpy as np
import pymc3 as pm
import scipy.stats as st

# Simple data, with sigma = 4. We want to estimate sigma
sigma_inject = 4.0
data = np.random.randn(10) * sigma_inject

# Prior interval for sigma
a, b = 0.0, 20.0

# Build PyMC model
with pm.Model() as model:
    sigma = pm.Uniform('sigma', a, b)      # Prior uniform between 0.0 and 20.0
    likelihood = pm.Normal('data', 0.0, sd=sigma, observed=data)

# …
Run Code Online (Sandbox Code Playgroud)

numpy bayesian python-2.7 theano pymc3

5
推荐指数
1
解决办法
545
查看次数

在 PyMC3 中从用户提供的目标密度中采样

是否可以通过简单的方式从用户提供的 PyMC3 目标度量中进行采样?即我希望能够提供黑盒函数logposterior(theta)以及grad_logposterior(theta)那些和样本,而不是在 PyMC3s 建模语言中指定模型。

pymc pymc3

5
推荐指数
1
解决办法
279
查看次数

如何通过 PYMC3 从 GPU 中受益

我发现使用 GPU 与 CPU 时 PYMC3 速度的差异为零。

我正在拟合一个需要 500K+ 样本才能收敛的模型。显然它非常慢,所以我尝试使用 GPU 来加快速度(在 EC2 上使用 GPU 实例)。Theano 报告正在使用 GPU,因此我相信 CUDA/Theano 配置正确。然而,我强烈怀疑 Pymc3 没有利用 GPU。

  • 我是否需要显式将变量设置为 TensorType(float32, scalar) ?目前,它们是 float64。
  • 是否只有部分采样器/可能性可以从 CUDA 中受益?我正在拟合基于泊松的模型,因此使用 Metropolis 采样器,而不是 NUTS
  • 有没有办法检查 pymc3 是否正在使用 GPU?

amazon-ec2 theano pymc pymc3

5
推荐指数
0
解决办法
3101
查看次数

标签 统计

pymc3 ×10

bayesian ×6

pymc ×6

python ×5

mcmc ×2

theano ×2

amazon-ec2 ×1

numpy ×1

python-2.7 ×1