理解 Stan 机器学习代码的建议

时间:2021-03-02 20:05:25

标签: matlab stan

我需要帮助来理解以下 Stan 代码。我对 Matlab 很好,但我发现这段代码有问题(见下文)。

首先我不明白 vector[K] u[I] 到底是什么意思。这是 Kx1 向量、Ix1 向量还是 KxI 矩阵? (他们写了一些关于维度 K = 4 的潜在特征向量 ui(vj) 的内容,但我不明白这是什么意思)。

然后我不太明白 normal(0,sigma_0)cauchy(u[i]'*v[j],lambda) 到底是做什么的。我的意思是,这里的输出是什么?当我在 MATLAB 中使用“normpdf”函数时,我需要一个额外的输入 x 来评估分布。那么为什么这里缺少它,这对输出意味着什么?

最后,K 只在参数部分使用,但不会再次出现在任何 for 循环中,那么为什么 K 甚至是必要的?

在此先感谢您的帮助,非常感谢!

data {
    int<lower=0> I;
    int<lower=0> J;
    int<lower=0> K;
    real ln_gamma[I,J];
    real<lower=0> sigma_0;
    real<lower=0> lambda;
}
parameters {
    vector[K] u[I];
    vector[K] v[J];
}
model {
    for (i in 1:I)
        u[i] ~ normal(0,sigma_0);
    for (j in 1:J)
        v[j] ~ normal(0,sigma_0);
    for (i in 1:I) {
        for (j in 1:J) {
            if (ln_gamma[i,j] != -99) {
                ln_gamma[i,j] ~ cauchy(u[i]’*v[j],lambda);
            }
        }
    }
}

0 个答案:

没有答案
相关问题