使用随机矩阵变量定义自定义PyMC分布

时间:2018-08-15 21:13:20

标签: python pymc

我正在尝试定义以下分布:

P(t) = exp(R*t)

其中R是我要使用数据求解的2x2速率矩阵(其每一行的总和必须为0)。这是对数似然函数,以及一些数据:

import numpy as np
# The data is in the format: (row index, column index, t)
data = {(0,1,10), (1,0,20), (0,0,49), (1,1,12)}

def logp(values, ratesMatrix):
    r = []
    t = []
    for i in range(len(data)):
        r.append(ratesMatrix[values[i][0], values[i][1]])
        t.append(values[i][2])
    r = np.array(r, dtype=np.float64)
    t = np.array(t, dtype=np.float64)

    # log( prod( exp(r*t) ) )
    # == sum( log( exp(r*t) ) )
    # == sum( r*t )
    return np.sum(r*t)

如何将ratesMatrix变量定义为随机的2x2矩阵,其中对角线中的每个条目都在-1和0之间(相等),而对角线之外的0和1之间(相等),使得总和每行是0?

1 个答案:

答案 0 :(得分:0)

我认为这段代码很有效而且很简单:

    ConstraintLayout root = (ConstraintLayout)findViewById(R.id.root);
    root.setVisibility(View.GONE);

顺便说一句,这就是您要寻找的东西吗?