I’m having trouble finding the analog in pymc3 for interpolating a several-dimensional grid. Please excuse if I abuse notation or terminology, I’ve tried to boil this question down to its most basic…
I have some observables a, b, c, etc., which are determined by some unobserved quantities p, q, and r, something like:
a = F(p,q,r) + noise
b = G(p,q,r) + noise
c = H(p,q,r) + noise
and in this case, I’d like to infer p, q, and r.
The functions F, G, and H are in principle deterministic and relatively smooth, but very expensive to compute, so it’s not practical to include them explicitly in a model and sample away. Instead, it is standard practice in my field to pre-compute those functions on regular grids of their arguments (p, q, and r), and interpolate between the points to make predictions of a, b, and c. Ordinarily, I’d interpolate in
numpy, but given the rigamarole of wrapping with
theano.as_op, I wonder if there’s a different/simpler way.
Specifically, what about thinking of F, G, and H as Gaussian Processes? My intuition is that under the assumption that my pre-computation on the grid captures most of the meaningful variation in the physical model, this approach could work like an interpolation, albeit an explicitly differentiable one, which means I can use HMC. Has anyone done this, or does anyone have thoughts?