>>>>> Suyan Tian <stian at mail.rockefeller.edu>
>>>>> on Tue, 22 Oct 2013 01:18:10 +0000 writes:
> Sorry to bother, I want to construct a correlation matrix
> in multivariate regression (several dependent variables
> and they are correlated in some ways) like the followings,
> 1 0.8 0 0 ? 0 0
> 0.8 1 0 0 ? 0 0
> 0 0 1 0.8 ? 0 0
> 0 0 0.8 1 ? 0 0
> . . . . ?.
> . . . .
> 0 0 1 0.8
> 0 0 0.8 1
> Does anyone know how to do it?
Of course, with many such problems in R, there are *many* ways.
I believe one of the nicest ways here is to use toeplitz() :
n <- 12 ## or whatever your n is
toeplitz(c(1,0.8, rep(0, n-2)))
Note that for larger n, under some circumstances it may be
beneficial to use the Matrix package and its *sparse* matrices,
e.g.,
> require(Matrix)
> n <- 12; toeplitz(as(c(1,0.8, rep(0, n-2)), "sparseVector"))
12 x 12 sparse Matrix of class "dsCMatrix"
[1,] 1.0 0.8 . . . . . . . . . .
[2,] 0.8 1.0 0.8 . . . . . . . . .
[3,] . 0.8 1.0 0.8 . . . . . . . .
[4,] . . 0.8 1.0 0.8 . . . . . . .
[5,] . . . 0.8 1.0 0.8 . . . . . .
[6,] . . . . 0.8 1.0 0.8 . . . . .
[7,] . . . . . 0.8 1.0 0.8 . . . .
[8,] . . . . . . 0.8 1.0 0.8 . . .
[9,] . . . . . . . 0.8 1.0 0.8 . .
[10,] . . . . . . . . 0.8 1.0 0.8 .
[11,] . . . . . . . . . 0.8 1.0 0.8
[12,] . . . . . . . . . . 0.8 1.0>
Best regards,
Martin Maechler, ETH Zurich