1

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

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

我遵循了本教程: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)...

我的问题从最后一段代码开始,每次我运行它时,我得到的只是一个空(空)结果(如在 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 类

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

1 回答 1

4

我会说尝试将变异函数拟合到 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))

您可能会在这里收到关于奇异拟合的警告,这可能是因为很少有几点。

拟合的变异函数看起来像这样: 在此处输入图像描述

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

于 2017-04-16T07:35:36.100 回答