# example with raster
myraster = raster(nrows=40,ncols=60,xmn=-3,xmx=3,ymn=-2,ymx=2)
param = c(range=2, shape=2, anisoRatio=2, anisoAngleDegrees=-25)
# plot correlation of each cell with the origin
myMatern = matern(myraster, c(0,0), param=param)
plot(myMatern, main="anisortopic matern")
# correlation matrix for all cells with each other
myraster = raster(nrows=4,ncols=6,xmn=-3,xmx=3,ymn=-2,ymx=2)
myMatern = matern(myraster, param=c(range=2, shape=2))
dim(myMatern)
# plot the cell ID's
values(myraster) = seq(1, ncell(myraster))
mydf = as.data.frame(myraster, xy=TRUE)
plot(mydf$x, mydf$y, type='n', main="cell ID's")
text(mydf$x, mydf$y, mydf$layer)
# correlation between bottom-right cell and top right cell is
myMatern[6,24]
# example with points
mypoints = SpatialPointsDataFrame(cbind(runif(5), runif(5)),data=data.frame(id=1:5))
matern(mypoints, param=param)
# example with vector of distances
range=3
distVec = seq(0, 2*range, len=100)
shapeSeq = c(0.5, 1, 2,20)
theCov = NULL
for(D in shapeSeq) {
theCov = cbind(theCov, matern(distVec, param=c(range=range, shape=D)))
}
matplot(distVec, theCov, type='l', lty=1, xlab='distance', ylab='correlation',
main="matern correlations")
legend("topright", fill=1:length(shapeSeq), legend=shapeSeq,title='shape')
# exponential
distVec2 = seq(0, max(distVec), len=20)
points(distVec2, exp(-2*(distVec2/range)),cex=0.5)
# gaussian
points(distVec2, exp(-2*(distVec2/range)^2), col='blue',cex=0.5)
legend("right", pch=1, col=c('black','blue'), legend=c('exp','gau'))
# comparing to geoR and RandomFields
covGeoR = covRandomFields = NULL
for(D in shapeSeq) {
covGeoR = cbind(covGeoR,
geoR::matern(distVec, phi=range/sqrt(8*D), kappa=D))
covRandomFields = cbind(covRandomFields,
RandomFields::CovarianceFct(distVec, model="matern",
param = c(mean=0, variance=1, nugget=0,
scale=range/2, nu=D) ))
}
matplot(distVec, theCov, type='l', lty=1, xlab='distance', ylab='correlation',
main="geoR, RandF, and geostatsp")
matpoints(distVec, covGeoR, cex=0.5, pch=1)
matpoints(distVec, covRandomFields, cex=0.5, pch=2)
legend("topright", lty=c(1,NA,NA), pch=c(NA, 1, 2),
legend=c("geostatsp","geoR","RandomFields"))
Run the code above in your browser using DataLab