2

我想从 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)

但是,如果我已经有了 gamma(半方差)和距离值,我如何从中获取 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?谢谢。

4

1 回答 1

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)
于 2015-05-03T15:15:13.447 回答