Derive buffer distances using the raster::distance function, so that these can be used as predictors for spatial prediction i.e. to account for spatial proximity to low, medium and high values.
object of class "SpatialPointsDataFrame" containing observations of the target variable
predictionDomain
object of class "SpatialPixelsDataFrame"; prediction domain for which distances are estimated
classes
factor; split of the points
width
numeric; maximum search radius
...
other optional arguments that can be passed to raster::distance
Note
Number of breaks (numeric resolution) should be higher than the number of bins, for example, estimated for the histogram display. Machine learning techniques can be quite sensitive to blunders / artifacts in the input point data.
Author(s)
Tomislav Hengl
See Also
fit.gstatModel
Examples
library(sp)
library(raster)
library(gstat)
library(randomForest)
library(quantregForest)
library(plotKML)
library(scales)
## Load the Meuse data set:
demo(meuse, echo=FALSE)
classes <- cut(meuse$om, breaks=seq(0, 17, length=8))
## are these optimal splits?
grid.dist <- buffer.dist(meuse["om"], meuse.grid[1], classes)
plot(stack(grid.dist))
## quantregForest as a 'replacement' for kriging:
dn <- paste(names(grid.dist), collapse="+")
fm <- as.formula(paste("om ~", dn))
m <- fit.gstatModel(meuse, fm, grid.dist,
method="quantregForest")
plot(m)
dev.off()
## Residual variogram shows no spatial structure
rk.m <- predict(m, grid.dist, vgmmodel=NULL)
plot(rk.m)
dev.off()
## prediction error:
plot(sqrt(raster(rk.m@predicted[2])))
points(meuse, pch="+")
## Not run:
plotKML(rk.m@predicted["om"], colour_scale = SAGA_pal[[1]])
kml(meuse, file.name="om_points.kml", colour=om, labels=meuse$om)
kml_View("om_points.kml")
meuse$classes <- classes
plotKML(meuse["classes"])
## End(Not run)
## Example with zinc:
meuse.gridT <- meuse.grid
meuse.gridT@data <- cbind(meuse.grid@data, grid.dist@data)
fm1 <- as.formula(paste("om ~", dn, "+soil+dist+ffreq"))
m1 <- fit.gstatModel(meuse, fm1, meuse.gridT,
method="quantregForest", rvgm=NULL)
## no need to fit variogram in this case
plot(m1)
dev.off()
rk.m1 <- predict(m1, meuse.gridT, vgmmodel=NULL)
plot(rk.m1)
varImpPlot(m1@regModel)
dev.off()
## Not run:
plotKML(rk.m1@predicted["om"],
file.name="rk_combined.kml",
colour_scale = SAGA_pal[[1]])
## End(Not run)
## Zinc:
classes2 <- cut(meuse$zinc,
breaks=seq(min(meuse$zinc), max(meuse$zinc), length=10))
grid.dist2 <- buffer.dist(meuse["zinc"], meuse.grid[1], classes2)
dn2 <- paste(names(grid.dist2), collapse="+")
meuse.gridT2 <- meuse.grid
meuse.gridT2@data <- cbind(meuse.grid@data, grid.dist2@data)
fm2 <- as.formula(paste("zinc ~", dn2, "+soil+dist+ffreq"))
m2 <- fit.gstatModel(meuse, fm2, meuse.gridT2,
method="quantregForest")
varImpPlot(m2@regModel)
rk.m2 <- predict(m2, meuse.gridT2, vgmmodel=NULL)
plot(rk.m2)
dev.off()
## prediction error:
plot(raster(rk.m2@predicted[2]))
## Not run:
plotKML(rk.m2@predicted["zinc"],
file.name="rk_combined_zinc.kml",
colour_scale = SAGA_pal[[1]])
kml(meuse, colour=zinc,
file.name="zinc_points.kml", labels=meuse$zinc)
kml_View("zinc_points.kml")
## End(Not run)
Results
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(GSIF)
GSIF version 0.5-2 (2016-06-25)
URL: http://gsif.r-forge.r-project.org/
> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/GSIF/buffer.dist.Rd_%03d_medium.png", width=480, height=480)
> ### Name: buffer.dist-methods
> ### Title: Derive buffer distances to a set of points
> ### Aliases: buffer.dist
> ### buffer.dist,SpatialPointsDataFrame,SpatialPixelsDataFrame-method
>
> ### ** Examples
>
> library(sp)
> library(raster)
> library(gstat)
> library(randomForest)
randomForest 4.6-12
Type rfNews() to see new features/changes/bug fixes.
> library(quantregForest)
Loading required package: RColorBrewer
> library(plotKML)
plotKML version 0.5-6 (2016-05-02)
URL: http://plotkml.r-forge.r-project.org/
> library(scales)
>
> ## Load the Meuse data set:
> demo(meuse, echo=FALSE)
> classes <- cut(meuse$om, breaks=seq(0, 17, length=8))
> ## are these optimal splits?
> grid.dist <- buffer.dist(meuse["om"], meuse.grid[1], classes)
> plot(stack(grid.dist))
> ## quantregForest as a 'replacement' for kriging:
> dn <- paste(names(grid.dist), collapse="+")
> fm <- as.formula(paste("om ~", dn))
> m <- fit.gstatModel(meuse, fm, grid.dist,
+ method="quantregForest")
Fitting a Quantile Regression Forest model...
Warning: Shapiro-Wilk normality test and Anderson-Darling normality test report probability of < .05 indicating lack of normal distribution for residuals
Fitting a 2D variogram...
Saving an object of class 'gstatModel'...
Warning message:
In gstat::fit.variogram(svgm, model = ivgm, ...) :
No convergence after 200 iterations: try different initial values?
> plot(m)
Error in dev.new(width = 9, height = 5) :
no suitable unused file name for pdf()
Calls: plot -> plot -> dev.new
Execution halted