Eigen decompose a symmetric block matrix

743 Views Asked by At

I have two matrices A and Z.

A is a symmetric $t$-by-$t$ matrix with ones along the diagonal:

$$ A= \left[\begin{matrix} 1 & c_{1,1} & \cdots & c_{t,1}\\ c_{1,1} & 1 & \cdots & c_{t,2}\\ \vdots & \vdots & \ddots & \vdots \\ c_{t,1} & c_{t,2} & \cdots & 1 \end{matrix}\right] $$

Z is an "indicator matrix". What I mean by this is that it is an $n$-by-$t$ matrix with exactly $n$ entries that are $1$, and all the rest of the entries are $0$. There is exactly one $1$ per row:

$$ Z= \left[\begin{matrix} 1 & 0 & \cdots & 0\\ 1 & 0 & \cdots & 0\\ 1 & 0 & \cdots & 0\\ 0 & 1 & \cdots & 0\\ 0 & 1 & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1\\ 0 & 0 & \cdots & 1 \end{matrix}\right] $$

This type of matrix is common in statistics because it maps observations (there are $n$ of them) to groups (there are $t$ groups).

I need to compute the eigen vectors of $ZAZ^T$. I'm sure it's of the same rank as $A$, but somehow R (the programming language I use) still gives me back something. In cases where $n >> t$ (most of the cases I'm interested in), it takes a lot longer to compute the eigen vectors of $ZAZ^T$ than to compute the eigen vectors of $A$.

Is there any way to "post-process" the eigen vectors of $A$ to give the eigen vectors of $ZAZ^T$?

1

There are 1 best solutions below

1
On BEST ANSWER

Let

$B=ZAZ^{T}$

Find the eigenvalue-eigenvector decomposition of $A$,

$A=UDU^{T}$.

Then

$B=ZUDU^{T}Z^{T}=(ZU)D(ZU)^{T}$

You've now diagonalized $B=ZAZ^{T}$. The columns of $ZU$ are eigenvectors of $B$ (corresponding to $B$'s nonzero eigenvalues.)

Note that because $Z$ isn't a unitary transformation, this screws up the scaling of the eigenvalues. You can easily work out that the eigenvalues of $A$ have been scaled (by the number of ones in each column of $Z$.)