pymc3中的Conway-Maxwell Poisson模型具有令人困惑的数据参数

时间:2017-01-27 13:54:52

标签: python pymc3

我正在寻找在pymc3中实施CMPoisson模型的人的要点。不幸的是,有两个步骤我不确定。在模型的主楼。

(要点可以在这里找到:https://gist.github.com/dadaromeo/33e581d9e3bcbad83531b4a91a87509f

  1. 在构建测试数据时,他使用两步过程来计算数据:

    n,d = 1000, 4
    X = np.abs(np.random.randn(n,d))
    y = np.round(X.sum(axis=1)).astype(int)
    
  2. 我正在尝试解决为什么使用两步过程?它是创建类似泊松但具有CMPoisson分布特征的数据吗?

    1. 在pymc3模型中,使用X数组计算参数:

      with cmp_model:
          alpha = pm.Normal("alpha", mu=1)
          beta = pm.Normal("beta", mu=1, shape=d)
          lam = alpha + tt.dot(X,beta)
          nu = pm.HalfNormal("nu", sd=10)
      
          like = CMPoisson("like", lamda=lam, nu=nu, observed=y)
      
    2. 为什么?当我使用真实数据(看起来像y)时,我不确定我的相应X值来自何处?

      非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

你是对的第一步。他只是为他的问题生成合成数据。关于第二步,他正在进行CMPoisson回归,即像“常规”线性回归,但可能性不是高斯分布。

我认为你没有任何X.如果是这样,那么你的模型应该是这样的:

with cmp_model:
    lam = pm.HalfNormal("lam", sd=10)
    nu = pm.HalfNormal("nu", sd=10)

    like = CMPoisson("like", lamda=lam, nu=nu, observed=y)

我不熟悉Conway-maxwell分布,但它似乎用于模拟过分散的数据,这些数据不能很好地解决Poisson分布问题。如果您发现它有用,PyMC3具有负二项分布,也用于模拟过度分散的计数数据。