我有一个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)我怎样才能解释半变异函数?我的意思是从半变异函数的数据中我能理解的是什么?
提前致谢。
答案 0 :(得分:2)
你的坐标是纬度和经度,但你不告知gstat它们是。因此,gstat将假设它可以计算这些数字的欧几里德距离,这是没有意义的。
建议是在使用包SpatialPointsDataFrame
将点转换为sp
后学习如何使用gstat,然后学习如何投影数据,使欧几里德距离合理。
答案 1 :(得分:0)
我将为您的代码相关问题提供答案。其余的问题(d,e和f)更多地与理论相关。
首先,在您的评论中,当您更改proj4string
时,距离单位应该在图上更改。他们做了吗?根据你的评论,听起来似乎没有发生。
a)除了玩cutoff
距离之外,还要注意在半变异函数上支持每个np
的{{1}}(点对)。例如,使用您更新的bin
信息,我尝试proj4string
和cutoff=80
(10个分区而不是15个分区)来查看半变异函数形状如何变化。在点对存在的情况下,从15到10个区间减少不会改变,只会增加每个width=80/10
代表的距离。此外,这种方法不一定是您应该使用的方法,但它是如何更改平滑样本半变异图的一个示例(但更平滑并不意味着更好)。
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()
找到合适的结果。