无法为签名'" lm"," SpatialPointsDataFrame"'找到函数'krige'的继承方法

时间:2014-10-29 23:43:00

标签: r gstat

有谁可以告诉我为什么我会得到这个"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)

2 个答案:

答案 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