3

私はスタンを学んでいて、いくつか質問があります。私はスタンで注文されたプロビットモデルをやろうとしています。いくつか質問があります。最初に、以下のモデルはエラー メッセージをスローしますStan model does not contain samples.

次に、モデルを識別したい制約をスタンに伝えるにはどうすればよいですか? 現在のところ、場所は不明です。taus の 1 つを特定の値 (たとえば 0)に設定するように stan に伝えたいのですが、その方法がわかりません。

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)
4

1 に答える 1

1

呼び出し た場合、 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") 最終的には 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. 結果変数を 0、1、または 2 ではなく 1、2、または 3 に再コーディングすることで問題を解決できます。その情報メッセージ?RStan のどのプラットフォーム、GUI、およびバージョン番号を使用していますか?

于 2015-08-07T02:07:52.430 に答える