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

78
9

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

спросил(а) 2021-01-19T20:01:24+03:00 6 месяцев, 1 неделя назад
1
Решение
133

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

ответил(а) 2021-01-19T20:01:24+03:00 6 месяцев, 1 неделя назад
46

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

ответил(а) 2021-01-19T20:01:24+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема