0

我正在尝试使用 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))
4

0 回答 0