I have a simple model that fits a Frank copula with a parameter \theta that is varying linearly as a function of a covariate (see below). I want to know if this model results in a better fit than simply assuming a constant parameter \theta . Can I use the estimated lp__ from the two models to compute say the BIC and compare? I know that in general lp__ is not good for model intercomparison but I was just wondering if it’s possible in this case where I do not have any constraints on my parameters…thank you in advance!
functions {
// log-density of frank copula with parameter theta
real frank_copula(real u, real v, real theta) {
return log(theta * (1 - exp(-theta))) - theta * (u + v) -
log( (1 - exp(-theta) - (1 - exp(-theta * u)) * (1 - exp(-theta * v)))^2);
}
}
data {
int<lower=0> N; // number of pairs
vector[N] u; //pseudo-observations u
vector[N] v; //pseudo-observations v
vector[N] x; // covariate
}
parameters {
real b;
real w;
}
model {
vector[N] ll;
real theta;
for (i in 1:N){
theta = b + w * x[i]; // theta as a linear function of covariate
ll[i] = frank_copula(u[i], v[i], theta);
target += ll[i];
}
}