Невозможно найти унаследованный метод для функции 'krige' для подписи '"lm", "SpatialPointsDataFrame"'

Кто-нибудь может сказать мне, почему я получаю это "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 ответа

Используйте в качестве первого аргумента krige формула logAs1 ~ Elev_m + Basinили в любом случае formulaвместо lm объект logAs,

Вы правы, думая, что вам нужен 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)
Другие вопросы по тегам