NAME
r.covar - Outputs a covariance/correlation matrix for user-specified raster map layer(s).
KEYWORDS
raster
SYNOPSIS
r.covar
r.covar help
r.covar [-rq] map=name[,name,...]
Flags:
- -r
- Print correlation matrix
- -q
- Quiet
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.
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
PRINCIPLE COMPONENTS
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).
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.
NOTES
The module m.eigensystem in
src.contrib can be compiled and used to generate the eigen values and
vectors.
SEE ALSO
i.pca,
m.eigensystem,
r.mapcalc,
r.rescale
AUTHOR
Michael Shapiro, U.S. Army Construction Engineering Research Laboratory
Last changed: $Date: 2003/05/06 12:57:35 $
Main index - raster index - Full index