草庐IT

python - 涉及离散变量时 pymc3 与 pymc2 的困难

我正在更新一些我使用pymc2到pymc3的计算,当我的模型上有一些离散随机变量时,我在采样器行为方面遇到了一些问题。例如,考虑以下使用pymc2的模型:importpymcaspmN=100data=10p=pm.Beta('p',alpha=1.0,beta=1.0)q=pm.Beta('q',alpha=1.0,beta=1.0)A=pm.Binomial('A',N,p)X=pm.Binomial('x',A,q,observed=True,value=data)它并不能真正代表任何东西,它只是一个模型,其中一个未观察到的变量是离散的。当我使用pymc2对该模型进行采样时,我得

python - PYMC3 贝叶斯预测锥

我还在学习PYMC3,但是我在文档中找不到关于以下问题的任何内容。考虑来自thisquestion的贝叶斯结构时间序列(BSTS)模型没有季节性。这可以在PYMC3中建模如下:importpymc3,numpy,matplotlib.pyplot#generatesometestdatat=numpy.linspace(0,2*numpy.pi,100)y_full=numpy.cos(5*t)y_train=y_full[:90]y_test=y_full[90:]#specifythemodelwithpymc3.Model()asmodel:grw=pymc3.GaussianR

python - 用 PyMC 解决反问题

假设我们在X上有一个先验(例如X~Gaussian)和一个前向运算符y=f(x)。进一步假设我们通过实验观察到了y,并且这个实验可以无限重复。假设输出Y为高斯分布(Y~Gaussian)或无噪声(Y~Delta(observation))。如何根据观察结果不断更新我们对X的主观知识程度?我已经用PyMC尝试了以下模型,但似乎我遗漏了一些东西:frompymcimport*xtrue=2#thisvalueisunknownintherealapplicationx=rnormal(0,0.01,size=10000)#initialguessforiinrange(5):X=Norma

python - pymc3 : Multiple observed values

我有一些观测数据想估计参数,我认为这是试用PYMC3的好机会。我的数据结构为一系列记录。每条记录都包含一对与固定的一小时时间段相关的观察结果。一项观察是给定时间内发生的事件总数。另一个观察结果是该时间段内的成功次数。因此,例如,一个数据点可能指定在给定的1小时内,总共有1000个事件,而这1000个事件中有100个是成功的。在另一个时间段内,可能总共有1000000个事件,其中120000个是成功的。观察的方差不是恒定的,取决于事件的总数,我想控制和建模的部分原因是这种影响。我这样做的第一步是估计潜在的成功率。我准备了下面的代码,旨在通过使用scipy生成两组“观察到的”数据来模拟这种

python - PyMC3 中的隐马尔可夫

我有一个多元蒙特卡洛隐马尔可夫问题要解决:x[k]=f(x[k-1])+Bu[k]y[k]=g(x[k])哪里:x[k]thehiddenstates(Markovdynamics)y[k]theobserveddatau[k]thestochasticdrivingprocessPyMC3是否已经足够成熟来处理这个问题,还是我应该继续使用2.3版?其次,非常感谢任何对PyMC框架中HM模型的引用。谢谢。--亨克 最佳答案 我对PyMC2.x做了类似的事情。我的你虽然不依赖时间。这是我的例子。#we'reusing`some_tau

python - 定义自定义 PyMC 发行版

这可能是个愚蠢的问题。我正在尝试使用PyMC中的MCMC评估将数据拟合到一个非常奇怪的PDF。对于这个例子,我只想弄清楚如何适应我手动输入正态PDF的正态分布。我的代码是:data=[];forcountinrange(1000):data.append(random.gauss(-200,15));mean=mc.Uniform('mean',lower=min(data),upper=max(data))std_dev=mc.Uniform('std_dev',lower=0,upper=50)#@mc.potential#defdensity(x=data,mu=mean,sig

python - PyMC3 & Theano - Theano 代码在导入 pymc3 后停止工作

一些简单的theano代码完美运行,当我导入pymc3时停止运行为了重现错误,这里有一些片段:#InitialTheanoCode(thisworks)importtheano.tensorastsrx=tsr.dscalar('x')y=tsr.dscalar('y')z=x+y#Snippet1importpymc3aspmimporttheano.tensorastsrx=tsr.dscalar('x')y=tsr.dscalar('y')z=x+y#Snippet2importtheano.tensorastsrimportpymc3aspmx=tsr.dscalar('x')

python - 如何加速 PyMC 马尔可夫模型?

有没有办法加速这个简单的PyMC模型?在20-40个数据点上,拟合大约需要5-11秒。importpymcimporttimeimportnumpyasnpfromcollectionsimportOrderedDict#priorprobabilityofrainp_rain=0.5variables=OrderedDict()#rainobservationsdata=[True,True,True,True,True,False,False,False,False,False]*4num_steps=len(data)p_rain_given_rain=0.9p_rain_giv

python - 使用pymc用MCMC拟合两个正态分布(直方图)?

我正在尝试拟合用CCD上的光谱仪检测到的线轮廓。为了便于考虑,我提供了一个演示,如果解决了,它与我实际上想要解决的问题非常相似。我看过这个:https://stats.stackexchange.com/questions/46626/fitting-model-for-two-normal-distributions-in-pymc以及其他各种问题和答案,但他们所做的事情与我想做的事情根本不同。importpymcasmcimportnumpyasnpimportpylabaspldefGaussFunc(x,amplitude,centroid,sigma):returnampli

python - 从 pymc3 中的推断参数生成预测

我遇到了一个常见问题,我想知道是否有人可以提供帮助。我经常想在两种模式下使用pymc3:训练(即实际运行参数推断)和评估(即使用推断参数生成预测)。一般来说,我想要一个后验预测,而不仅仅是逐点估计(这是贝叶斯框架的一部分好处,不是吗?)。当您的训练数据固定时,这通常通过将类似形式的模拟变量添加到观察变量来完成。例如,frompymc3import*withbasic_model:#Priorsforunknownmodelparametersalpha=Normal('alpha',mu=0,sd=10)beta=Normal('beta',mu=0,sd=10,shape=2)sig