如何在R中使用gstat拟合半变异函数模型?

时间:2015-07-22 17:58:03

标签: r spatial kriging gstat covariogram

我有一个csv文件文件包含3月1日下午12点的大气PM10浓度数据。please, download.我想在R中使用gstat包绘制一个半变异函数。我试着在R中编写这些代码但是有了这些数据,我不能适应模型。

    library(sp)
    library(gstat)

    seoul3112<-read.csv("seoul3112.csv")
    seoul3112<-na.omit(seoul3112)

    g<-gstat(id="PM10",formula=PM10~LON+LAT,location=~LON+LAT,
             data=seoul3112)
    seoul3112.var<-variogram(g,width=0.04,cutoff=0.6)
    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",0.5,200), 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")

其实我是R和统计学的初学者。所以,即使是变差函,我也很无知。我有一些疑问:

a)当我将数据绘制为半变异函数时,它看起来不同于典型的半变异函数!为什么会这样?我应该使用像转换这样的数据做任何其他事情吗?

b)如何使用此数据拟合模型?我尝试了不同的模型,例如&#34; Sph&#34;,&#34; Exp&#34;但它们看起来像线性的!为什么呢?

c)我怎样才能理解在vgm()函数中我应该使用的窗台,范围,金块的初始值是什么?

d)我如何理解该模型是否适合数据?

e)对于使用克里金法,我应该绘制什么样的半变异函数?只有全方位半变异函数?或者我应该绘制方向半变异函数?

f)我怎样才能解释半变异函数?我的意思是从半变异函数的数据中我能理解的是什么?

提前致谢。

2 个答案:

答案 0 :(得分:2)

你的坐标是纬度和经度,但你不告知gstat它们是。因此,gstat将假设它可以计算这些数字的欧几里德距离,这是没有意义的。

建议是在使用包SpatialPointsDataFrame将点转换为sp后学习如何使用gstat,然后学习如何投影数据,使欧几里德距离合理。

答案 1 :(得分:0)

我将为您的代码相关问题提供答案。其余的问题(d,e和f)更多地与理论相关。

首先,在您的评论中,当您更改proj4string时,距离单位应该在图上更改。他们做了吗?根据你的评论,听起来似乎没有发生。

a)除了玩cutoff距离之外,还要注意在半变异函数上支持每个np的{​​{1}}(点对)。例如,使用您更新的bin信息,我尝试proj4stringcutoff=80(10个分区而不是15个分区)来查看半变异函数形状如何变化。在点对存在的情况下,从15到10个区间减少不会改变,只会增加每个width=80/10代表的距离。此外,这种方法不一定是您应该使用的方法,但它是如何更改平滑样本半变异图的一个示例(但更平滑并不意味着更好)。

Comparison of 10 Bins to 15 Bins

b)使用您的代码,bin"Sph"模型会返回"Exp"。该警告表明没有足够的数据来拟合球形和指数经验模型的某些参数。有关每个经验公式及其参数的指导,请参见gstat user manual

例如,Warning: singular model in variogram fit函数可以用于眼睛拟合样本半变异函数。如果您对如何使用示例数据绘制vgm()模型感到困惑,请尝试使用

vgm()

您在调用eye_vgm = vgm(psill=1200,model="Gau",range=60,nugget=350) plot(seoul3112.var,model=eye_vgm, col="black", pch=16,cex=1.3) 时使用的是vgm(),只要您提供给fit.variogram()的参数合理(例如基于样本数据)和经验模型可以安装参数,vgm()会根据fit.variogram()找到合适的结果。