使用 lat long gstat R 的通用克里金法
Universal kriging using lat long gstat R
我是 R 的新手,在使用 gstat R 执行通用克里金法时遇到了一些麻烦。
作为 Hengl 等人。 (2004) 说 "Universal kriging should be reserved for the case where the drift (or trend) is modelled as a function of the coordinates only"。所以,我想在通用克里金法中只使用坐标而不使用距离。
谁能告诉我怎么做?我是这样进行的:
library(sp)
library(gstat)
data(meuse)
coordinates(meuse) <- c("x", "y")
data(meuse.grid)
coordinates(meuse.grid) <- c("x", "y")
meuse.grid <- as(meuse.grid, "SpatialPixelsDataFrame")
plot(variogram(log(zinc) ~ meuse@coords, meuse),pch=19)
v1 <- variogram(log(zinc) ~ meuse@coords, meuse)
p1 <- vgm(psill = 0.42, model = 'Cir', range = 1000, nugget = 0.08)
fit1 <- fit.variogram(v1, p1)
# Trying to use the coordinates with meuse@coords
uk1 <- krige(log(zinc) ~ meuse@coords, meuse, meuse.grid, fit1)
# Trying to get coordinates as data column
xy <- as.data.frame(meuse@coords)
meuse$long <- xy$x
meuse$lat <- xy$y
uk2 <- krige(log(zinc) ~ meuse$long + meuse$lat, meuse, meuse.grid, fit1)
谢谢!
我其实不太清楚 T. Hengl 在他 2004 年的论文中的意思。那篇论文讲的是UK、RK、KED的区别,其实都是等价的。首先你拟合一个趋势,一个多元线性模型,然后在这些残差上拟合一个变差函数模型。
如果您想在 R 中的 UK 模型中使用坐标作为漂移,您只需执行以下操作:
library(sp)
library(gstat)
data(meuse)
coordinates(meuse) <- c("x", "y")
data(meuse.grid)
coordinates(meuse.grid) <- c("x", "y")
meuse.grid <- as(meuse.grid, "SpatialPixelsDataFrame")
meuse$X <- as.numeric(meuse@coords[,1])
meuse$Y <- as.numeric(meuse@coords[,2])
meuse.grid$X <-as.numeric(meuse.grid@coords[,1])
meuse.grid$Y <-as.numeric(meuse.grid@coords[,2])
plot(variogram(log(zinc) ~ X+Y, meuse),pch=19)
v1 <- variogram(log(zinc) ~ X+Y, meuse)
p1 <- vgm(psill = 0.42, model = 'Cir', range = 1000, nugget = 0.08)
fit1 <- fit.variogram(v1, p1)
# Trying to use the coordinates with meuse@coords
uk1 <- krige(log(zinc) ~ X+Y, meuse, meuse.grid, fit1)
# Trying to get coordinates as data column
uk2 <- krige(log(zinc) ~ X+Y , meuse, meuse.grid, fit1)
我是 R 的新手,在使用 gstat R 执行通用克里金法时遇到了一些麻烦。
作为 Hengl 等人。 (2004) 说 "Universal kriging should be reserved for the case where the drift (or trend) is modelled as a function of the coordinates only"。所以,我想在通用克里金法中只使用坐标而不使用距离。
谁能告诉我怎么做?我是这样进行的:
library(sp)
library(gstat)
data(meuse)
coordinates(meuse) <- c("x", "y")
data(meuse.grid)
coordinates(meuse.grid) <- c("x", "y")
meuse.grid <- as(meuse.grid, "SpatialPixelsDataFrame")
plot(variogram(log(zinc) ~ meuse@coords, meuse),pch=19)
v1 <- variogram(log(zinc) ~ meuse@coords, meuse)
p1 <- vgm(psill = 0.42, model = 'Cir', range = 1000, nugget = 0.08)
fit1 <- fit.variogram(v1, p1)
# Trying to use the coordinates with meuse@coords
uk1 <- krige(log(zinc) ~ meuse@coords, meuse, meuse.grid, fit1)
# Trying to get coordinates as data column
xy <- as.data.frame(meuse@coords)
meuse$long <- xy$x
meuse$lat <- xy$y
uk2 <- krige(log(zinc) ~ meuse$long + meuse$lat, meuse, meuse.grid, fit1)
谢谢!
我其实不太清楚 T. Hengl 在他 2004 年的论文中的意思。那篇论文讲的是UK、RK、KED的区别,其实都是等价的。首先你拟合一个趋势,一个多元线性模型,然后在这些残差上拟合一个变差函数模型。
如果您想在 R 中的 UK 模型中使用坐标作为漂移,您只需执行以下操作:
library(sp)
library(gstat)
data(meuse)
coordinates(meuse) <- c("x", "y")
data(meuse.grid)
coordinates(meuse.grid) <- c("x", "y")
meuse.grid <- as(meuse.grid, "SpatialPixelsDataFrame")
meuse$X <- as.numeric(meuse@coords[,1])
meuse$Y <- as.numeric(meuse@coords[,2])
meuse.grid$X <-as.numeric(meuse.grid@coords[,1])
meuse.grid$Y <-as.numeric(meuse.grid@coords[,2])
plot(variogram(log(zinc) ~ X+Y, meuse),pch=19)
v1 <- variogram(log(zinc) ~ X+Y, meuse)
p1 <- vgm(psill = 0.42, model = 'Cir', range = 1000, nugget = 0.08)
fit1 <- fit.variogram(v1, p1)
# Trying to use the coordinates with meuse@coords
uk1 <- krige(log(zinc) ~ X+Y, meuse, meuse.grid, fit1)
# Trying to get coordinates as data column
uk2 <- krige(log(zinc) ~ X+Y , meuse, meuse.grid, fit1)