Понимание того, как работают случайные перехваты в смешанных байесовских моделях (вопрос по основам c со станом) - PullRequest
0 голосов
/ 13 марта 2020

Я только изучаю смешанные эффекты и применяю их в stan. У меня ментальный блок в понимании того, что я надеялся, что кто-нибудь мне объяснит, пожалуйста. Я не понимаю, почему случайные эффекты (только перехват) моделируются со средним 0, только с той дисперсией, которая нам подходит. Мое нетехническое понимание случайных перехватов заключается в том, что у вас есть фиксированный перехват эффекта, а затем случайные эффекты компенсируют перехват для определенной группы (например, повторных точек данных индивидуума), для которой вы применяете случайный эффект. Например, один человек может иметь более высокий перехват, чем другие. Но как возможно, чтобы у этого человека было более высокое смещение, если подходящее смещение имеет среднее значение 0 для этого человека? Если все, что мы делаем, это подгоняем дисперсию, то мы можем изменить только то, насколько выше И ниже фиксированного смещения индивидуум?

Я явно упускаю что-то очевидное, но я не могу разобраться Это. Извините - я нуб.

Вот пример кода stan, на который я смотрю:

data {
    int<lower=1> N;                     //number of data points
    real rt[N];                             //reading time
    real<lower=-1,upper=1> so[N];   //predictor
    int<lower=1> J;             // number of subjects
    int<lower=1> K;             // number of items
    int<lower=1, upper=J> subj[N];  // subject id as integer index
    int<lower=1, upper=K> item[N];  // item id as integer index
}

parameters {
    vector[2] beta;             // fixed intercept and slope
    vector[J] u;                // subject intercepts
    vector[K] w;                // item intercepts
    real<lower=0> sigma_e;      // error sd
    real<lower=0> sigma_u;      // subj sd
    real<lower=0> sigma_w;      // subj sd
}

model {
  real mu;
  // priors for the subject and item random intercepts
  //(note flat prior for betas because we don't define one)
  u ~ normal(0, sigma_u);       // subj random effects
  w ~ normal(0, sigma_w);       // subj random effects

  // likelihood
  for (i in 1:N){
    mu = beta[1] + u[subj[i]] + w[item[i]] + beta[2] * so[i];
    log(rt[i]) ~ normal(mu, sigma_e);
  }

}

Итак, здесь w, например, имеет среднее значение 0 для всех людей. Так что, на мой взгляд, вы не можете сместить этого человека выше или ниже фиксированного перехвата, вы можете только варьировать, насколько они go выше и ниже (sigma_w)?

...