Создать вариограмму в пакете R's gstat

Предположим, у меня есть данные об осадках, полученные на четырех метеостанциях за период 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)...

Моя проблема начинается с последнего куска кода, каждый раз, когда я запускаю его, все, что я получаю, это пустой (пустой) результат (как видно из 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 для меня совершенно чуждый язык (хотя его невозможно выучить), а статистика далека от моего списка навыков (я айтишник, а не статистик).

Я делаю что-то не так, может кто-нибудь дать мне указания? Пожалуйста помоги. Благодарю.

РЕДАКТИРОВАТЬ: данные выглядят так:

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

1 ответ

Решение

Я бы сказал, что неразумно пытаться подогнать вариограмму до 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))

Скорее всего, вы получите предупреждение о единственном совпадении, что, вероятно, из-за очень немногих пунктов.

Подогнанная вариограмма будет выглядеть примерно так:

Вы можете изменить параметры подгонки соответствующим образом.

Другие вопросы по тегам