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)

ただし、ガンマ (半分散) と距離の値が既にある場合、そこから 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私はそれを1つずつ設定しています

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 に答える