我只是在学习stan,有几个问题。我正在尝试在 stan 中做一个有序的概率模型。我有一些问题。首先,下面的模型抛出错误消息Stan model does not contain samples.
这是什么意思,我该如何修复它?
其次,我如何告诉 stan 我想要识别模型的约束?截至目前,它的位置不明。我想告诉 stan 将其中一个tau
s 设置为特定值(例如 0),但不确定如何执行此操作。
data{
int<lower=1> N; // number of obs
int<lower=3> J; // number of categories
int<lower=2> K; // num of predictors
int y[N]; // outcome var
matrix[N, K] x; // predictor vars
}
parameters{
ordered[J-1] tau; // thresholds
vector[K] beta; // beta coefficients
}
model{
vector[J] theta;
vector[N] xB;
beta ~ normal(0, 100);
xB <- x*beta;
for(n in 1:N){
theta[1] <- 1 - Phi(xB[n] - tau[1]);
for(j in 2:J-1)
theta[j] <- Phi(xB[n]-tau[j-1]) - Phi(xB[n]-tau[j]);
theta[J] <- Phi(xB[n] - tau[J-1]);
y[n] ~ categorical(theta);
}
}
编辑
这是我调用的 R 代码:
stan_data <- list(N = dim(insurance)[1], # 1000
K = dim(insurance)[2], #5
J = length(table(insurance$spend)), #3
y = insurance$spend, # vector of length N where each element is 0, 1, or 2
x = my_xmatrix) # matrix of dim 1000, 5
mcmc_oprobit <- stan(file="stan/oprobit.stan",
data = stan_data)