假设我在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
答案 0 :(得分: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))
你可能会在这里得到一个关于单一拟合的警告,这可能是因为很少有点。
您可以适当更改拟合的参数。