Separation between model and data/parameters

BUGS lets you have missing data, for example,

y = c(3.2, 1.9, NA, NA)
x = c(1.5, 2.8, 3.1, -1.3)

A BUGS model like

y ~ dnorm(alpha + beta * x, sigma)
alpha ~ dnorm(0, 1) 
beta ~ dnorm(0, 1);
sigma ~ dlnorm(0, 1)

and use the above x, y as data, then you get posterior predictive inference for y[3] and y[4]. If you write a probabilistic model for x, then you can impute missing covariates. It’s super convenient.