Provided by: grass-doc_6.4.3-3_all

#### 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 [-rq] map=name[,name,...]  [--verbose]  [--quiet]

Flags:
-r
Print correlation matrix

-q
Run quietly

--verbose
Verbose module output

--quiet
Quiet module output

Parameters:
map=name[,name,...]
Name of input 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 src.contrib can be compiled and used  to  generate  the  eigen
values and vectors.

```

#### EXAMPLE

```       For example, r.covar 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.

```

#### SEEALSO

```       i.pca, m.eigensystem, r.mapcalc, r.rescale

```

#### AUTHOR

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

Last changed: \$Date: 2008-05-16 12:09:06 -0700 (Fri, 16 May 2008) \$

Full index