Local correlation coefficient for two RasterLayer objects (using a focal neighborhood) or for two RasterStack or Brick objects (with the same number of layers (> 2))
methods
## S4 method for signature 'RasterLayer,RasterLayer'corLocal(x, y, ngb=5, method=c("pearson","kendall","spearman"), test=FALSE, filename='',...)## S4 method for signature 'RasterStackBrick,RasterStackBrick'corLocal(x, y, method=c("pearson","kendall","spearman"), test=FALSE, filename='',...)
Arguments
x: RasterLayer or RasterStack/RasterBrick
y: object of the same class as x, and with the same number of layers
ngb: neighborhood size. Either a single integer or a vector of two integers c(nrow, ncol)
method: character indicating which correlation coefficient is to be used. One of "pearson", "kendall", or "spearman"
test: logical. If TRUE, return a p-value
filename: character. Output filename (optional)
...: additional arguments as for writeRaster
Note
NA values are omitted
Returns
RasterLayer
See Also
cor, cor.test
Examples
b <- stack(system.file("external/rlogo.grd", package="raster"))b <- aggregate(b,2, mean)set.seed(0)b[[2]]<- flip(b[[2]],'y')+ runif(ncell(b))b[[1]]<- b[[1]]+ runif(ncell(b))x <- corLocal(b[[1]], b[[2]], test=TRUE)# plot(x)# only cells where the p-value < 0.1xm <- mask(x[[1]], x[[2]]<0.1, maskvalue=FALSE)plot(xm)# for global correlation, use the cor functionx <- as.matrix(b)cor(x, method="spearman")# use sampleRegular for large datasetsx <- sampleRegular(b,1000)cor.test(x[,1], x[,2])# RasterStack or Brick objectsy <- corLocal(b, flip(b,'y'))