My outcome (y) is measured with variable error and I have an indicator (merror) of the size of that error.

I am unsure whether to specify my model via y|mi(merror) or y|weights(1/merror). Empirically, the two approaches give quite different results. But, in the limit, if I simply omit all cases where merror is large and do not incorporate (small) merror as a term in the model, then of course both approaches give the same outcome.

I would be grateful for your help and insights into which approach is most suitable in this case (or y|weights(1/mi(merror))?!)

mi() creates a latent variable and predicts that latent variable. This not only implies weighting but also other things that come with the use of latent variables such as increased effect sizes (usually) but increased uncertainty at the same time.

weights() should weights observations but keep in mind that weights are *not* normalized by default.

In order to incoproate known standard errors, se() is more natural, that is use | se(merror, sigma = TRUE)

Thanks,

But, now I have a follow-up question. I have a multivariate model and want to account for the measurement error in y1 when analysing y2. I have been using

y1|mi(sdy1)~x1+x2

y2~mi(y1)+x1+x2+x3

Should I instead use

y1|se(sdy1, sigma=TRUE)~x1+x2

y2~y1+x1+x2+x3

That is, does this structure account for y1|se(sdy1) when regressing y2 on y1?

Using mi() is correct.