Как преобразовать dataframe в объект gstat в R? В частности, gstatVariogram

Я хотел бы создать вариограмму из некоторых данных вариабельности в R.

Я понимаю, что для подбора вариограммы требуется объект, сгенерированный vgm, и raw.vgm, сгенерированный вариограммой, например:

x = seq(0,300,by=300/100)
y = seq(0,0.9,by=(0.9/100))
Z = seq(0.0,10.0,by=(10/100))
raw.dat = data.frame(x=x,y=y,Z=Z)

g <- gstat(formula=Z~1, locations=~x+y, data=raw.dat)
raw.vgm <- variogram(g)

vg.exp <- vgm(psill=0.8,model='Exp', range = 50)
fit.exp <- fit.variogram(raw.vgm , model = vg.exp)

Однако, если у меня уже есть значения гамма (полувариантности) и расстояния, как мне получить объект gstat из этого?

Следующее выбрасывает ошибку:

dist = seq(0,30,by=0.3)
gamma = seq(0,0.9,by=(0.9/100))
raw.vgm = data.frame(dist=dist,gamma=gamma)
vg.exp <- vgm(psill=0.8,model='Exp',range=20)
fit.exp <- fit.variogram(raw.vgm, model=vg.exp)

Ошибка заключается в следующем:

Error in fit.variogram(raw.vgm, model = vg.exp) : 
  object should be of class gstatVariogram or variogramCloud

У меня только гамма и дистанционные лаги. Как мне создать gstatVariogram или variogramCloud? Благодарю.

1 ответ

Решение

После создания raw.vgm, вы должны установить его класс

class(raw.vgm) = c("gstatVariogram", "data.frame")

затем, fit.variogram также ожидает, что вариограмма имеет np поле с количеством используемых пар точек; Я устанавливаю это по одному

raw.vgm$np = rep(1, nrow(raw.vgm))

и, наконец, по умолчанию fit.method предполагает, что у вас нет значений вариограммы для нулевого расстояния, поэтому вы можете попробовать другие значения, такие как

fit.exp <- fit.variogram(raw.vgm, model=vg.exp,fit.method=1)
Другие вопросы по тегам