在 R 的 gstat 包中创建变异函数

Create variogram in R's gstat package

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

所以现在我的数据是这样的,每一行对应一个点,列的顺序是:纬度、经度和 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))

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

Error in fit.variogram(day1.vgm, model = vgm(1, "Sph", 900, 1)) : object should be of class gstatVariogram or variogramCloud

我知道数据集非常缺乏,只有 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

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

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

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

如果你看一下这个变差函数的图,它看起来像这样:-

现在您正在尝试为这些点拟合变差函数。因此,您可以像使用过的那样使用 fit.variogram 命令。但是,请注意查看参数。让我们开始拟合一个简单的球形模型。

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

您可能会在此处收到有关奇异拟合的警告,这可能是因为点数太少。

拟合的变差函数看起来像这样:

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