如何将数据帧转换为 R 中的 gstat 对象?特别是 gstatVariogram
How to convert a dataframe into a gstat object in R? Specifically a 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)
但是,如果我已经有了 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?谢谢。
创建 raw.vgm
后,您必须通过
设置其 class
class(raw.vgm) = c("gstatVariogram", "data.frame")
然后,fit.variogram
还期望变差函数有一个 np
字段,其中包含使用的点对数;我通过
将其设置为 1
raw.vgm$np = rep(1, nrow(raw.vgm))
最后默认的 fit.method
假定您没有零距离的变差函数值,因此您可能想尝试其他值,例如
fit.exp <- fit.variogram(raw.vgm, model=vg.exp,fit.method=1)
我想根据 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?谢谢。
创建 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)