Read in data
# Oregon boundaries
orotl <- st_read("orotl.shp", quiet = TRUE)
st_crs(orotl) <- 4326
orotl<- readOGR("orotl.shp")
## OGR data source with driver: ESRI Shapefile
## Source: "/Users/jessieshapiro/Documents/Documents/Education/University of Utah/GEOG6000/Labs/lab10/oregon/orotl.shp", layer: "orotl"
## with 36 features
## It has 1 fields
# Oregon temperatures
ortann <- st_read("oregontann.shp", quiet = TRUE)
st_crs(ortann) <- 4326
# Oregon DEM file
orgrid <- st_read("orgrid.shp", quiet = TRUE)
st_crs(orgrid) <- 4326
orgrid.dem <- st_rasterize(orgrid, dx = 0.1667, dy = 0.1667)
# plot
plot(orgrid.dem, reset = FALSE)
plot(ortann["tann"],
add = TRUE,
pch = 16,
cex = 1.5)

Create a sample variogram
ortann.var = variogram(tann ~ 1, ortann)
#ortann.var = variogram(log(tann) ~ 1, ortann)
plot(ortann.var, plot.numbers=TRUE)

Create a varigoram model
ortann.vgm1 = vgm(psill= 3.5, "Cir", range= 190, nugget=0.5)
plot(ortann.var, ortann.vgm1)

Fit model to sample varigoram
ortann.vgm2 = fit.variogram(ortann.var, ortann.vgm1)
plot(ortann.var, ortann.vgm2)

Final fitted parameters of the variogram
ortann.vgm2
## model psill range
## 1 Nug 0.2076555 0.0000
## 2 Cir 3.7168890 208.1694
Interpolate annual temperature
ppt.pred.ok <- krige(ortann$tann ~ 1,
locations = ortann,
newdata = orgrid.dem,
model = ortann.vgm2,
nmax = 40)
## [using ordinary kriging]
names(ppt.pred.ok)
## [1] "var1.pred" "var1.var"
nclr = 9
plotclr <- brewer.pal(nclr, "Blues")
plot(ppt.pred.ok["var1.pred"], col = plotclr, main = "Oregon Temperature Data (Ordinary Kriging)", reset = FALSE)
plot(orotl, add = TRUE)

Run 5-fold cross-validation
ppt.cv.ok = krige.cv(tann ~ 1, ortann,
ortann.vgm2,
nmax=40,
nfold=5)
head(ppt.cv.ok)
## Simple feature collection with 6 features and 6 fields
## geometry type: POINT
## dimension: XY
## bbox: xmin: -123.883 ymin: 42.217 xmax: -117.817 ymax: 46.15
## CRS: NA
## var1.pred var1.var observed residual zscore fold
## 1 8.390349 1.1010059 9.6 1.2096507 1.1528297 2
## 2 10.852343 1.2288801 12.5 1.6476567 1.4863189 2
## 3 11.433005 1.0836932 11.1 -0.3330049 -0.3198876 4
## 4 10.743165 1.0352335 10.3 -0.4431648 -0.4355581 1
## 5 8.504996 0.5688224 7.6 -0.9049961 -1.1999368 4
## 6 8.081500 0.5972574 8.4 0.3184998 0.4121244 3
## geometry
## 1 POINT (-120.717 44.917)
## 2 POINT (-120.2 45.717)
## 3 POINT (-122.717 42.217)
## 4 POINT (-123.883 46.15)
## 5 POINT (-117.817 44.833)
## 6 POINT (-117.833 44.783)
RMSEP
sqrt(mean(ppt.cv.ok$residual^2))
## [1] 1.234224
R-Squared
cor(ppt.cv.ok$observed, ppt.cv.ok$var1.pred)^2
## [1] 0.5619103