微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用PyMC3估计离散值A,必须在该离散值A上构建for循环?

如何解决如何使用PyMC3估计离散值A,必须在该离散值A上构建for循环?

这是旧问题的正确表达版本。

我正在压缩一些为神经科学论文编写的代码https://doi.org/10.1371/journal.pcbi.1007481。在不研究不必要的细节的情况下,这里有一些定义:


定义

A是神经元集合的数量,由mu表示的任意集合。它的分布是未知的,并且随着系统将神经元组织成正确数量的程序集,其在任何时间点的值都应改变。

p_mu是神经元装配mu激活的概率。它的先验分布是Beta分布,其参数alpha_pbeta_p是未知分布的,并且特定于mu

w一个二进制矩阵,其中包含所有时间A的所有程序集M0对应于“关闭”,1对应于“开启”。它的先验是具有特定于装配的概率p_mu的伯努利分布。

n是每个程序集的相对大小。它的先验分布是具有未知分布的A个参数{gamma_1,...,gamma_n}的Dirichlet分布。 我不确定这是否有必要

lambda(0/1)_mu是特定神经元在特定时间开启的可能性,因为此时该程序集处于(开启/关闭)状态。它的先验是Beta分布,其参数delta(0/1)_mukappa(0/1)_mu未知且特定于每个程序集

s一个二进制矩阵,其中包含所有时间N的所有神经元M0对应于“关闭”,1对应于“开启”。 这是我们的输入数据,并且每个时间点的分布都是lambda(0/1)_mu


目标

将贝叶斯推断与PyMC3结合使用以发现程序集A数量


假设

我决定在A0之间给total_number_of_cells一个离散统一的先验,因为它的值必须在那个集合中,而且我不知道这让我更喜欢偏见在任何方向。

对于特定的alpha,我决定假设betagammadelta(0/1)kappa(0/1)mu来自一半正态分布,因为它们必须为正。


我的初步计划

假设程序集的数量A是已知的,而不是从发行版中获取的,只是为了确保我可以再次找到它。

遍历每个程序集,以填充alphabetagammadelta(0/1)kappa(0/1)的分布集合每个组装。

遍历每个时间范围,并基于lambda(0/1)_mu创建自定义分布,从中在每个时间点对观测数据s进行采样。


我的问题

  1. 如果装配件的数量未知,如何将不确定性集成到图表中?目前,我正计划遍历已知数量的程序集,但我没有看到一种使PyMC3动态化该过程的直接方法。本文为此使用了Dirichlet流程-PyMC3如何处理这种动态情况?

  2. 是否有一种不必遍历每个神经元和时间步长的方法?这似乎很慢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。