通过 R 编程的 STAN IRT,参数声明问题?

STAN IRT via R programming, issue with parameter declaration?

我正在关注这个官方 IRT w/ STAN tutorial。型号详情复制如下:

data {
  int<lower=1> J;              // number of students
  int<lower=1> K;              // number of questions
  int<lower=1> N;              // number of observations
  int<lower=1,upper=J> jj[N];  // student for observation n
  int<lower=1,upper=K> kk[N];  // question for observation n
  int<lower=0,upper=1> y[N];   // correctness for observation n
}

parameters {
  real delta;         // mean student ability
  real alpha[J];      // ability of student j - mean ability
  real beta[K];       // difficulty of question k
}

model {
  alpha ~ std_normal();         // informative true prior
  beta ~ std_normal();          // informative true prior
  delta ~ normal(0.75, 1);      // informative true prior
  for (n in 1:N)
    y[n] ~ bernoulli_logit(alpha[jj[n]] - beta[kk[n]] + delta);
}

我不确定哪些变量需要在 R 代码中声明,哪些不需要。

toy_data <- list(
  J= 5,
  K = 4,
  N =20,
  y= c(1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0)
                )
fit <- stan(file = '1PL_stan.stan', data = toy_data)

但是,触发了以下错误。

Error in mod$fit_ptr() : 
  Exception: variable does not exist; processing stage=data initialization; variable name=jj; base type=int  (in 'model920c4330dff_1PL_stan' at line 5)

In addition: Warning messages:
1: In readLines(file, warn = TRUE) :
  incomplete final line found on 'C:\Users\jacob.moore\DownloadsPL_stan.stan'
2: In system(paste(CXX, ARGS), ignore.stdout = TRUE, ignore.stderr = TRUE) :
  '-E' not found
failed to create the sampler; sampling not done

在我过去的工作中,我几乎只使用 python。所以学习 R 的过程非常曲折;此外,我是 STAN 的新手,因此是玩具示例。

核心思想是有20对child/question。 5 children 和 4 个不同的问题。我不确定为什么我的代码会触发错误,以及我应该如何纠正错误。您能否阐明需要将此代码调整为 运行 而不会触发错误的内容?

数据块中列出的每个参数(JKNjjkky)需要包含在变量 toy_data 中。您遗漏了 jjkk.

您有 5 名学生 (J=5),每人回答 4 个问题 (K=4)。 jj 是学生 ID,kk 是问题 ID,因此假设您的回答按学生顺序排列,然后按问题顺序排列,您会得到类似于

jj = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5)
kk = c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4)