def logpdf(x, df, mu, Sigma):
"""
Marginal log-likelihood of a Student-t Process
Parameters
----------
x: array-like
Point to be evaluated
df: float
Degrees of freedom (>2.0)
mu: array-like
Mean of the process.
Sigma: array-like
Covariance matrix of the process.
Returns
-------
logp: float
log-likelihood
"""
d = len(x)
x = np.atleast_2d(x)
xm = x - mu
V = df * Sigma
V_inv = np.linalg.inv(V)
_, logdet = slogdet(np.pi * V)
logz = -gamma(df / 2.0 + d / 2.0) + gamma(df / 2.0) + 0.5 * logdet
logp = -0.5 * (df + d) * np.log(1 + np.sum(np.dot(xm, V_inv) * xm, axis=1))
logp = logp - logz
return logp[0]
评论列表
文章目录