Hi!
Happy to discuss this further! send me and @spinkney a PM and we can sort out a time to chat.
Yes I think we can follow a more Bayesian approach here, check out this thread where @spinkney goes over that a bit. I believe what we want at the Stan level is code with something like
data {
int N;
vector[N] x;
}
parameters {
real mu;
real<lower=0> sigma;
real gamma;
}
transformed parameters {
// Skew example for simplicity
// lambert_transform skew has signature
// f(distribution, Data, distribution_params, lambert_skew_params)
vector[N] x_gauss = lambert_transform_skew(normal_lpdf, x, mu, sigma, gamma);
}
model {
// Whatever modeling a user wants to do on the gaussianized data
x_gauss ~ std_normal();
}
generated quantities {
// make predictions and degauss them
vector[N] x_pred_gauss = normal_rng(N, 0 ,1);
vector[N} x_pred = lambert_untransform_skew(normal_lpdf, x_pred_gauss, mu, sigma, gamma);
}
Where we use the distribution type to infer the transform for that particular distribution. Sean may have other schemes / ideas.