Hello,

I am just having some trouble understanding what exactly we mean when we say that plates specify independence among some dimension. For example, if I have the code

` x_axis = pyro.plate('x_axis', width, dim=-2)`

What does it precisely mean mathematically that we have independence along the -2 dimension? Does it mean that if I sample some “matrix” `x`

then, the submatrices `x[..., i, :]`

(with `i`

having any admissible value) will be independent?

Thank you

That’s right, any `pyro.sample()`

statements inside your `plate(..., dim=-2)`

context will be conditionally independent along the `-2`

axis. The “conditional” part means that there can be dependence introduced if the parameters of those sample statements depend on a common upstream random variable outside of the `plate`

. For example in this first model the random variables “loc” are completely independent:

```
def model_1(data):
with pyro.plate("x_axis", data.size(-2), dim=-2):
with pyro.plate("y_axis", data.size(-1), dim=-1):
pyro.sample("scale", dist.LogNormal(0, 1))
pyro.sample("loc", dist.Normal(0, scale))
pyro.sample("obs", dist.Normal(loc, 1),
obs=data)
```

whereas in this second model the “loc” are only independent conditioned on “scale”, so we say they are conditionally independent along the “y_axis” but completely independent along the “x_axis”.

```
def model_2(data):
with pyro.plate("x_axis", data.size(-2), dim=-2):
pyro.sample("scale", dist.LogNormal(0, 1))
with pyro.plate("y_axis", data.size(-1), dim=-1):
pyro.sample("loc", dist.Normal(0, scale))
pyro.sample("obs", dist.Normal(loc, 1),
obs=data)
```

1 Like

Thank you. I understand now!