data {
//int<lower = 0> N;
int<lower=0> n_examinee; // Number of examinees
int<lower=0> n_item; // Number of items
//int<lower = 0> y[N];
int<lower=0> Y[n_examinee, n_item]; //The data matrix (count)
}
parameters {
vector [n_examinee] theta; //
vector <lower = 0> [n_item] easiness; //
//real <lower = 0> sdt;
//real <lower = 0> alpha;
//real <lower = 0> beta;
}
transformed parameters {
matrix [n_examinee, n_item] lambdas;
for(i in 1:n_examinee){
for (j in 1:n_item){
lambdas[i,j] = exp(theta[i] + easiness[j]) ;
}
}
}
model {
theta ~ normal(0, .3);
///sdt ~ gamma(1,30);
easiness ~ uniform(0,3);
for(i in 1:n_examinee){
for (j in 1:n_item){
Y[i,j] ~ poisson(lambdas[i,j]);
}
}
}
For a few weeks I have been trying to get this model to work in stan, specifically the RPCM(Rasch Poisson counts model), but for some reason haven’t been able to get it to accurately run. This is how I am generating the data in R:
n <- 200
n_item <- 20
easiness <- log(seq(5, 40, length.out = n_item))
theta <- rnorm(n, 0, .3)
gen_test_data <- function(true_deltas, true_abilities, n_persons) {
out <- data.frame(
item1 = numeric(n_persons)
)
for (j in 1:length(true_deltas)) {
lambdas <- exp(true_abilities + true_deltas[j])
out[[paste0("item", j)]] <- rpois(n_persons, lambdas)
}
return(out)
}
df <- gen_test_data(easiness, theta, length(theta))
rpcsm <- stan(file = "rpcm.stan", data = list(n_examinee = n,
n_item = n_item,
Y = df), iter = 4000)
Could anyone point to any clear problems? I have tried different variations but the rhats are never good.