有谁可以告诉我为什么我会得到这个"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)
答案 0 :(得分:0)
你认为自己需要grd是正确的。这将为您的克里金插值提供采样网格。我修改了你的代码以包含一个示例网格。您可能需要尝试使用resolution参数来使其适用于您。祝你好运!
##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)
答案 1 :(得分:0)
用作krige
公式logAs1 ~ Elev_m + Basin
的第一个参数,或者在任何情况下用作formula
,而不是lm
对象logAs
。