【问题标题】:Create variogram in R's gstat package在 R 的 gstat 包中创建变异函数
【发布时间】:2017-09-12 01:01:39
【问题描述】:

假设我有 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

【问题讨论】:

  • 可以分享数据吗?
  • 查看编辑。感谢您的回复。
  • @ahly 嗨,你对我有什么想法吗?

标签: r kriging gstat covariogram


【解决方案1】:

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

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

拟合的变异函数将如下所示:

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

【讨论】:

  • 我不得不问,并且有充分的理由,因为我不完全是统计学家,但是宽度和截止参数是什么意思?该文档使用的词可能会点击统计人员,但不会针对具有完全不同领域的人。
  • 嗯,你应该研究变异函数的理论来理解这一点。如果您仍有疑问,交叉验证是提出这些问题的地方。您可以参考这里的简要介绍:faculty.washington.edu/edford/Variogram.pdf 截止是计算半方差时考虑各种点对的最大距离,宽度是指在其中对点进行分组和估计半方差的箱的宽度。
  • 最后一个问题,你改变了默认的参数值,对吧?您选择这些值是否有任何理由,或者它们纯粹是任意的?我可以将值更改为您设置的值以外的值并得出完全不同的变异函数吗?
  • 好吧,只有 4 点可能发生。例如,默认截止值是跨越数据的对角线的 1/3。并且由于只有 4 个点,因此没有点落在该范围内,即没有两个点的距离小于“截止”。因此,我将截止值增加到更合适的值。如需更好的解释,请访问此处:stats.stackexchange.com/questions/111683/…
  • 非常感谢您的指导。我肯定会研究更多。 (或者只是询问交叉验证。)
猜你喜欢
  • 2015-05-27
  • 2018-01-28
  • 1970-01-01
  • 2016-12-08
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 2017-09-12
  • 2015-06-03
相关资源
最近更新 更多