"Нормализация" точечных данных в пространстве

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
Ответить
bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Статьи: 4
Проекты: 1
Репутация: 235
Откуда: Ханты-Мансийск
Контактная информация:

"Нормализация" точечных данных в пространстве

Сообщение bolotoved » 13 апр 2017, 07:22

Поскольку не знаю общепринятых ключевых слов постараюсь поподробнее описать суть проблемы.

Часто полевые данные собираются не случайным образом, а так, что где-то пусто, а где-то густо. И эта картина отражает не столько специфику распространения самого объекта, сколько специфику самого сбора данных. Например, в ООПТ точек встреч редких видов обычно существенно больше, чем вне ООПТ. Это совсем не означает, что в ООПТ действительно концентрация редких видов выше, особенно в таком малоосвоенном регионе как таежная зона Западной Сибири. А означает, что там живут научные сотрудники которые регулярно экскурсируют по территории.

Так вот получается, что перед построением модели, точки нужно как-то "нормализовать" в пространстве, чтобы их частота в пространстве была примерно одинаковой как в ООПТ, так и вне их. При этом хочется потерять как можно меньше данных (выкинуть как можно меньше точек).

Напрашивается кластеризация точек с каким-то радиусом. В таком случае возникает вопрос, как этот радиус найти?

P.S. Про пространственную аутокорреляцию я в курсе, это не совсем про нее, похоже. Хотя возможно как-то использовать методы учета пространственной аутокорреляци и в данном случае.

Аватара пользователя
jerry-maori
Гуру
Сообщения: 561
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 129
Ваше звание: it-дворник
Откуда: Нижний Новгород
Контактная информация:

Re: "Нормализация" точечных данных в пространстве

Сообщение jerry-maori » 13 апр 2017, 08:05

В Махеnt такое называется sampling bias. там решают путём добавления слоя, где каждому пикселю присваивают вес как раз для учёта эффекта "рядом с научным сотрудником скотинка бегает чаще"
http://onlinelibrary.wiley.com/doi/10.1 ... 6/abstract

bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Статьи: 4
Проекты: 1
Репутация: 235
Откуда: Ханты-Мансийск
Контактная информация:

Re: "Нормализация" точечных данных в пространстве

Сообщение bolotoved » 13 апр 2017, 09:18

Видимо, в более общем случае это называется declustering: spatial declustering или cell declustering. Тут вот приводится метода расчета искомого размера ячейки: http://geostatisticslessons.com/lessons ... clustering

По ходу дела напоролся на раздел учебника по ArcGIS по геостатистике, там тоже эта тема затронута, хотя и без ссылок, зато есть на русском.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 8980
Зарегистрирован: 06 окт 2003, 20:20
Статьи: 231
Проекты: 12/6
Репутация: 692
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: "Нормализация" точечных данных в пространстве

Сообщение Максим Дубинин » 13 апр 2017, 09:53

bolotoved писал(а):P.S. Про пространственную аутокорреляцию я в курсе, это не совсем про нее, похоже.
А по мне так совсем про неё. И тогда выбирать шаг/разрешение можно примерно так:

Код: Выделить всё

'import data
d = read.csv(file = "c:/temp/test.csv", header = T)
attach(d)
geodata = data.frame(cbind(X, Y, Presabs, resid))

'If X,Y are coordinates, then it possible to check if data imported correctly, geographic pattern should look the same with the map
'If Presabs contains 0 for absence and 1 for presence, this will make a thematic map of locations with absence and presence data colored differently
'cex parameter will make graduated symbols
plot(X,Y)
plot(X,Y, col=Presabs+1)
plot(X,Y, col=Presabs+1, cex=abs(resid))

'Load and install a package
library(geoR)

'Convert data to geodata format, coords - coordinates, data - values
geodata1 = as.geodata(geodata, coords.col = 1:2, data.col = 4)

'Make a variogram
'Remove tails
variogram = variog(geodata1)
variogram = variog(geodata1, max.dist = 0.066)
plot(variogram)

'Create Monte-Carlo Envelope for variogram using iteratively permutated (shuffled) residuals
envelope = variog.mc.env(geodata1, obj.variog = variogram)

'Show calculated envelope with the variogram, if data points all fall into envelope it means that data is not spatially autocorrelated
plot.variogram(variogram, envelope.obj = envelope)
И результат примерно такой (это трансекты со встречами, попадание в конверт означает отсутствие проблем с автокорреляцией и соответственно можно посмотреть какое расстояние - ОК):

Изображение
пристегивайтесь, турбулентность прямо по курсу

gamm
Гуру
Сообщения: 2660
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 573
Ваше звание: программист
Откуда: Казань

Re: "Нормализация" точечных данных в пространстве

Сообщение gamm » 13 апр 2017, 11:18

строго говоря, речь идет о нарушении независимости "независимых" переменных, которая обычно предполагается при моделировании (есть еще термин pseudoreplication, про это же). Проблема возникает, если выборка становится смещенной, например, преобладает один тип ландшафта, места с высокой влажностью, исследуемое явление имеет "пятнистую" пространственную структуру, и т.д.

Учесть ее можно, например оценив sampling efforts (которые могут выражены в обследованной площади или времени, потраченном на обследование), в R для этого есть offset (т.е. переходим к относительным величинам). Другой вариант - учесть через веса, для этого нужно оценить плотность сэмплирования (именно самого сэмплирования, а не находок - мы могли обследовать два участка, один 2 га, второй 10 га, и найти на обоих по 2 редких вида), в R для этого есть weights (декластеризация - об этом), веса обратно пропорциональны плотности сэмплирования. Но детали зависят от того, какую модель будем строить, в некоторых случаях можно просто использовать данные, например в INLA

А вот вариограмма зависимой переменной, точнее остатков от модели, это о другом.

bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Статьи: 4
Проекты: 1
Репутация: 235
Откуда: Ханты-Мансийск
Контактная информация:

Re: "Нормализация" точечных данных в пространстве

Сообщение bolotoved » 13 апр 2017, 17:02

Срасибо, за интерес к теме :)
Максим Дубинин писал(а):
bolotoved писал(а):P.S. Про пространственную аутокорреляцию я в курсе, это не совсем про нее, похоже.
А по мне так совсем про неё.
Максим, я вначале тоже полез в статьи по аутокорреляции, ознакомился с совершенно порясной статьей Лежандра "Пространственная аутокорреляция: проблема или новая парадигма?". Но постепенно начал приходить к пониманию (хотя, полной уверенности так и не достиг), что еще до расчета пространственной аутокорреляции зависимых переменных, нужно что-то сделать с неоднородностью в семплировании.
gamm писал(а):строго говоря, речь идет о нарушении независимости "независимых" переменных
Да, именно так. Еще добавлю, что в данном случае мы имеем дело с т.н. "неэкспериментальными данными", когда данные получены не в ходе конкретного эксперимента с конкретным дизайном отбора проб, а с данными отбиравшимися по разным принципам, разными людьми, в ходе разных проектов. Нам нужно это как-то унифицировать и декластеризация кажется мне выходом. Хотя м.б. действительно нужно задействовать методы не требовательные к независимости "независимых" переменных.

Еще задача из этой же области, которая, возможно, поможет прийти к какому-то более универсальному алгоритму подготовки данных ("декластеризации").

Задача такова: сбор данных о глубине торфа ведется с помощью георадара, получаются линии отстоящие друг от друга на сотни метров. Сама линия состоит из точек в каждой точке известна глубина торфяной залежи, но эти точки находятся уже на расстоянии десятков сантиметров друг от друга. Т.о. мы снова имеем существенную неоднородность в семплировании связанную не с какой-то природной особенностью, а с методикой. Тоже надо как-то эти точки разредить перед интерполяцией и тоже встает проблема выбора шага разрежения. Изначально у меня тоже был большой соблазн посмотреть аутокорреляцию между близостью точек и глубиной, но сейчас засомневался.

gamm
Гуру
Сообщения: 2660
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 573
Ваше звание: программист
Откуда: Казань

Re: "Нормализация" точечных данных в пространстве

Сообщение gamm » 13 апр 2017, 18:25

bolotoved писал(а):Задача такова: сбор данных о глубине торфа ведется с помощью георадара, получаются линии отстоящие друг от друга на сотни метров. Сама линия состоит из точек в каждой точке известна глубина торфяной залежи, но эти точки находятся уже на расстоянии десятков сантиметров друг от друга.
...
Тоже надо как-то эти точки разредить перед интерполяцией и тоже встает проблема выбора шага разрежения.
прореживать ничего не нужно, как и интерполировать (в данной ситуации). Вам лучше привязать ваши данные к каким-то факторам, которые вам известны на всей территории, например рельеф или еще что-то (не представляю процесса торфообразования, и понятия не имею, какая там может быть пространственная вариабельность значений). Опять же, если считать процесс изотропным, то из профилей вытаскивается "пространственный закон" (ковариация-вариограмма), и можно строить случайное поле в INLA. Если данные пришлете, можно попробовать, если время не горит. Если не хотите данные светить, можно в личку.

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

bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Статьи: 4
Проекты: 1
Репутация: 235
Откуда: Ханты-Мансийск
Контактная информация:

Re: "Нормализация" точечных данных в пространстве

Сообщение bolotoved » 13 апр 2017, 18:51

gamm писал(а):
bolotoved писал(а):Если данные пришлете, можно попробовать, если время не горит.
Данные собраны коллективом из нескольких организаций, я посоветуюсь, постараюсь уговорить выложить.

gamm
Гуру
Сообщения: 2660
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 573
Ваше звание: программист
Откуда: Казань

Re: "Нормализация" точечных данных в пространстве

Сообщение gamm » 13 апр 2017, 19:32

bolotoved писал(а):Данные собраны коллективом из нескольких организаций, я посоветуюсь, постараюсь уговорить выложить.
Можно даже сделать фиктивный набор данных (чтобы научиться читать), сделать програмульку (на R+INLA), и гоняйте сами. У меня интерес чисто академический.

P.S. в подобных ситуациях обезразмеривают координаты (повернув произвольно систему координат, поместив начало в произвольное место, и поделив на случайное число), а также обезразмеривают данные, приведя их к диапазону 0-1. Для моделирования все это просто не нужно.

Ответить

Вернуться в «Общие вопросы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя