Hi all,

I want to construct the precision matrix for a model that has an AR(1)-like structure. This means that the precision matrix is a sparse band-like matrix and if you were using R, you would use functionality such as `bandSparse`

from the `Matrix`

library.

The matrix should be of the form (sorry, can’t find any LaTeX support):

$$

\begin{bmatrix}

1 & -\alpha & & & \

-\alpha & 1+\alpha^2 & -\alpha & & \

& & \ddots & & \

& & -\alpha & 1+\alpha^2 & -\alpha \

& & & -\alpha & 1

\end{bmatrix}

$$

Below is working code, but as I am sure that you can tell, won’t be the most direct way of creating this matrix. Any thoughts on how to do it better would be appreciated. Thanks!

```
N = 100
alpha = 0.6
dependence = torch.cat([torch.tensor([1., -alpha, 0]).reshape(1, 3),
torch.tensor([-alpha, 1+alpha**2, -alpha]).reshape(1, 3).expand(N-2, 3),
torch.tensor([0., -alpha, 1.]).reshape(1, 3)], 0)
band_matrix = torch.zeros(N, N)
total_pad = N - 3
band_matrix[0] = torch.cat((dependence[0], torch.zeros(total_pad)), 0)
for i in range(1, N-1):
left_pad = i - 1
right_pad = total_pad - left_pad
band_matrix[i] = torch.cat((torch.zeros(left_pad),
dependence[i],
torch.zeros(right_pad)), 0)
band_matrix[N-1] = torch.cat((torch.zeros(total_pad), dependence[N-1]), 0)
```