layerStats.Rd
Compute correlation and (weighted) covariance for multi-layer Raster objects. Like cellStats
this function returns a few values, not a Raster* object (see Summary-methods
for that).
layerStats(x, stat, w, asSample=TRUE, na.rm=FALSE, ...)
RasterStack or RasterBrick for which to compute a statistic
Character. The statistic to compute: either 'cov' (covariance), 'weighted.cov' (weighted covariance), or 'pearson' (correlation coefficient)
RasterLayer with the weights (should have the same extent, resolution and number of layers as x
) to compute the weighted covariance
Logical. If TRUE
, the statistic for a sample (denominator is n-1
) is computed, rather than for the population (denominator is n
)
Logical. Should missing values be removed?
Additional arguments (none implemetned)
List with two items: the correlation or (weighted) covariance matrix, and the (weighted) means.
For the weighted covariance:
Canty, M.J. and A.A. Nielsen, 2008. Automatic radiometric normalization of multitemporal satellite imagery with the iteratively re-weighted MAD transformation. Remote Sensing of Environment 112:1025-1036.
Nielsen, A.A., 2007. The regularized iteratively reweighted MAD method for change detection in multi- and hyperspectral data. IEEE Transactions on Image Processing 16(2):463-478.
b <- brick(system.file("external/rlogo.grd", package="raster"))
layerStats(b, 'pearson')
#> $`pearson correlation coefficient`
#> red green blue
#> red 1.0000000 0.9980961 0.9501633
#> green 0.9980961 1.0000000 0.9658011
#> blue 0.9501633 0.9658011 1.0000000
#>
#> $mean
#> red green blue
#> 182.2855 185.3509 192.8046
#>
layerStats(b, 'cov')
#> $covariance
#> red green blue
#> red 5564.371 5443.405 4993.165
#> green 5443.405 5345.403 4974.478
#> blue 4993.165 4974.478 4962.942
#>
#> $mean
#> red green blue
#> 182.2855 185.3509 192.8046
#>
# weigh by column number
w <- init(b, v='col')
layerStats(b, 'weighted.cov', w=w)
#> $`weigthed covariance`
#> red green blue
#> red 5670.750 5536.351 5009.851
#> green 5536.351 5427.161 4987.092
#> blue 5009.851 4987.092 4937.007
#>
#> $`weighted mean`
#> layer.1 layer.2 layer.3
#> 177.5983 181.3521 191.5236
#>