spectrum {igraph} | R Documentation

## Eigenvalues and eigenvectors of the adjacency matrix of a graph

### Description

Calculate selected eigenvalues and eigenvectors of a (supposedly sparse) graph.

### Usage

    spectrum(graph, algorithm = c("arpack", "auto", "lapack", "comp_auto",
      "comp_lapack", "comp_arpack"), which = list(), options = arpack_defaults)

### Arguments

`graph` | The input graph, can be directed or undirected.
`algorithm` | The algorithm to use. Currently only `arpack` is implemented, which uses the ARPACK solver. See also `arpack`.
`which` | A list to specify which eigenvalues and eigenvectors to calculate. By default the leading (i.e. largest magnitude) eigenvalue and the corresponding eigenvector is calculated.
`options` | Options for the ARPACK solver. See `arpack_defaults`.

### Details

The `which` argument is a list and it specifies which eigenvalues and corresponding eigenvectors to calculate: There are eight options:

1. Eigenvalues with the largest magnitude. Set `pos` to `LM`, and `howmany` to the number of eigenvalues you want.

2. Eigenvalues with the smallest magnitude. Set `pos` to `SM` and `howmany` to the number of eigenvalues you want.

3. Largest eigenvalues. Set `pos` to `LA` and `howmany` to the number of eigenvalues you want.

4. Smallest eigenvalues. Set `pos` to `SA` and `howmany` to the number of eigenvalues you want.

5. Eigenvalues from both ends of the spectrum. Set `pos` to `BE` and `howmany` to the number of eigenvalues you want. If `howmany` is odd, then one more eigenvalue is returned from the larger end.

6. Selected eigenvalues. This is not (yet) implemented currently.

7. Eigenvalues in an interval. This is not (yet) implemented.

8. All eigenvalues. This is not implemented yet. The standard `eigen` function does a better job at this, anyway.

Note that ARPACK might be unstable for graphs with multiple components, e.g. graphs with isolate vertices.

### Value

Depends on the algorithm used.

For `arpack` a list with three entries is returned:

`options` | See the return value for `arpack` for a complete description.
`values` | Numeric vector, the eigenvalues.
`vectors` | Numeric matrix, with the eigenvectors as columns.

### Author(s)

Gabor Csardi csardi.gabor@gmail.com

### See Also

`as_adj` to create a (sparse) adjacency matrix.

### Examples

    ## Small example graph, leading eigenvector by default
    kite <- make_graph("Krackhardt_kite")
    spectrum(kite)[c("values", "vectors")]

    ## Double check
    eigen(as_adj(kite, sparse=FALSE))$vectors[,1]

    ## Should be the same as 'eigen_centrality' (but rescaled)
    cor(eigen_centrality(kite)$vector, spectrum(kite)$vectors)

    ## Smallest eigenvalues
    spectrum(kite, which=list(pos="SM", howmany=2))$values

[Package igraph version 1.1.2 Index]