I am fitting a Bradley-Terry model on binary choice data between two pairs of dollar amounts/probabilities. I am currently doing parameter recovery for my risk aversion parameter–r in the model below. Specifically, there are no posterior samples for r \approx 0 but there are samples for |r| > 0.1, there are divergent transitions, and the chains don’t mix. I have unsuccessfully tried various fixes–non-centered parameterization, increasing adapt_delta, and running a lot of iterations. I’m not sure how best to proceed. Thanks!
functions{
real pwr_val(real money, real r){
real v;
real money_shift = money + 1;
if (r < 00){
v = -money_shift^r;
} else if (r > 0){
v = money_shift^r;
} else {
v = log(money_shift);
}
return v;
}
}
data {
int<lower=0> K; // Number of different distributions
int<lower=0> N; // Number of comparisons made
int<lower=1, upper=K> dist0[N]; // distribution 0 for comparison n
int<lower=1, upper=K> dist1[N]; // distribution 1 for comparison n
matrix[K, 8] dist_val; // Dollar value for the outcomes
vector[8] p_outcome_round; // Probabilities for each outcome
int<lower=0, upper=1> y[N]; // winner for game n
}
parameters {
real<lower = -10, upper = 10> r;
}
transformed parameters{
vector[N] mu_diff; // Difference in mean value for comparison N
matrix[K, 8] dist_pwr_utils;
vector[K] dist_pwr_util;
// Get the mean value for each distribution
for (k in 1:K) {
for (j in 1:8) {
dist_pwr_utils[k, j] = p_outcome_round[j] * pwr_val(dist_val[k, j], r);
}
dist_pwr_util[k] = sum(dist_pwr_utils[k]) ;
}
// get the predicted difference for each item
for (n in 1:N) {
mu_diff[n] = dist_pwr_util[dist1[n]] - dist_pwr_util[dist0[n]];
}
}
model {
r ~ normal(0, 1);
y ~ bernoulli_logit(mu_diff);
}