我有一个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)我如何解释半变异函数?我是说,关于半变异函数的数据,我到底能理解些什么?
提前谢谢。
发布于 2015-07-27 00:24:29
我将为您的代码相关问题提供答案。你的其他问题(d,e,f)更多是与理论相关的。
首先,在您的评论中,当您更改proj4string时,距离单位应该在图中发生变化。他们有吗?根据你的评论,这听起来好像没有发生过。
除了玩cutoff距离之外,还要注意在半方差图上支持每个bin的np (点对)。例如,使用您更新的proj4string信息,我尝试了cutoff=80和width=80/10 (10个桶而不是15个)来查看半变函数形状是如何变化的。当点对存在时,从15箱减少到10桶并不会改变,只会增加每个bin所代表的距离。而且,这种方法并不一定是您应该使用的方法,但它是一个示例,说明了如何为更平滑的样本半变量函数更改回收箱(但更平滑并不意味着更好)。

使用您的代码,"Sph"和"Exp"模型返回Warning: singular model in variogram fit。这一警告表明,没有足够的数据来拟合一些参数的球和指数经验模型。有关每个经验方程及其参数的指导,请参见用户手册。
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-22 19:48:50
你的坐标是纬度和经度,但你不能告诉gstat它们是。因此,gstat将假设它可以从这些数字计算欧几里德距离,这是没有意义的。
建议是在使用包SpatialPointsDataFrame将点转换为sp之后,学习如何使用gstat,然后学习如何投影数据,以便使欧几里德距离有意义。
https://stackoverflow.com/questions/31570622
复制相似问题