Hello,
I have the following pareto model. cmdstan_diagnose()
says no problems detected. But there are a lot of warnings shown below.
Please, kindly help me ensure the shape parameter is positive finite. Plus, if possible, please help improve the overall model performance, etc. Thanks in advance for any input.
#Warnings:
(similar warnings for chains 1:3)
Chain 4
Chain 4 Informational Message: The current Metropolis proposal is about to be rejected because of the following issue:
Chain 4 Exception: pareto_lpdf: Shape parameter[1] is inf, but must be positive finite! (in ‘C:/…/Temp/Rtmps3tany/model-210031a771bb.stan’, line 22, column 1 to column 38)
Chain 4 If this warning occurs sporadically, such as for highly constrained variable types like covariance matrices, then the sampler is fine,
Chain 4 but if this warning occurs often then your model may be either severely ill-conditioned or misspecified.
#Model:
data {
int<lower=0> N;
vector<lower=0>[N] y;
int<lower=0> K;
matrix[N, K] x;
real<lower=0> y_min;
}
transformed data {
matrix[N, K] x_c;
for (k in 1:K){
x_c[,k] = (x[,k] - mean(x[,k]));
}
}
parameters {
real a;
vector[K] beta;
}
model {
y ~ pareto(y_min, exp(a + x_c*beta));
target += student_t_lpdf(a |3, 0, 1);
target += student_t_lpdf(beta |3, 0, 1);
}
Do you see this warning exclusively during the early parts of warmup, or do you see it during sampling as well?
1 Like
Correction: I verified and found that it is during warmup actually; NOT during sampling. Sorry for the mistake. Any thoughts? Thanks.
1 Like
So what’s happening is that your exp
is overflowing to infinity. This only happens early during warmup because the model quickly learns that the only values of a
and beta
that yield non-negligible posterior density are those that do not come close to overflowing. This warning should be safe to ignore, provided that it only happens early in warmup. However, it’s not immediately obvious why this thing would even wander into a region where it could overflow. One possibility would be if some values of x_c
have very large magnitude, which might mean that both your prior and Stan’s default inits on beta
are on an unrealistic scale.
1 Like
x
values range between 0 and 100, so x_c
should be around there or so, not very large magnitude. However, y
has very high magnitude. Any thoughts how to solve this, if necessary/possible? Happy to know that these warnings should be safe to ignore.Thanks
An x_c*beta
value of 100
is very, very large, especially because it’s getting exponentiated. I would suggest thinking carefully about how large the Pareto parameter could realistically be, and then formulating a prior that respects that. You can do this by modifying the prior, or by re-scaling x
. The latter will carry the additional benefit of making the default inits more reasonable. But again, if this message about overflow occurs only early in warmup it can be safely ignored (except as a hint to re-examine your assumptions about what a reasonable model configuration should look like).
1 Like
I will try re-scaling x
and share the outcome. Thanks for the input.