好的,所以我知道在 gstat 中不可能在垂直方向上做变异函数,因为 z 坐标有一些东西。
但是,我想知道是否可以在 3 维中进行克里格法。如果无法在垂直方向获得变异函数,我不明白如何在 3 维中进行克里格法,因为克里金法取决于变异函数模型。这可能吗?
最后,当我执行以下操作时,克里金法会引发错误,我觉得这可能与没有足够的 3d 模型有关:
varY = var(training$Y) # sill of log(K) values
Ih = 60 # horizontal range
Iy = 30 # vertical range
e = Ih/Iy # anisotropy ratio (I_horizontal/ I_vertical)
mod <- vgm(psill = varY,'Exp',Ih, anis=c(0,90,0,1,e)) # axisymetric model with e*I_x = e*I_y = I_z
# define kriging domain
x <- sample(seq(0,300,by=5),10,replace=FALSE)
y <- sample(seq(0,300,by=5),10,replace=FALSE)
z <- sample(seq(0,30,by=0.5),100,replace=TRUE)
Y <- sample(seq(-3.0,-0.01,by=0.001),100*10*10,replace=TRUE)
grid = data.frame(x=rep(x,times=length(x)),y=rep(y,each=length(y)))
mydata = data.frame(x=rep(x,each=10),y=rep(y,times=10),z=z,Y=Y)
ok_3D <- krige(formula=Y~1, locations=~x+y+z, data=mydata, newdata=grid, model=mod)
但它抛出了这个错误:
Error in .subset(x,j) : only 0's may be mixed with negative subscripts
这是因为无法在 gstat 中定义垂直方向的变异函数吗?或者这是另一个问题?谢谢。