2017-01-27 57 views
1

我正在看一个在pymc3中实现了CMPoisson模型的人的要点。不幸的是,有两个步骤我不确定。在模型的主要建筑物。带有令人困惑的数据参数的pymc3中的Conway-Maxwell泊松模型

(GIST可以在这里找到: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) 
    

我m试图找出为什么使用两步过程?它是否创建与泊松类似的数据,但具有CMPoisson分布的特征?

  • 在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) 
    
  • 为什么呢?由于我使用真实数据(看起来像y),我不确定我的相应X值来自哪里?

    任何帮助非常感谢!

    回答

    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) 
    

    我不熟悉的康威 - 麦克斯韦分布,但现在看来,这是用来模型过度分散的数据不能很好地修复泊松分布。如果您发现它很有用,PyMC3具有负二项分布,它也用于模拟过分散计数数据。