distributions.py 文件源码

python
阅读 35 收藏 0 点赞 0 评论 0

项目:mcplates 作者: ian-r-rose 项目源码 文件源码
def spherical_beta_logp(x, lon_lat, alpha):

    if x[1] < -90. or x[1] > 90.:
        raise ZeroProbability
        return -np.inf

    if alpha == 1.0:
        return np.log(1. / 4. / np.pi)

    mu = np.array([np.cos(lon_lat[1] * d2r) * np.cos(lon_lat[0] * d2r),
                   np.cos(lon_lat[1] * d2r) * np.sin(lon_lat[0] * d2r),
                   np.sin(lon_lat[1] * d2r)])
    test_point = np.transpose(np.array([np.cos(x[1] * d2r) * np.cos(x[0] * d2r),
                                        np.cos(x[1] * d2r) *
                                        np.sin(x[0] * d2r),
                                        np.sin(x[1] * d2r)]))

    thetas = np.arccos(np.dot(test_point, mu))
    normalization = sp.gamma(alpha + 0.5) / \
        sp.gamma(alpha) / np.sqrt(np.pi) / np.pi / 2.
    logp_elem = np.log(np.sin(thetas)) * (2. * alpha - 2) + \
        np.log(normalization)

    logp = logp_elem.sum()
    return logp
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号