1

我有一个 csv 文件文件,其中包含 3 月 1 日下午 12 点的大气 PM10 浓度数据。请下载。我想在 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)我怎样才能用这些数据拟合模型?我尝试过不同的模型,如“Sph”、“Exp”,但它们看起来像线性的!为什么?

c)我如何理解我应该在vgm()函数中使用什么初始值?

d) 我如何理解该模型与数据正确匹配?

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

f)我如何解释半变异函数?我的意思是我实际上能理解半变异函数的数据吗?

提前致谢。

4

2 回答 2

2

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

SpatialPointsDataFrame建议是在将您的点转换为using package后学习如何使用 gstat sp,然后学习如何投影数据以使欧几里得距离有意义。

于 2015-07-22T19:48:50.313 回答
0

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

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

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

10 箱与 15 箱的比较

b)使用您的代码,"Sph"and"Exp"模型返回Warning: singular model in variogram fit。此警告表明没有足够的数据来拟合球形和指数经验模型的某些参数。有关每个经验方程及其参数的指导,请参阅gstat用户手册。

c) 该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()就会根据fit.method.

于 2015-07-27T00:24:29.153 回答