0

谁能告诉我为什么我会得到这个"Error in (function (classes, fdef, mtable)"

我在 R 示例中看到了有关第二个“网格”数据库的信息。我需要创建这个吗?到目前为止,我的目标变量、预测变量和坐标都在同一个数据库中。

还是我需要指定坐标系(CRS)?

谢谢你。

library(gstat)
library(maptools)

clean3145 = read.csv(file="clean3145.csv")
coordinates(clean3145)=~UTMEM+UTMNM
summary(clean3145)

#Variogram of LM residuals
logAs<-lm(logAs1 ~ Elev_m + Basin, clean3145)
residuals(logAs)
variogram(residuals(logAs)~UTMEM+UTMNM, clean3145)
plot(variogram(residuals(logAs)~UTMEM+UTMNM, clean3145), plot.nu=T, pch="+")

#Fit variogram
As.rev=variogram(residuals(logAs)~UTMEM+UTMNM, clean3145)
as.rvgm=fit.variogram(As.rev, vgm(nugget=0.25, model="Exp", range=15000, sill=0.6))
plot(As.rev, as.rvgm, plot.nu=T)
str(as.rvgm)

#Regression Kriging (rk)
library(sp)
AS.rk=krige(logAs, clean3145, as.rvgm)
4

2 回答 2

0

krige用作公式的第一个参数logAs1 ~ Elev_m + Basin,或者在任何情况下使用 a formula,而不是lm对象logAs

于 2015-02-24T16:54:22.350 回答
0

你认为你需要 grd 是正确的。这将为您提供克里金插值的采样网格。我修改了您的代码以包含示例网格。您可能需要尝试使用分辨率参数以使其适合您。祝你好运!

##Create sampling grid
x.range <- as.integer(range(clean3145@coords[, 1]))
y.range <- as.integer(range(clean3145@coords[, 2]))

resolution <- 4
grd <- expand.grid(x = seq(from = x.range[1], to = x.range[2], by = resolution), 
               y = seq(from = y.range[1],to = y.range[2], by = resolution))

coordinates(grd) <- ~x + y
gridded(grd) <- TRUE

#Variogram of LM residuals
logAs<-lm(logAs1 ~ Elev_m + Basin, clean3145)
residuals(logAs)
variogram(residuals(logAs)~UTMEM+UTMNM, clean3145)
plot(variogram(residuals(logAs)~UTMEM+UTMNM, clean3145), plot.nu=T, pch="+")

#Fit variogram
As.rev=variogram(residuals(logAs)~UTMEM+UTMNM, clean3145)
as.rvgm=fit.variogram(As.rev, vgm(nugget=0.25, model="Exp", range=15000, sill=0.6))
plot(As.rev, as.rvgm, plot.nu=T)
str(as.rvgm)

#Regression Kriging (rk)
library(sp)
AS.rk=krige(logAs, clean3145, as.rvgm, newdata = grd)
于 2014-10-30T17:38:15.233 回答