sampledata <-read.csv("Set4.196sample.csv")
wheatdata <- read.csv("Set4.196wheatyield.csv")

Data is sampled on a mostly regular grid with a few points missing in the bottom right. As such it alleviates challenges raised to random sampling by spatial data gathering processes. Interpolation would likely be valid.

coordinates(sampledata) <- c("Easting","Northing")
coordinates(wheatdata) <- c("Easting","Northing")

idwwheat <- idw(wheatdata$Yield~1, wheatdata, sampledata)
[inverse distance weighted interpolation]
spplot(idwwheat["var1.pred"])

The plot shows an inverse distance weight interpolation from the yield data to the sampling data. The plot suggests higher yields are observed at the bottom of the field.

head(idwwheat@data)
bdry.sf <- st_read("Set419697bdry.shp")
Reading layer `Set419697bdry' from data source `C:\Users\Localadmin\Documents\MATH944\Homework\Set419697bdry.shp' using driver `ESRI Shapefile'
Simple feature collection with 1 feature and 2 fields
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: 592025 ymin: 4270352 xmax: 592470 ymax: 4271132
CRS:            NA
bdry.spdf <- as(bdry.sf, "Spatial")    
bbox(bdry.spdf)
      min     max
x  592025  592470
y 4270352 4271132
xseq <- seq(from= 592025, to = 592470, by= 5)
yseq <- seq(from = 4270352, to = 4271132, by= 5)
bdry.spdfdd <- expand.grid(xseq, yseq)
coordinates(bdry.spdfdd)<- c("Var1","Var2")

idwclay <- idw(sampledata$Clay~1, sampledata, bdry.spdfdd)
[inverse distance weighted interpolation]
spplot(idwclay["var1.pred"])

Gives an inverse distance weight interpolation from the sample data clay content onto a grid with distances of 5 meters between points. Plot suggests majority of clay content is at the top of the field.


clay.irr <- idwclay[bdry.spdf,]

spplot(clay.irr["var1.pred"])

Gives a subset of the previous plot including only the values included in the original irregular field.

data.var <- variogram(sampledata$Clay ~ 1, sampledata, cutoff= 600)
data.fit <- fit.variogram(data.var, model = vgm(1, "Gau", 700, 1))
plot(data.var,data.fit)


data.krig <- krige(sampledata$Clay~1, sampledata, bdry.spdfdd, model=data.fit)
[using ordinary kriging]
spplot(data.krig["var1.pred"])

The above is the krigging interpolation for clay based on a gausian variogram model. Results are consistent with the previous plots. Additionally a plot is included which displays the variogram model.

claymodel <-lm(Clay~ Northing, data=sampledata)
summary(claymodel)

Call:
lm(formula = Clay ~ Northing, data = sampledata)

Residuals:
    Min      1Q  Median      3Q     Max 
-7.8470 -3.1530  0.5723  3.2655  6.0717 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -9.059e+04  8.248e+03  -10.98   <2e-16 ***
Northing     2.122e-02  1.931e-03   10.99   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.046 on 84 degrees of freedom
Multiple R-squared:  0.5897,    Adjusted R-squared:  0.5848 
F-statistic: 120.7 on 1 and 84 DF,  p-value: < 2.2e-16
plot(sampledata$Northing, sampledata$Clay)
abline(claymodel)

sampledataresid <-add_residuals(sampledata, claymodel, var ="resid")

I detrend the data with a SLR relating Clay to the northing coordinates.

resid.var <-variogram(sampledataresid$resid~1, sampledataresid, cutoff= 600)
resid.fit <- fit.variogram(resid.var, model = vgm(1, "Gau", 700, 1))

resid.krig <- krige(sampledataresid$resid~1, sampledataresid, bdry.spdfdd, model=resid.fit)
[using ordinary kriging]
plot(resid.var,resid.fit)
resid.krig$var2.pred <- coef(claymodel)[1] + coef(claymodel)[2]*bdry.spdfdd@coords[,2] + resid.krig$var1.pred
par(mfrow = c(1,2))


spplot(resid.krig["var2.pred"])

spplot(resid.krig["var1.pred"])

head(bdry.spdfdd)
class       : SpatialPoints 
features    : 1 
extent      : 592025, 592025, 4270352, 4270352  (xmin, xmax, ymin, ymax)
crs         : NA 

Krigging interpolation is done on the residuals and the model is retrended. Plot is provided for both residuals and retrended.

par(mfrow = c(1,2))

spplot(resid.krig["var2.pred"])

spplot(data.krig["var1.pred"])

Side by side comparison for trended and detrended data. Results are similar, But detrended more accurately reflects the concentration of clay content.

LS0tDQp0aXRsZTogIldoZWF0IEZpZWxkIEFuYWx5c2lzIg0KYXV0aG9yOiAiQWRhbSBTYWJvbCINCmRhdGU6ICIxMC8yNi8yMDIwIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3J9DQpzYW1wbGVkYXRhIDwtcmVhZC5jc3YoIlNldDQuMTk2c2FtcGxlLmNzdiIpDQp3aGVhdGRhdGEgPC0gcmVhZC5jc3YoIlNldDQuMTk2d2hlYXR5aWVsZC5jc3YiKQ0KYGBgDQoNCmBgYHtyLCBpbmNsdWRlPUZ9DQpsaWJyYXJ5KG1hcHRvb2xzKQ0KbGlicmFyeShnc3RhdCkNCmxpYnJhcnkoc2YpDQpsaWJyYXJ5KHNwKQ0KbGlicmFyeShyZ2RhbCkNCmxpYnJhcnkocmFzdGVyKQ0KbGlicmFyeShtb2RlbHIpDQpgYGANCg0KYGBge3IsIGVjaG8gPSBGQUxTRX0NCnBsb3QoeD0gd2hlYXRkYXRhJEVhc3RpbmcsIHk9IHdoZWF0ZGF0YSROb3J0aGluZywgIGNvbD0icmVkIiwgY2V4PS4wMDUpDQpwb2ludHMoc2FtcGxlZGF0YSRFYXN0aW5nLCBzYW1wbGVkYXRhJE5vcnRoaW5nLCBwY2g9MTkpDQpgYGANCg0KRGF0YSBpcyBzYW1wbGVkIG9uIGEgbW9zdGx5IHJlZ3VsYXIgZ3JpZCB3aXRoIGEgZmV3IHBvaW50cyBtaXNzaW5nIGluIHRoZSBib3R0b20gcmlnaHQuIEFzIHN1Y2ggaXQgYWxsZXZpYXRlcyBjaGFsbGVuZ2VzIHJhaXNlZCB0byByYW5kb20gc2FtcGxpbmcgYnkgc3BhdGlhbCBkYXRhIGdhdGhlcmluZyBwcm9jZXNzZXMuIEludGVycG9sYXRpb24gd291bGQgbGlrZWx5IGJlIHZhbGlkLiAgDQoNCmBgYHtyfQ0KY29vcmRpbmF0ZXMoc2FtcGxlZGF0YSkgPC0gYygiRWFzdGluZyIsIk5vcnRoaW5nIikNCmNvb3JkaW5hdGVzKHdoZWF0ZGF0YSkgPC0gYygiRWFzdGluZyIsIk5vcnRoaW5nIikNCg0KaWR3d2hlYXQgPC0gaWR3KHdoZWF0ZGF0YSRZaWVsZH4xLCB3aGVhdGRhdGEsIHNhbXBsZWRhdGEpDQoNCnNwcGxvdChpZHd3aGVhdFsidmFyMS5wcmVkIl0pDQoNCmBgYA0KVGhlIHBsb3Qgc2hvd3MgYW4gaW52ZXJzZSBkaXN0YW5jZSB3ZWlnaHQgaW50ZXJwb2xhdGlvbiBmcm9tIHRoZSB5aWVsZCBkYXRhIHRvIHRoZSBzYW1wbGluZyBkYXRhLiBUaGUgcGxvdCBzdWdnZXN0cyBoaWdoZXIgeWllbGRzIGFyZSBvYnNlcnZlZCBhdCB0aGUgYm90dG9tIG9mIHRoZSBmaWVsZC4gDQoNCg0KYGBge3J9DQpoZWFkKGlkd3doZWF0QGRhdGEpDQpgYGANCg0KDQpgYGB7cn0NCmJkcnkuc2YgPC0gc3RfcmVhZCgiU2V0NDE5Njk3YmRyeS5zaHAiKQ0KYmRyeS5zcGRmIDwtIGFzKGJkcnkuc2YsICJTcGF0aWFsIikgICAgDQpgYGANCmBgYHtyfQ0KYmJveChiZHJ5LnNwZGYpDQp4c2VxIDwtIHNlcShmcm9tPSA1OTIwMjUsIHRvID0gNTkyNDcwLCBieT0gNSkNCnlzZXEgPC0gc2VxKGZyb20gPSA0MjcwMzUyLCB0byA9IDQyNzExMzIsIGJ5PSA1KQ0KYmRyeS5zcGRmZGQgPC0gZXhwYW5kLmdyaWQoeHNlcSwgeXNlcSkNCmNvb3JkaW5hdGVzKGJkcnkuc3BkZmRkKTwtIGMoIlZhcjEiLCJWYXIyIikNCmBgYA0KYGBge3J9DQoNCmlkd2NsYXkgPC0gaWR3KHNhbXBsZWRhdGEkQ2xheX4xLCBzYW1wbGVkYXRhLCBiZHJ5LnNwZGZkZCkNCg0Kc3BwbG90KGlkd2NsYXlbInZhcjEucHJlZCJdKQ0KDQpgYGANCkdpdmVzIGFuIGludmVyc2UgZGlzdGFuY2Ugd2VpZ2h0IGludGVycG9sYXRpb24gZnJvbSB0aGUgc2FtcGxlIGRhdGEgY2xheSBjb250ZW50IG9udG8gYSBncmlkIHdpdGggZGlzdGFuY2VzIG9mIDUgbWV0ZXJzIGJldHdlZW4gcG9pbnRzLiBQbG90IHN1Z2dlc3RzIG1ham9yaXR5IG9mIGNsYXkgY29udGVudCBpcyBhdCB0aGUgdG9wIG9mIHRoZSBmaWVsZC4gDQpgYGB7cn0NCg0KY2xheS5pcnIgPC0gaWR3Y2xheVtiZHJ5LnNwZGYsXQ0KDQpzcHBsb3QoY2xheS5pcnJbInZhcjEucHJlZCJdKQ0KYGBgDQpHaXZlcyBhIHN1YnNldCBvZiB0aGUgcHJldmlvdXMgcGxvdCBpbmNsdWRpbmcgb25seSB0aGUgdmFsdWVzIGluY2x1ZGVkIGluIHRoZSBvcmlnaW5hbCBpcnJlZ3VsYXIgZmllbGQuIA0KYGBge3J9DQpkYXRhLnZhciA8LSB2YXJpb2dyYW0oc2FtcGxlZGF0YSRDbGF5IH4gMSwgc2FtcGxlZGF0YSwgY3V0b2ZmPSA2MDApDQpkYXRhLmZpdCA8LSBmaXQudmFyaW9ncmFtKGRhdGEudmFyLCBtb2RlbCA9IHZnbSgxLCAiR2F1IiwgNzAwLCAxKSkNCnBsb3QoZGF0YS52YXIsZGF0YS5maXQpDQoNCmRhdGEua3JpZyA8LSBrcmlnZShzYW1wbGVkYXRhJENsYXl+MSwgc2FtcGxlZGF0YSwgYmRyeS5zcGRmZGQsIG1vZGVsPWRhdGEuZml0KQ0Kc3BwbG90KGRhdGEua3JpZ1sidmFyMS5wcmVkIl0pDQpgYGANClRoZSBhYm92ZSBpcyB0aGUga3JpZ2dpbmcgaW50ZXJwb2xhdGlvbiBmb3IgY2xheSBiYXNlZCBvbiBhIGdhdXNpYW4gdmFyaW9ncmFtIG1vZGVsLiBSZXN1bHRzIGFyZSBjb25zaXN0ZW50IHdpdGggdGhlIHByZXZpb3VzIHBsb3RzLiBBZGRpdGlvbmFsbHkgYSBwbG90IGlzIGluY2x1ZGVkIHdoaWNoIGRpc3BsYXlzIHRoZSB2YXJpb2dyYW0gbW9kZWwuIA0KYGBge3J9DQpjbGF5bW9kZWwgPC1sbShDbGF5fiBOb3J0aGluZywgZGF0YT1zYW1wbGVkYXRhKQ0Kc3VtbWFyeShjbGF5bW9kZWwpDQpwbG90KHNhbXBsZWRhdGEkTm9ydGhpbmcsIHNhbXBsZWRhdGEkQ2xheSkNCmFibGluZShjbGF5bW9kZWwpDQpzYW1wbGVkYXRhcmVzaWQgPC1hZGRfcmVzaWR1YWxzKHNhbXBsZWRhdGEsIGNsYXltb2RlbCwgdmFyID0icmVzaWQiKQ0KYGBgDQpJIGRldHJlbmQgdGhlIGRhdGEgd2l0aCBhIFNMUiByZWxhdGluZyBDbGF5IHRvIHRoZSBub3J0aGluZyBjb29yZGluYXRlcy4gDQpgYGB7cn0NCnJlc2lkLnZhciA8LXZhcmlvZ3JhbShzYW1wbGVkYXRhcmVzaWQkcmVzaWR+MSwgc2FtcGxlZGF0YXJlc2lkLCBjdXRvZmY9IDYwMCkNCnJlc2lkLmZpdCA8LSBmaXQudmFyaW9ncmFtKHJlc2lkLnZhciwgbW9kZWwgPSB2Z20oMSwgIkdhdSIsIDcwMCwgMSkpDQoNCnJlc2lkLmtyaWcgPC0ga3JpZ2Uoc2FtcGxlZGF0YXJlc2lkJHJlc2lkfjEsIHNhbXBsZWRhdGFyZXNpZCwgYmRyeS5zcGRmZGQsIG1vZGVsPXJlc2lkLmZpdCkNCnBsb3QocmVzaWQudmFyLHJlc2lkLmZpdCkNCnJlc2lkLmtyaWckdmFyMi5wcmVkIDwtIGNvZWYoY2xheW1vZGVsKVsxXSArIGNvZWYoY2xheW1vZGVsKVsyXSpiZHJ5LnNwZGZkZEBjb29yZHNbLDJdICsgcmVzaWQua3JpZyR2YXIxLnByZWQNCnBhcihtZnJvdyA9IGMoMSwyKSkNCg0Kc3BwbG90KHJlc2lkLmtyaWdbInZhcjIucHJlZCJdKQ0Kc3BwbG90KHJlc2lkLmtyaWdbInZhcjEucHJlZCJdKQ0KaGVhZChiZHJ5LnNwZGZkZCkNCmBgYA0KS3JpZ2dpbmcgaW50ZXJwb2xhdGlvbiBpcyBkb25lIG9uIHRoZSByZXNpZHVhbHMgYW5kIHRoZSBtb2RlbCBpcyByZXRyZW5kZWQuIFBsb3QgaXMgcHJvdmlkZWQgZm9yIGJvdGggcmVzaWR1YWxzIGFuZCByZXRyZW5kZWQuDQpgYGB7cn0NCnBhcihtZnJvdyA9IGMoMSwyKSkNCg0Kc3BwbG90KHJlc2lkLmtyaWdbInZhcjIucHJlZCJdKQ0Kc3BwbG90KGRhdGEua3JpZ1sidmFyMS5wcmVkIl0pDQpgYGANClNpZGUgYnkgc2lkZSBjb21wYXJpc29uIGZvciB0cmVuZGVkIGFuZCBkZXRyZW5kZWQgZGF0YS4gUmVzdWx0cyBhcmUgc2ltaWxhciwgQnV0IGRldHJlbmRlZCBtb3JlIGFjY3VyYXRlbHkgcmVmbGVjdHMgdGhlIGNvbmNlbnRyYXRpb24gb2YgY2xheSBjb250ZW50LiA=