【问题标题】:Nested Model in STAN?STAN中的嵌套模型?
【发布时间】:2015-06-05 09:41:53
【问题描述】:

假设我想在两个级别对随机效应进行建模,即我有两个级别的嵌套:父组中的个体和祖父组中的父组。我知道如何为these 等示例编写单个随机效应的基本模型(如下),但我不知道如何编写等价于

lmer(resp ~ (1|a/b), data = DAT)

在 lmer 中。

单个 RE 的 STAN 代码。问题是,如何将a 嵌套在更高级别的b 中?

data{
  int<lower=0> N;
  int<lower=0> K;
  matrix[N,K] X;
  vector[N] price;
  int J;
  int<lower=1,upper=J> re[N];
}
parameters{
  vector[J] a;
  real mu_a;
  real tau;
  real<lower=0> sigma_a;
  real<lower=0> sigma;
  vector[K] beta;
}
transformed parameters{
  vector[N] mu_hat;
  for(i in 1:N)
    mu_hat[i] <- a[re[i]];
}
model {
  mu_a ~ normal(0,10);
  tau ~ cauchy(0,5);
  a ~ normal(mu_a,sigma_a);
  for(i in 1:N)
    price[i] ~ normal(X[i]*beta + mu_hat[i], sigma);
}
"

【问题讨论】:

    标签: r stan


    【解决方案1】:

    如果您的模型很简单,brms 包值得一看。它将您的公式编译为 stan 并运行模型。它还具有从 lmer 借来的表达语法。我喜欢的是,您可以将模型编译为 stan 文件,然后在已有 lmer 公式的情况下在其上构建

    当然,它还有一个额外的好处(来自 stan),即“固定效应”与“随机效应”估计的令人困惑的差异消失了,并且两者都被估计为具有后验分布的参数。

    【讨论】:

      【解决方案2】:

      我不确定 lmer 中的 a/b 表示法是什么,但如果您想要嵌套层数多层,那么使用预测器很容易。假设您有一个 IRT 模型,其中学生(j in 1:J)嵌套在学校(school[j] in 1:S)和学校嵌套在城市(city[s] in 1:C)。

      [2017 年 4 月 14 日更新]

      您现在可以矢量化所有内容。所以而不是这样:

      for (j in 1:J) 
        theta[j] ~ normal(alpha[school[j]], sigma_theta);
      for (s in 1:S)
        alpha[s] ~ normal(beta[city[s]], sigma_alpha);
      beta ~ normal(0, 5);
      

      你可以拥有

      theta ~ normal(alpha[school], sigma_theta);
      alpha ~ normal(beta[city], sigma_alpha);
      beta ~ normal(0, 5);
      

      【讨论】:

      • 与 lmer 表示法相关:fortunes::fortune(339).
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      相关资源
      最近更新 更多