Python PyMC3,坚果采样器,什么';这里发生了什么事?

Python PyMC3,坚果采样器,什么';这里发生了什么事?,python,bayesian,pymc3,Python,Bayesian,Pymc3,有人能给我指一下能解释我所看到的东西的文件吗 Jupyter笔记本上的粉红色东西让我觉得有些不对劲 使用PyMC3(顺便说一句,这是一个类的练习,我不知道我在做什么) 我插入数字,最初在对角线上得到一个0左右的错误,将alpha_est和rate_est交换为1/alpha_est和1/rate_est(并停止得到错误),但我仍然得到了粉红色的东西 此代码随练习而来: # An initial guess for the gamma distribution's alpha and beta #

有人能给我指一下能解释我所看到的东西的文件吗

Jupyter笔记本上的粉红色东西让我觉得有些不对劲

使用PyMC3(顺便说一句,这是一个类的练习,我不知道我在做什么)

我插入数字,最初在对角线上得到一个0左右的错误,将
alpha_est
rate_est
交换为
1/alpha_est
1/rate_est
(并停止得到错误),但我仍然得到了粉红色的东西

此代码随练习而来:

# An initial guess for the gamma distribution's alpha and beta
# parameters can be made as described here: 
# https://wiki.analytica.com/index.php?title=Gamma_distribution

alpha_est = np.mean(no_insurance)**2 / np.var(no_insurance)
beta_est = np.var(no_insurance) / np.mean(no_insurance)

# PyMC3 Gamma seems to use rate = 1/beta
rate_est = 1/beta_est
# Initial parameter estimates we'll use below
alpha_est, rate_est
然后我要添加的代码:

是粉色的东西让我紧张还是我只是说“没有错误,继续前进”

=======

“零问题”

---------------------------------------------------------------------------
远程回溯回溯(最近一次呼叫最后一次)
远程回溯:
"""
回溯(最近一次呼叫最后一次):
文件“/Local/Users/vlb/anaconda3/lib/python3.7/site packages/pymc3/parallel_sampling.py”,第110行,运行中
self.\u start\u loop()
文件“/Local/Users/vlb/anaconda3/lib/python3.7/site packages/pymc3/parallel_sampling.py”,第160行,在开始循环中
点,stats=self.\u compute\u point()
文件“/Local/Users/vlb/anaconda3/lib/python3.7/site packages/pymc3/parallel_sampling.py”,第191行,in_compute_point
点,统计=self.\u步骤\u方法步骤(self.\u点)
文件“/Local/Users/vlb/anaconda3/lib/python3.7/site packages/pymc3/step_methods/arraystep.py”,步骤中第247行
apoint,stats=self.astep(数组)
astep中的文件“/Local/Users/vlb/anaconda3/lib/python3.7/site packages/pymc3/step_methods/hmc/base_hmc.py”,第130行
self.potential.raise_ok(self._logp_dlogp_func._ordering.vmap)
文件“/Local/Users/vlb/anaconda3/lib/python3.7/site packages/pymc3/step_methods/hmc/quadpolution.py”,第231行,在raise_ok中
raise VALUERROR('\n'.join(errmsg))
ValueError:质量矩阵在对角线上包含零。
RV`alpha_uuulog\\\\\.ravel()[0]的导数为零。
"""
上述异常是以下异常的直接原因:
ValueError回溯(最近一次调用上次)
ValueError:质量矩阵在对角线上包含零。
RV`alpha_uuulog\\\\\.ravel()[0]的导数为零。
上述异常是以下异常的直接原因:
运行时错误回溯(上次最近调用)
在里面
13 g=pm.Gamma('g',alpha=alpha,beta=rate,observed=no\u保险)
14
--->15道=pm样品(10000)
/样本中的Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/sampling.py
435打印步骤层次结构(步骤)
436尝试:
-->437跟踪=\u mp\u样本(**样本参数)
438除pickle.pickle错误外:
439_log.warning(“无法pickle模型,采样单线程。”)
/本地/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/sampling.py in_mp_sample(绘制、调谐、步进、链、核心、链、随机种子、开始、进度条、跟踪、模型、**kwargs)
967尝试:
968带取样器:
-->969对于吸入式取样器:
970道=道[draw.chain-chain]
971如果(trace.supports_sampler_stats
/Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/parallel_sampling.py in___iter__;(self)
391
392自激活时:
-->393 draw=ProcessAdapter.recv\u draw(自激活)
394 proc,最后一次,绘制,调整,统计,警告=绘制
395如果自我进展不是无:
/recv_draw中的Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/parallel_sampling.py(进程,超时)
295其他:
296错误=运行时错误(“链%s失败”。%proc.Chain)
-->297从旧_错误引发错误
298 elif消息[0]=“写入完成”:
299程序可读=真
运行时错误:链0失败。
这里的说明中的“提示”是否告诉我应该使用
1/rate\u est

现在,您将创建自己的PyMC3模型

对alpha使用指数先验。将此随机变量称为alpha。

类似地,使用指数先验值表示速率(1/我对你的1/alpha步长有疑问。请参阅以下讨论:

零问题可能是因为您正在从指数分布中采样零

你可以看这里:手机[6]


我认为您对采样器的输出没有意见。您可以使用我读到的
traceplot

检查您的分布--它不是我理解的语言:-(我发现,让alpha________________________________________________________________B请随意不接受答案。我会尽力为你写一个更好的答案。你不应该感到愚蠢:-)>零问题可能是因为你从指数分布中采样零。--啊哈。我想是的。我不需要反转alpha(尽管我不伤害任何东西)。我需要反转速率。显然,rae(未反转)偶尔抛出0。
---------------------------------------------------------------------------
RemoteTraceback                           Traceback (most recent call last)
RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/parallel_sampling.py", line 110, in run
    self._start_loop()
  File "/Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/parallel_sampling.py", line 160, in _start_loop
    point, stats = self._compute_point()
  File "/Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/parallel_sampling.py", line 191, in _compute_point
    point, stats = self._step_method.step(self._point)
  File "/Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/step_methods/arraystep.py", line 247, in step
    apoint, stats = self.astep(array)
  File "/Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/step_methods/hmc/base_hmc.py", line 130, in astep
    self.potential.raise_ok(self._logp_dlogp_func._ordering.vmap)
  File "/Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/step_methods/hmc/quadpotential.py", line 231, in raise_ok
    raise ValueError('\n'.join(errmsg))
ValueError: Mass matrix contains zeros on the diagonal. 
The derivative of RV `alpha__log__`.ravel()[0] is zero.
"""

The above exception was the direct cause of the following exception:

ValueError                                Traceback (most recent call last)
ValueError: Mass matrix contains zeros on the diagonal. 
The derivative of RV `alpha__log__`.ravel()[0] is zero.

The above exception was the direct cause of the following exception:

RuntimeError                              Traceback (most recent call last)
<ipython-input-14-36f8e5cebbe5> in <module>
     13     g = pm.Gamma('g', alpha=alpha_, beta=rate_, observed=no_insurance)
     14 
---> 15     trace = pm.sample(10000)

/Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/sampling.py in sample(draws, step, init, n_init, start, trace, chain_idx, chains, cores, tune, progressbar, model, random_seed, discard_tuned_samples, compute_convergence_checks, **kwargs)
    435             _print_step_hierarchy(step)
    436             try:
--> 437                 trace = _mp_sample(**sample_args)
    438             except pickle.PickleError:
    439                 _log.warning("Could not pickle model, sampling singlethreaded.")

/Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/sampling.py in _mp_sample(draws, tune, step, chains, cores, chain, random_seed, start, progressbar, trace, model, **kwargs)
    967         try:
    968             with sampler:
--> 969                 for draw in sampler:
    970                     trace = traces[draw.chain - chain]
    971                     if (trace.supports_sampler_stats

/Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/parallel_sampling.py in __iter__(self)
    391 
    392         while self._active:
--> 393             draw = ProcessAdapter.recv_draw(self._active)
    394             proc, is_last, draw, tuning, stats, warns = draw
    395             if self._progress is not None:

/Local/Users/vlb/anaconda3/lib/python3.7/site-packages/pymc3/parallel_sampling.py in recv_draw(processes, timeout)
    295             else:
    296                 error = RuntimeError("Chain %s failed." % proc.chain)
--> 297             raise error from old_error
    298         elif msg[0] == "writing_done":
    299             proc._readable = True

RuntimeError: Chain 0 failed.