Ordered punched into stan

I am just learning stan and asking a few questions. I am trying to make an ordered probit model in stan. I have a few questions. First, the model below gives an error message Stan model does not contain samples.

What does this mean and how can I fix it?

Second, how do I tell stan the constraints I want to identify? This is an unidentified location at the moment. I want to tell stan to set one of them tau

to a specific value (like 0), but I don't know how.

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);
  }
}

      

EDIT

Here's the R code that I named:

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)

      

+3


source to share


1 answer


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 end up getting 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 this case, the problem can be overcome by re-encoding your result variable to 1, 2, or 3, not 0, 1 or 2. But the question is, why are you not seeing this informational message? What platform, GUI and RStan version number are you using?



+1


source







All Articles