微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Stan:分层模型的多变量先验,没有先验均值的组级预测变量

如何解决Stan:分层模型的多变量先验,没有先验均值的组级预测变量

我想用 Stan 拟合 Lotka-Volterra 竞赛模型。 我阅读了section about multivariate hierarchical priors in the manual

我们有:

  • "individual" = 在时间 t 对焦点物种丰度的一次观察
  • "group" = 焦点物种
  • "predictors" = 每个物种的丰度
  • “结果”= t 和 t+1 之间的焦点物种丰度增量 (对于了解模型的人,目前我只尝试推断交互矩阵 (alpha),稍后我将添加物种增长率(但由于不需要多元变量,因此更简单))。

但在手册中,他们在 Stan 模型中添加了“先验均值的组级预测变量”。 我不认为我需要这个,我什至看不到我的数据中会有什么(也许我错了,如果是这样,请告诉我!)。 因此,我试图将其删除。但是我对我的模型非常不确定,尤其是对于 mu,如果有人对这些模型更有经验可以告诉我我是否错了,我会很高兴。

data {
  int<lower=0> N;              // num individuals (generations)
  int<lower=1> K;              // num ind predictors (species)
  int<lower=1> J;              // num groups (species)
  int<lower=1,upper=J> jj[N];  // group for individual
  matrix[N,K] x;              // individual predictors
  vector[N] y;                 // outcomes
}
parameters {
  corr_matrix[K] Omega;        // prior correlation
  vector<lower=0>[K] tau;      // prior scale
  vector[K] beta[J];           // indiv coeffs by group
  vector[K] mu[J];            // mean coeff by group
  real<lower=0> sigma;         // prediction error scale
}
model {
  tau ~ cauchy(0,2.5);
  Omega ~ lkj_corr(2);
  {
    for (j in 1:J)
      mu[J] ~ normal(0,5);
      beta ~ multi_normal(mu,quad_form_diag(Omega,tau));
  }
  for (n in 1:N)
    y[n] ~ normal(x[n] * beta[jj[n]],sigma);
}

解决方法

结果一个同事告诉我,我可以保留手册中的代码,而u中只有1s[J]。 现在看起来很明显;)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。