在 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
的文档。您需要更改参数,即 width
和 cutoff
。例如,尝试以下
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))
您可能会在此处收到有关奇异拟合的警告,这可能是因为点数太少。
拟合的变差函数看起来像这样:
您可以适当更改拟合参数。
假设我有 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
的文档。您需要更改参数,即 width
和 cutoff
。例如,尝试以下
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))
您可能会在此处收到有关奇异拟合的警告,这可能是因为点数太少。
拟合的变差函数看起来像这样:
您可以适当更改拟合参数。