在R的gstat包

时间:2017-04-16 05:31:14

标签: r kriging gstat covariogram

假设我在2004-2016的四个气象站采集了降雨数据。我将数据输入数据库以便在R中进行检索。我的目标是从那个时期获取每一天的数据,并使用这些值重复克里奇。

所以现在我的数据看起来像这样,每一行对应一个点,按顺序排列的列是:lat,long和rainfall_data。

我遵循了本教程:https://rpubs.com/nabilabd/118172,以帮助我开始。所以这是我目前的代码:

day_1 <- dbGetQuery(con, "SELECT lat, long, rainfall_data FROM schema.sample")
coordinates(day_1) <- ~lat+long
day_1.vgm <- variogram(rainfall_data~1, day_1)...

我的问题从最后一段代码开始,每次运行时,我得到的都是null(空)结果(如RStudio中所示)。我甚至无法进入下一步:

day_1.fit <- fit.variogram(day_1.vgm, model=vgm(1, "Sph", 900, 1))

因为当我这样做时,它会抛出一个错误,内容如下:

  

fit.variogram出错(day1.vgm,model = vgm(1,“Sph”,900,1)):     对象应该是类gstatVariogram或variogramCloud

我知道数据集是SUPER LACKING只有4分,而且我知道这会导致一些非常糟糕的结果,但它是我得到的,所以我坚持下去。但无论数据集大小如何,这都应该有效,除非我遗漏了一些东西。

如果我对Java很平均,那么R对我来说是一种完全陌生的语言(尽管不是不可能学习),统计数据远不是我的技能列表(我是IT人员而不是统计学家)。

我做错了什么,有人可以给我指示吗?请帮忙。感谢。

编辑:数据如下所示:

lat    long    rainfall_data
7.16   124.21    0.25
8.6    123.35    1
8.43   124.28    125.6
8.15   125.08    4.3

1 个答案:

答案 0 :(得分:3)

我想说尝试将变异函数拟合到4分是不明智的。但是,如果你真的想这样做,你可以这样做: -

您获得的错误是因为day_1.vgm对象为NULL,因此您需要查看variogram的文档。您需要更改参数widthcutoff。例如,尝试以下

day_1.vgm <- variogram(rainfall_data~1, day_1, width = 0.02, cutoff = 1.5)

如果你看一下这个变异函数的情节,它看起来像这样: - enter image description here

现在你试图将变异函数拟合到这些点。因此,您可以使用您使用的fit.variogram命令。但是,请注意查看参数。让我们以简单的球形模型作为开始。

day_1.fit <- fit.variogram(day_1.vgm, model=vgm("Sph", psill = 8000, range = 1))

你可能会在这里得到一个关于单一拟合的警告,这可能是因为很少有点。

拟合的变异函数看起来像这样: enter image description here

您可以适当更改拟合的参数。