Hello everybody. I am encountering a problem with the VonMises distribution, and in particular with its concentration parameter. I am trying to perform a very simple MLE of a hierarchical model.

```
def model(X):
plate = numpyro.plate("data", Nc)
kappa = numpyro.param("kappa", 1., constraint = numpyro.distributions.constraints.positive)
mu = numpyro.param("mu", 0., constraint = numpyro.distributions.constraints.interval(-np.pi, np.pi))
with plate:
phi = numpyro.sample("phi", numpyro.distributions.VonMises(mu, kappa))
with plate:
numpyro.sample("X", numpyro.distributions.Normal(phi, 1.), obs=X)
def guide(X):
pass
```

When I run SVI, I get:

```
ValueError: Reverse-mode differentiation does not work for lax.while_loop or lax.fori_loop with dynamic start/stop values. Try using lax.scan, or using fori_loop with static start/stop.
```

Playing around with the model I noticed that if I fix the kappa (concentration parameter) to constant, and optimize only the mean of the VonMises, it works.

Also following the docs I added on top of my function:

```
@handlers.reparam(config={"phi": CircularReparam()})
```

which changes the error message to:

```
NotImplementedError:
```

I finally tried (based on this) changing my sample to:

```
with plate:
with handlers.reparam(config={'phi': CircularReparam()}):
phi = numpyro.sample("phi", numpyro.distributions.VonMises(mu, 2.0))
```

Which also ends up with the NotImplementedError.

Is there a trick, or the VonMises distribution is just not well implemented yet?

Have a good day!

A