Невозможно найти унаследованный метод для функции '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)