---
name: "r.covar"
section: "1grass"
platform: "linux"
package: "grass-doc"
version: "8.4.1-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/r.covar"
---

# r.covar(1grass)

Outputs a covariance/correlation matrix for user-specified raster map layer(s).

## NAME

**r.covar**  - Outputs a covariance/correlation matrix for user-specified raster map layer(s).

## KEYWORDS

raster, statistics

## SYNOPSIS

**r.covar**\
 **r.covar --help**\
 **r.covar** \[-**r**\] **map**=*name*\[,*name*,...\]  \[--**help**\]  \[--**verbose**\]  \[--**quiet**\]  \[--**ui**\]

### Flags:

- **-r**

  Print correlation matrix

- **--help**

  Print usage summary

- **--verbose**

  Verbose module output

- **--quiet**

  Quiet module output

- **--ui**

  Force launching GUI dialog

### Parameters:

- **map**=*name\[,name*,...\] **\[required\]**

  Name of raster map(s)

## DESCRIPTION

*r.covar* outputs a covariance/correlation matrix for user-specified raster map layer(s).  The output can be printed, or saved by redirecting output into a file.

The output is an N x N symmetric covariance (correlation) matrix, where N is the number of raster map layers specified on the command line.

## NOTES

This module can be used as the first step of a principle components transformation. The covariance matrix would be input into a system which determines eigen values and eigen vectors. An NxN covariance matrix would result in N real eigen values and N eigen vectors (each composed of N real numbers).

The module *m.eigensystem* in GRASS GIS Addons can be installed and used to generate the eigenvalues and vectors.

## EXAMPLE

For example,\

```
g.region raster=layer.1 -p
r.covar -r map=layer.1,layer.2,layer.3
```

would produce a 3x3 matrix (values are example only):\

```
     1.000000  0.914922  0.889581
     0.914922  1.000000  0.939452
     0.889581  0.939452  1.000000
```

In the above example, the eigen values and corresponding eigen vectors for the covariance matrix are:\

```
component   eigen value               eigen vector
    1       1159.745202   <0.691002  0.720528  0.480511>
    2          5.970541   <0.711939 -0.635820 -0.070394>
    3        146.503197   <0.226584  0.347470 -0.846873>
```

The component corresponding to each vector can be produced using *r.mapcalc* as follows:\

```
r.mapcalc "pc.1 = 0.691002*layer.1 + 0.720528*layer.2 + 0.480511*layer.3"
r.mapcalc "pc.2 = 0.711939*layer.1 - 0.635820*layer.2 - 0.070394*layer.3"
r.mapcalc "pc.3 = 0.226584*layer.1 + 0.347470*layer.2 - 0.846873*layer.3"
```

Note that based on the relative sizes of the eigen values, *pc.1* will contain about 88% of the variance in the data set, *pc.2* will contain about 1% of the variance in the data set, and *pc.3* will contain about 11% of the variance in the data set. Also, note that the range of values produced in *pc.1*, *pc.2*, and *pc.3* will not (in general) be the same as those for *layer.1*, *layer.2*, and *layer.3*. It may be necessary to rescale *pc.1*, *pc.2* and *pc.3* to the desired range (e.g. 0-255). This can be done with *r.rescale*.

## SEE ALSO

*i.pca,* *m.eigensystem (Addon),* *r.mapcalc,* *r.rescale*

## AUTHOR

Michael Shapiro, U.S. Army Construction Engineering Research Laboratory

## SOURCE CODE

Available at: r.covar source code (history)

Accessed: Monday Feb 24 17:50:35 2025

Main index \| Raster index \| Topics index \| Keywords index \| Graphical index \| Full index

© 2003-2025 GRASS Development Team, GRASS GIS 8.4.1 Reference Manual
