我正在尝试使用 R 中的 Gstat 包模拟两个不同的随机场(具有不同均值和相关长度的 yy1 和 yy2)与不规则边界的组合。我附上了我预期结果的图片。代码没有始终如一地提供这样的输出,我经常将 yy1 和 yy2 中的至少一个作为 NaN,这会导致如图所示的 Undesired 输出。
我使用的关键步骤是:
1) 创建了两个具有不同均值和 psill (rf1 和 rf2) 的 gstat 对象 2) 以数据框的形式创建了两个计算网格(每个随机场一个),具有两个变量“x”和“y”坐标。3) 使用无条件模拟预测两个随机场。
在这方面的任何帮助将不胜感激。
附件:2张图片(提供链接)和1个R代码
1)预期结果
2)不良结果
library(gstat)
xy <- expand.grid(1:150, 1:200) # 150 x 200 grid is created in the form of a dataframe with x and y vectors
names(xy)<-c('x','y') # giving names to the variables
# creating gsat objects
rf1<-gstat(formula=z~1,locations=~x+y,dummy = T,beta=c(1,0,0), model=vgm(psill=0.025, range=5, model='Exp'), nmax=20) # dummy=T treats this as a unditional simulation
rf2<-gstat(formula=z~1,locations=~x+y,dummy = T,beta=c(4,0,0), model=vgm(psill=0.025, range=10, model='Exp'), nmax=20) # dummy=T treats this as a unditional simulation
# creating two computational grid
rows<-nrow(xy)
xy_shift <- expand.grid(60:90, 75:100)
names(xy_shift)<-c('x','y')
library(dplyr) # for antijoin
xy1<-xy[1:(rows/2),]
xy1<-anti_join(xy1, xy_shift, by = c("x","y")) # creating the irregular boundary
xy2<-rbind(xy[(rows/2+1):rows,],xy_shift)
library(sp)
yy1<- predict(rf1, newdata=xy1, nsim=1) # random field 1
yy2<- predict(rf2, newdata=xy2, nsim=1) # random field 2
rf1_label<-gl(1,length(yy1[,1]),labels="field1")
rf2_label<-gl(1,length(yy2[,1]),labels="field2")
yy1<-cbind(yy1,field=rf1_label)
yy2<-cbind(yy2,field=rf2_label)
yy<-rbind(yy1,yy2)
yyplot<-yy[,c(1,2,3)]
# plotting the field
gridded(yyplot) = ~x+y
spplot(obj=yyplot[1],scales=list(draw = TRUE))