regression kriging, newdata parameter
I would take a very good look at the regression kriging literature (or that of universal kriging, or external drift kriging -- terms that were there before regression kriging came up). It looks like the method cannot be applied in your case. -- Edzer
On 02/23/2011 08:51 PM, giuseppe calamita wrote:
Hi, I want to perform spatial interpolation of soil moisture (here named 'sm') using regression kriging (RK) following the example given by Tom Hengl http://spatial-analyst.net/wiki/index.php?title=Spatial_prediction_of_soil_moisture) and compare results with OK. The covariate is the soil electrical resistivity (her named 'res') and is stored in the same data.frame of the target variable. sm and res data were collected on a regular grid 200x60 m with a 5m sampling step and the coordinates are given in ED50, UTM zone33. CRS. Searching on the sig-Geo archive i discovered that other peoples had more or less the same problem as mine, but there are some differences. All the examples i read used the meuse.grid data set which already stores covariates (dist, soils, ffreq...) and coordinates at an higher spatial resolution than the target variable sample. This is not my case. because res is sampled at the points of sm. I had to define the grid by myself. #read data
casa032009 <- read.csv("C:/data/morfeo/morfeo_data/casa_032009.csv")
str(casa032009)
'data.frame': 533 obs. of 9 variables: $ objectid: int 489 490 491 492 493 494 495 496 1 2 ... $ row : int 185 180 175 170 165 160 155 150 195 190 ... $ col : Factor w/ 13 levels "A","B","C","D",..: 1 1 1 1 1 1 1 1 2 2 ... $ key : Factor w/ 533 levels "A0","A10","A100",..: 21 20 19 18 17 16 15 14 64 63 ... $ ka : num 23.4 19 14.4 14.5 16.6 16.8 14.2 14.8 16.7 21.5 ... $ sm : num 37.3 32 26.7 26.7 29 29.3 26.5 27.1 29.2 35.2 ... $ x : num 288097 288102 288107 288112 288117 ... $ y : num 4754051 4754051 4754052 4754052 4754053 ... $ res : num 55.1 56.3 63 62.9 57.2 ... #explicit spatial object
coordinates(casa032009) <- c("x", "y")
# divide the data set in calibration and validation groups
> dim(casa032009 at data)[1]/3 >valid.id <- sample(1:dim(casa032009 at data)[1],
180)
>casa032009.val <- casa032009[valid.id,] #valiadtion data set
>str(casa032009.val)
>casa032009.cal <- casa032009[!is.element(1:dim(casa032009 at data)[1],
valid.id),] #calibration data set, almost 350 points
>str(casa032009.cal)
#regression model
>lm.casa <- lm(sm ~ res, data= as.data.frame(casa032009.cal)) >summary(lm.casa)
#variogram analysis
v.rk <- variogram(residuals(lm.casa)~1, casa032009.cal) > plot(v.rk, pl=T) >vm.rk <- vgm(psill=16, "Exp", range=9, nugget=2) #eye-ball fit >plot(v.rk, pl=T, model=vm.rk) >vmf.rk <- fit.variogram(v.rk, vm.rk) #statistical fit >vmf.rk >plot(v.rk, pl=T, model=vmf.rk) bbox(casa032009) (min.x <- bbox(casa032009)["x","min"]-2) (min.y <- bbox(casa032009)["y","min"]-1.75) (max.x <- bbox(casa032009)["x","max"]+2) (max.y <- bbox(casa032009)["y","max"]+1.75) (cells.x <- (max.x - min.x)/4) (cells.y <- (max.y - min.y)/4) casa.grid <- (GridTopology(c(min.x+2.5, min.y+2.5), c(5, 5), c(cells.x, cells.y))) casa.grid <- SpatialGrid(casa.grid) str(casa.grid)
sm.rk <- krige(sm ~ res, location=casa032009.cal, newdata=casa.grid,
model=vmf.rk)
The problem is : I understand the 'newdata' parameter of the krige function
needs a SpatialGrifDataFrame containig res data at each grid node. I don't know
how create a SpatialGridDataFrames storing res data on points that are different
from the ones that were sampled.
Thanks for any help.
Giuseppe
[[alternative HTML version deleted]]
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Edzer Pebesma Institute for Geoinformatics (ifgi), University of M?nster Weseler Stra?e 253, 48151 M?nster, Germany. Phone: +49 251 8333081, Fax: +49 251 8339763 http://ifgi.uni-muenster.de http://www.52north.org/geostatistics e.pebesma at wwu.de