The issue mentioned above relates to why I was previously using the dot operator: to allow the dimensions of the model to scale automatically dependent on the number of columns of observations supplied.
Previously I had something like:
inputs # dataframe with N rows of M input observations (M = [x1, x2, x3] in the original example)
coords = {"observations": inputs.index, "input_variables": inputs.columns}
with pm.Model(coords=coords) as model:
...
# beta size set to M
beta = pm.Normal('beta', mu=15, sigma=20, dims="input_variables")
# observed size set to N
data_observed = pm.MutableData("data_observed", output, dims=("observations"))
# input data size set to N x M
data_input = pm.MutableData("data_input", inputs, dims=("observations", "input_index"))
# Intention is for mu to be size N, each entry equal to c0 + (c1 * x1) + (c2 * x2) + (c3 * x3)
mu = intercept + pm.math.dot(data_input, beta)
pm.Normal('observed', mu=mu, sigma=sigma, observed=data_observed)
...
If a column was added to inputs then the size of beta etc updates automatically.
Is there a clean way to achieve the same goal without use of the dot operator?