0

我有一个名为 seoul3112 的 csv 文件,其中包含 PM10 浓度。请下载。.我试图绘制样本变异函数并在其上拟合模型。

library(sp)
    library(gstat)
    library(rgdal)
    seoul3112<-read.csv("seoul3112.csv",row.name=1)
    seoul3112<-na.omit(seoul3112)

#分配一个CRS并重新投影

coordinates(seoul3112)=~LON+LAT
proj4string(seoul3112) =  "+proj=longlat +datum=WGS84" 
seoul3112<-spTransform(seoul3112, CRS("+proj=utm +north +zone=52 +datum=WGS84"))

#绘制半变异函数

g<-gstat(id="PM10",formula=PM10~LON+LAT, data=seoul3112)
seoul3112.var<-variogram(g, cutoff=70000, width=6000)
seoul3112.var
plot(seoul3112.var, col="black", pch=16,cex=1.3,
     xlab="Distance",ylab="Semivariance",
     main="Omnidirectional Variogram for seoul 3112")

#模型拟合

model.3112<- fit.variogram(seoul3112.var,vgm(700,"Gau",40000,400),fit.method = 2)
                       
plot(seoul3112.var,model=model.3112, col="black", pch=16,cex=1.3,
     xlab="Distance",ylab="Semivariance",
     main="Omnidirectional Variogram for seoul 3112")

写完这些代码后,我得到了一个像这样的半变异函数。

在此处输入图像描述

由于我是地统计学的新手,所以我很困惑我的上述变异函数是否适合我的数据集。因为,在典型的变异函数中,半方差值在门槛处变成水平的。但是这个变异函数是向上的!我应该在我的代码中做一些更正吗?

另一件事是,实际上我的最终目标是对我的数据集(seoul3112)进行克里金插值。我不明白,对于进行克里金,这个样本变异函数就足够了,还是我应该绘制方向变异函数或其他任何东西?谁能详细解释一下?

4

1 回答 1

2

如果您查看您的拟合模型,它将有一个sill参数(即nugget+ psill),但它超出了您的样本范围。

 sill = sum(model.3112$psill)

您可能没有足够远的点对距离到达rangesill。我认为这不是问题,只要您使用此半变异函数在数据的空间域 + 60000 m(您有数据支持的距离)内进行预测。我采取这个立场是因为要拟合的半变异函数最重要的部分是开始,并且在数据的范围内拟合是好的。

要检查的是您有多少点对 ( np) 支持bins您绘制的点对(更多点对更好)。

另一个建议是使用水平图寻找各向异性

seoul3112.var_map<-variogram(g, cutoff=70000, width=6000, map=TRUE)
plot(seoul3112.var_map, col.regions=terrain.colors(20))

水平图(方向半变异函数)

或者通过设置alpha和绘制模型拟合来查看多个方向的拟合。您只需要检查 180 度,因为它是对称的(您可以在下图中看到,其中 0 和 180 相同)。

seoul3112.var_angles<-variogram(g, cutoff=70000, width=6000, alpha=seq(0,180,30))
plot(seoul3112.var_angles, model=model.3112, pch=16, ylim=c(0,3000))

方向半变异函数

fit.variogram如果在方向上存在差异,您可以使用为模型anis定义的各向异性的长轴和短轴vgm()建模。例子:

vgm(700,"Gau",40000,400, anis=c(someangle, someratio))
于 2015-07-28T21:21:01.907 回答