Hi, I’m trying to create implementation of BVAR model, but I see that smth breaks when I’m trying to use pm.LKJCholeskyCov in my implementation. Could smn please point out how to traceback such errors?

```
import pymc
from importlib import reload
reload(pymc)
pm = pymc
def create_my_model(data, n_train: int, n_lags: int, priors, sampler_params, mv_norm = True):
if n_train>0:
df = data.iloc[:n_train].copy(deep=True)
else:
df = data.copy(deep=True)
n_obs = df.shape[0]
n_eq = df.shape[1] # Number of equations equal to number of columns
coords = {
"lags": np.arange(n_lags) + 1,
"equations": df.columns.tolist(),
"cross_vars": df.columns.tolist(),
"time": [i for i in df.index[n_lags:]],
}
with pm.Model(coords=coords) as model:
# N_eq equations, each with N_lags and N_eq variables (to which lags will be applied)
lag_coefs = pm.Normal(
"lag_coefs",
mu=priors["lag_coefs"]["mu"],
sigma=priors["lag_coefs"]["sigma"],
dims=["equations", "lags", "cross_vars"],
)
alpha = pm.Normal(
"alpha", mu=priors["alpha"]["mu"], sigma=priors["alpha"]["sigma"], dims=("equations",)
)
data_obs = pm.Data(f"data_obs",
df.iloc[n_lags:].values,
mutable=True)
data_lags = {}
n_obs = df.shape[0]
for i in range(n_lags):
dl = pm.Data(f"data_lag{i+1}",
df.iloc[n_lags-i-1:n_obs-i-1].values,
mutable=True)
print(dl.shape.eval())
data_lags[i] = dl
# Create VAR equations
var = []
# returns tensor with dimension [n_train_obs - n_lags]
for j in range(n_eq):
ar = pm.math.sum(
[
pm.math.sum(lag_coefs[j, i] * data_lags[i], axis=-1)
for i in range(n_lags)
], axis=0)
print ('ar_eq:', ar.shape.eval())
var.append(ar)
# beta multiplied by X
# shape = [n_train_obs - n_lags, n_eq]
betaX = pm.math.stack(var, axis=-1)
print ('betax:', betaX.shape.eval())
mean = alpha + betaX
mean = pm.Deterministic(
"alpha+betaX",
mean
)
print ('mean:', mean.shape.eval())
if mv_norm:
# https://www.pymc.io/projects/docs/en/stable/api/distributions/generated/pymc.LKJCholeskyCov.html
chol, _, _ = pm.LKJCholeskyCov(
"noise_chol",
eta=priors["noise_chol"]["eta"],
n=n_eq,
sd_dist=pm.HalfNormal.dist(sigma=priors["noise_chol"]["sigma"],shape=n_eq),
)
# print ("noise_chol", chol.shape.eval())
# obs = pm.MvNormal(
# "obs", mu=mean, chol=chol, observed=data_obs)
vals_raw = pm.Normal("vals_raw", mu=mean, sigma=1)
vals = pm.math.dot(vals_raw, chol)
obs = pm.Normal("obs", mu=vals, sigma=0.0001, observed=data_obs)
print ('obs', obs.shape.eval())
else:
## This is an alternative likelihood that can recover sensible estimates of the coefficients
## But lacks the multivariate correlation between the timeseries.
sigma = pm.HalfNormal("noise", sigma=priors["noise"]["sigma"], dims=["equations"])
print ('sigma:', sigma.shape.eval())
print ('data_obs:', data_obs.shape.eval())
obs = pm.Normal(
"obs", mu=mean, sigma=sigma, observed=data_obs)
idata = None
idata = pm.sample(**sampler_params)
return model, idata
n_lags = 3
n_train = 100
mv_norm = True
priors = {
"lag_coefs": {"mu": 0.3, "sigma": 1.0},
"alpha": {"mu": 15.0, "sigma": 5.0},
"noise_chol": {"eta": 1.0, "sigma": 1.0},
"noise": {"sigma": 1.0},
}
sampler_params = {'chains': 2, 'draws': 200, 'tune': 200}
df_full = pd.DataFrame(np.random.random(size = [500, 4]))
model, idata = create_my_model(df_full,
n_train = n_train,
n_lags = n_lags,
priors = priors, sampler_params = sampler_params, mv_norm = True)
```

Code fails with ‘blockwise alloc error’ which doesn’t make any sence to me

```
ERROR (pytensor.graph.rewriting.basic): Rewrite failure due to: local_blockwise_alloc
ERROR (pytensor.graph.rewriting.basic): node: Blockwise{Tri{dtype='float64'}, (),(),()->(o00,o01)}(Alloc.0, Alloc.0, [0])
ERROR (pytensor.graph.rewriting.basic): TRACEBACK:
ERROR (pytensor.graph.rewriting.basic): Traceback (most recent call last):
File "/Users/ivanpetrov/.pyenv/versions/3.10.13/envs/deep_env310/lib/python3.10/site-packages/pytensor/graph/rewriting/basic.py", line 1922, in process_node
replacements = node_rewriter.transform(fgraph, node)
File "/Users/ivanpetrov/.pyenv/versions/3.10.13/envs/deep_env310/lib/python3.10/site-packages/pytensor/graph/rewriting/basic.py", line 1082, in transform
return self.fn(fgraph, node)
File "/Users/ivanpetrov/.pyenv/versions/3.10.13/envs/deep_env310/lib/python3.10/site-packages/pytensor/tensor/rewriting/blockwise.py", line 199, in local_blockwise_alloc
assert new_outs[0].type.broadcastable == old_out_type.broadcastable
AssertionError
```

Name: pymc

Version: 5.11.0

Name: pytensor

Version: 2.18.6

Python 3.10