Hi @john_c, unfortunately pymc3 cannot sample from potentials as in your model. I suggest you generate random samples with the theta and sigma traces using np.random.lognormal and truncating the observations yourself. This should give you the correct ppc samples.
For lower truncation you subtract the difference between the upper and lower logcdf (on the natural scale). This thread has an example with a truncated exponential: Help with pm.Potential - #12 by sspickle
Something along the lines of:
lognorm = pm.Lognormal.dist(theta, sigma)
y = pm.Potential('y', lognorm.logp(data) - pm.math.logdiffexp(lognorm.logcdf(2000), lognorm.logcdf(5)))