stan

时间:2015-08-06 14:09:21

标签: r bayesian stan

我只是学习斯坦并且有几个问题。我想在斯坦做一个有序的probit模型。我有一些问题。首先,下面的模型会抛出错误消息Stan model does not contain samples.这意味着什么,我该如何修复它?

其次,我如何告诉stan我想要识别模型的约束?截至目前,它在位置方面尚未确定。我想告诉斯坦将tau中的一个设置为特定值(例如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)

1 个答案:

答案 0 :(得分:1)

If I call, N <- 1000 J <- 3L K <- 2L y <- sample(0:2, N, replace = TRUE) x <- matrix(rnorm(2 * N), N , 2) mcmc_oprobit <- stan(file="oprobit.stan") then I ultimately get Informational Message: The current Metropolis proposal is about to be rejected because of the following issue: Exception thrown at line 22: stan::math::categorical_log: Number of categories is 0, but must be between (1, 3) If this warning occurs sporadically, such as for highly constrained variable types like covariance matrices, then the sampler is fine, but if this warning occurs often then your model may be either severely ill-conditioned or misspecified. In which case, the problem can be overcome by recoding your outcome variable to be 1, 2, or 3 rather than 0, 1, or 2. But that raises the question of why you are not seeing that Informational Message? What platform, GUI, and version number of RStan are you using?