Measurement error model with coefficient of variation

So far I have always modelled measurement error according to the guide and McElreath because I usually have a mean and standard deviation (s.d.). I have recently come across a case where I have an observed average (y_obs) and a coefficient of variation or relative s.d. (y_cv), which can be multiplied either with y_obs to get the familiar observed s.d. or multiplied with the latent variable y_true to get a latent s.d. Here are both approaches in Stan:

data {
  vector[N] y_obs;
  vector[N] y_cv; // coefficient of variation
  ...
}

parameters {
  vector[N] y_true;
  ...
}
model {
  ...
  y_true ~ normal( mu , sigma ); 
  y_obs ~ normal( y_true , y_cv .* y_obs ); 
  // or
  y_obs ~ normal( y_true , y_cv .* y_true );
} 

Both models run and are conceptually sound as far as I can tell. Which approach is preferable?

I’m not specifically an expert in measurement error modeling, but I think in a situation like this it makes more sense to let the measurement‐error standard deviation depend on the latent y_true. If you do it based on y_obs then you are saying that the noise scale itself directly depends on the noisy measurement you already saw. And if y_obs[i] happens to be near 0, you force the implied error y_cv[i] * y_obs[i] to 0 even if the measurement was actually noisy.

2 Likes

Thanks for your input. Yes this is exactly why I am unsure. While multiplying y_obs and y_cv is more intuitive to me because they are both observed quantities and would produce an observed s.d. as in the classic case, I also think CV allows greater flexibility than s.d. and this could potentially be exploited to build a better model. Would you be able to point me towards other resources or tag people who are measurement error experts?