Matlab 用GPML构造后验协方差

Matlab 用GPML构造后验协方差,matlab,bayesian,Matlab,Bayesian,我想使用Matlab包GPML从回归问题的后验分布中提取样本。函数gp函数返回一个三元组post=[alpha,sW,L],其中 alpha=inv(K)*(mu-m),其中m为先验均值,mu为后验均值(K为先验协方差) sW=diag(sqrt(W))(W与结果变量的方差成对角线) L=-inv(K+inv(W)) 后验分布为高斯分布,平均值m+K*alpha和协方差inv(inv(K)+W))。然而,似乎没有办法通过使用这个三元组变量或其他GPML函数来获得矩阵K或m。然而,似乎有一个很

我想使用Matlab包GPML从回归问题的后验分布中提取样本。函数gp函数返回一个三元组
post=[alpha,sW,L]
,其中

  • alpha=inv(K)*(mu-m)
    ,其中
    m
    为先验均值,
    mu
    为后验均值(
    K
    为先验协方差)
  • sW=diag(sqrt(W))
    W
    与结果变量的方差成对角线)
  • L=-inv(K+inv(W))
后验分布为高斯分布,平均值
m+K*alpha
和协方差
inv(inv(K)+W))
。然而,似乎没有办法通过使用这个三元组变量或其他GPML函数来获得矩阵
K
m
。然而,似乎有一个很好的理由将这些变量作为输出给出。恢复后验分布的正确方法是什么

这是手册中作为MWE的(稍加修改)示例代码:

x = gpml_randn(0.8, 20, 1);
y = sin(3*x) + 0.1*gpml_randn(0.9, 20, 1);
xs = linspace(-3, 3, 61)';
meanfunc = [];
covfunc = @covSEiso;
likfunc = @likGauss;
hyp = struct('mean', [], 'cov', [0 0], 'lik', -1);
[mu, s2, latentmeans, latentvars, dummyVar, post] = gp(hyp, @infGaussLik, meanfunc, covfunc, likfunc, x, y, xs);

我不熟悉您正在谈论的包,但在我看来,您可以重新安排输出以(重新)计算所需的变量。例如,从
sW
可以得到
W
,给定
L
W
可以得到
K
,等等。。