распределение вероятности значений сетки

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
Анна
Завсегдатай
Сообщения: 386
Зарегистрирован: 07 фев 2004, 14:31
Репутация: 7
Откуда: Лозанна
Контактная информация:

распределение вероятности значений сетки

Сообщение Анна » 20 мар 2010, 13:51

Добрый день,

подскажите, пожалуйста, как лучше сделать следующую штуку:
есть сетка размерностью 500 на 500 м (например). Каждый квадрат сетки имеет в атрибутах значение температуры. Есть также регулярный точечный слой. Максимальное число точек, попадающее в один квадрат сетки, 100. Но может варьироватся от 0 (ни одной не попало) до 100 (попали все).
Для анализа мне надо использовать все квадраты, в которые попадает от 1ой точки и более, но вот "вес" квадратам хочется придать разный в зависимости от того, сколько же туда попало точек. При этом понятно саму температу квадрата менять мне не нужно, но вот вклад данной температуры в результирующее распределение вероятностей - да, хочется учесть. Вопрос: как это сделать?
пока мне пришло в голову только продублировать температуру столько раз сколько точек в квадрате (то есть квадрат с температурой +17 будет и 50 точками будет продублирован 50 раз, а например +13 и числом точек - 15 - всего лишь 15 раз) - но мне кажется это как-то совсем неэффективно.
Какой может быть простой :) альтернативный вариант решения?
спасибо!

self-improving
Активный участник
Сообщения: 144
Зарегистрирован: 18 дек 2009, 15:36
Репутация: 4
Откуда: Златоглавая

Re: распределение вероятности значений сетки

Сообщение self-improving » 20 мар 2010, 14:01

Используйте инструмент Spatial Join. Target - сетка, Join Features - точки. В инструменте удаляете все поля из точечного слоя, если не нужны.
В выходном классе объектов добавляется поле Join_Count - в вашем случае, там будет вол-во точек, которые попали в квадрат сетки.

Анна
Завсегдатай
Сообщения: 386
Зарегистрирован: 07 фев 2004, 14:31
Репутация: 7
Откуда: Лозанна
Контактная информация:

Re: распределение вероятности значений сетки

Сообщение Анна » 20 мар 2010, 14:14

спасибо, как сделать - это не вопрос:), меня интересуют другие варианты расчета распределения вероятностей (не дублированием значений)

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: распределение вероятности значений сетки

Сообщение KolesovDmitry » 20 мар 2010, 16:05

Анна, расскажите немного поподробнее, что за анализ, а то не понятно, почему
Анна писал(а): надо использовать все квадраты, в которые попадает от 1ой точки и более, но вот "вес" квадратам хочется придать разный в зависимости от того, сколько же туда попало точек
Может быть, для решения задачи достаточно построить растр, пользуясь каким-либо подходящим методом геостатистики? В этом случае (работа с растрами) легко анализируется и количество точек, и их взаимное положение и т.п.

Анна
Завсегдатай
Сообщения: 386
Зарегистрирован: 07 фев 2004, 14:31
Репутация: 7
Откуда: Лозанна
Контактная информация:

Re: распределение вероятности значений сетки

Сообщение Анна » 20 мар 2010, 22:15

а что именно не ясно из описания?
точки в данном случае являются именно показателем того насколько "точно" значение данного квадрата должно присутствовать в конечном распределении значений (см картинку).
например:
квадрат 1 - 35 точек - температура +15
квадрат 2 - 65 точек - температура +16
квадрат 3 - 100 точек - температура +16,5
квадрат 4 - 75 точек - температура +17
квадрат 5 - 55 точек - температура +18
хочется конечные температры "взвесить" вероятностью в зависимости от того,сколько точек в квадрате и использовать эти "взвешенные" температуры для дальнейшего моделировании - перейти от двух значений (точки + температура) к одному (взвешенная температура)
точки сами по себе не важны, важно только сколько их присутсвует в квадрате. Если много - есть большая вероятность того, что значение квадрата должно быть в конечном списке значений, если мало - то такая вероятность меньше.
Вложения
prob_s.png
prob_s.png (4.11 КБ) 12427 просмотров

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: распределение вероятности значений сетки

Сообщение KolesovDmitry » 20 мар 2010, 23:21

Анна писал(а):а что именно не ясно из описания?
Как точки попадают в квадраты - более или менее понятно. Не понятно для каких целей их считают :) От целей зависит действие. Поясню на примерах (задача-возможное решение):
* Нужно составить список наиболее "достоверных" (что бы под этим ни понималось) квадратов: нужно отсортировать квадраты по возрастанию числа точек. Нижние строки списка - наиболее достоверные квадраты.
* Квадраты будут использоваться в каком-либо уравнении, например, нужно построить какую-либо обобщенную характеристику, скажем, среднее: каждый квадрат умножается на число точек, попавших в него, и все полученные числа суммируются.
* На основании точек и квадратов строится поверхность: нужно использовать что-то вроде idw.
И т.д.

Анна
Завсегдатай
Сообщения: 386
Зарегистрирован: 07 фев 2004, 14:31
Репутация: 7
Откуда: Лозанна
Контактная информация:

Re: распределение вероятности значений сетки

Сообщение Анна » 21 мар 2010, 00:00

ага, ну тогда может вот так понятнее:
есть много вот таких вот сеток с квадратами: каждая сетка - своя переменная (например сетка температур, сетка влажности, сетка осадков и тп). нужно, чтобы помимо значения каждая ячейка на уровне каждой сетки имела вероятностный "вес".
к примеру, часто модель по типу presence-absence строится на основе двоичных данных - да или нет (1 или 0 для y - независимая переменная). а тут нужно строить модель чтобы на входе была некая непрерывная переменная (не 1 и 0 для y, а любое значение от 0 до 100) + при этом на уровне каждой сетки на уровне ячейки эта градация будет разумеется различной.
поэтому вопрос:) как взвесить ячейки еще на уровне конкретной сетки?:) чтобы сохранить значения, но чтобы их вклад в конечной модели был разный.

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: распределение вероятности значений сетки

Сообщение KolesovDmitry » 21 мар 2010, 13:16

Будете смеяться, Анна, но я опять в задаче понял хорошо, если половину. Давайте, я лучше расскажу, как мне представляется дело, а вы меня поправите, в тех местах, где я ошибаюсь. Итак:
Анна писал(а): есть много вот таких вот сеток с квадратами: каждая сетка - своя переменная (например сетка температур, сетка влажности, сетка осадков и тп). нужно, чтобы помимо значения каждая ячейка на уровне каждой сетки имела вероятностный "вес".
Это я понимаю так, что вы строите модель на основе нескольких переменных, например, хотите оценить как изменяется влажность (h) в зависимости от температуры (t) и осадков (m). Для этого вы строите, к примеру, линейную модель:

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

 h = a*t + b*m + c
где a, b, c - некоторые параметры модели, которые вы хотите оценить по статистическим данным.

На основании исходных данных, которые представляют собой набор точек в пространстве и замеров определенных значений переменных (например, влажности) в этих точках, вы построили сетки, которые интерполируют распределение исследуемых переменных в интересующей вас области.

Далее вы хотите оценить параметры модели, но вас смущает, что в некоторые ячейки сетки попало много исходных точек, а в некоторые мало и, как следствие, ячейки сеток становятся очень неравноценными с точки зрения достоверности и информативности.

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

Мне кажется, что бояться нужно не того, что в некоторых ячейках сетки было много точек, а в некоторых мало, а того, что сетка, построенная на основе исходных данных, плохо их интерполирует. Если сетка хорошо прилегает к вашим данным, то число точек в разных ячейках не так уж и важно. Поэтому основная задача, на мой взгляд:

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

Поэтому, если я правильно понял вашу задачу, ваш исходный вопрос стоит переформулировать из "как учесть неравноценность ячеек" в вопрос "какой метод интерполяции подойдет лучше для исходных данных, обладающих такими-то особенностями"

Анна
Завсегдатай
Сообщения: 386
Зарегистрирован: 07 фев 2004, 14:31
Репутация: 7
Откуда: Лозанна
Контактная информация:

Re: распределение вероятности значений сетки

Сообщение Анна » 21 мар 2010, 14:01

спасибо Дмитрий!
по зрелому размышлению я уже и сама удивляюсь, зачем мне что-то взвешивать :)
попробую переговорить с начальством и еще раз уточнить, что именно мы хотим получить в результате, и вернусь с более четким описанием:)
единственное про сетки - они как раз фиксированные (температурные гриды выданы уже в виде интерполированных растров и исходных точек у нас нет). Точки в данном случае представляют зависимую переменную - то есть насколько часто некая зависимая переменная (h) попала в ячейку грида. Так вот, в связи с этим я задумалась, а зачем вообще квадраты взвешивать, если точки - это и есть зависимая переменная варьирующаяся от 0 до 100 (abundance). Тогда получается что элементарнее действия, что построить зависимость переменной h (0-100) от некоторых независимых факторов (температуры, осадки и т.д.) - просто не бывает (ну т.е. это тоже непростой вопрос, но - другой)
так что я запуталась почему вообще возник вопрос со взвешиванием.

yumakaev
Активный участник
Сообщения: 143
Зарегистрирован: 10 мар 2004, 08:07
Репутация: 10
Откуда: Redlands
Контактная информация:

Re: распределение вероятности значений сетки

Сообщение yumakaev » 26 мар 2010, 21:03

Если я правильно понимаю, задача такова. Есть (а) грид с значениями в каждой ячейке, например, температуры; (б) точечный файл, где каждая точка - это "событие"-измерение, ну или что-то в этом роде. В дальнейшем анализе грида каждая ячейка должна получить вес в зависимости от того, сколько "событий"-измерений в ней произошло. Так, например:
01.jpg
Исходные данные
01.jpg (31.32 КБ) 12350 просмотров
Если так, то проще всего построить второй грид из этих точек, и в дальнейшем анализировать пару гридов. Берём инструмент Point to Raster:
02.jpg
Point to Raster
02.jpg (54.51 КБ) 12350 просмотров
(Разбиваю сообщение, а то больше 3-х вложений нельзя).

yumakaev
Активный участник
Сообщения: 143
Зарегистрирован: 10 мар 2004, 08:07
Репутация: 10
Откуда: Redlands
Контактная информация:

Re: распределение вероятности значений сетки

Сообщение yumakaev » 26 мар 2010, 21:16

Все параметры инструмента, в принципе, тривиальны, главное - параметр Cell assignment type. Задаём его как COUNT, т.е. для значений каждой ячейки будут использоваться суммы попадающих в ячейку точек. Насколько я понимаю, при этом без разницы, какое выбирается Value field, так как в любом случае значения грида будут суммы. Но если что-то идёт нештатно, для точек можно создать атрибутивное поле, которое заполнить единицами (они тогда и будут складываться).

Кроме того, важно настроить среду так, чтобы результирующий грид выравнивался по нашему исходному гриду. Для этого нажимаем Environments...
03.jpg
Настройки инструмента
03.jpg (113.42 КБ) 12347 просмотров
В настройках среды: General Settings, в поле Snap Raster выбираем исходный грид, который поверхность температур.
04.jpg
Настройки среды
04.jpg (85.31 КБ) 12347 просмотров
Запускаем. Ну и, в принципе, вуаля. В ячейках полученного растра будет храниться количество попадающих туда точек, а где не попало ничего - NoData.
05.jpg
Результат
05.jpg (36.38 КБ) 12347 просмотров
Дальше два растра можно совместно использовать в Raster Calculator, например... ну или что там в задаче...

Анна
Завсегдатай
Сообщения: 386
Зарегистрирован: 07 фев 2004, 14:31
Репутация: 7
Откуда: Лозанна
Контактная информация:

Re: распределение вероятности значений сетки

Сообщение Анна » 27 мар 2010, 00:26

спасибо огромное за подробный ответ - именно так все и есть как на картинках!
да-да - у меня как раз такая идея и была.
Но запуталась я на следующем шаге: вот есть у меня два грида - один с ячейками, показывающими сколько там точек встречается (тот что count - пусть это будут встречи вида) и есть грид с температурой, тогда суммарная таблица двух гридов (температура + числов видов в ячееках - combine) выглядит примерно так:

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

species_points temperature count_cells
12            23           2
1             12          10
56            17           23
24            18           1
...
последняя колонка показывает сколько ячеек с таким числом видов и такой температурой встретились на территории исследования.
И у меня проблема стратегического плана. Мне нужно получить два значения от сюда - температуру как она есть и вероятность встречи вида. И представить в виде графика - где по оси Y - вероятность встречи вида (от 0 до 1), по оси X - значения температуры от -25 до +45.
То есть допустим вероятность встречи вида при температуре +17 - 0.67, +18 - 0.71, +21 - 0.38 и т.д.
Как такое дело получить из этой таблицы?

yumakaev
Активный участник
Сообщения: 143
Зарегистрирован: 10 мар 2004, 08:07
Репутация: 10
Откуда: Redlands
Контактная информация:

Re: распределение вероятности значений сетки

Сообщение yumakaev » 27 мар 2010, 01:55

Навскидку пока ничего в голову не приходит. Думаю. Сразу понятно, что раз по оси X в графике будет температура, то по оси Y будет некоторая суперпозиция значений species_point и count_cells из таблицы. При этом реально данные будут выглядеть сложнее, примерно следующим образом:

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

species_points temperature count_cells
12             23          2
1              12          10
56             17          23
24             18          1
20             17          4
0              17          50
46             17          25
5              17          14
8              17          3
...
То есть для КАЖДОЙ температуры (в данном примере 17) будет множество пар "species_point + count_cells". Вот из этих-то пар вкупе и надо получать показатель вероятности... но сдаётся мне, что это уже не ГИС а матстат :) , хотя, возможно, в Geostatistical Analyst, которым я не владею, и есть что-нибудь для проведения подбного анализа за один щелчок мышью.

Хуже всего, что данные в парах "species_point + count_cells" для одного показателя температуры могут оказаться статистически слабосвязанными, так как встречаемость наверняка зависит ещё и от какой-нибудь влажности, количества осадков, высоты над уровнем моря и т.п. То есть изолированно для одной только температуры вывести статистику встречаемости может оказаться невозможным...

Анна
Завсегдатай
Сообщения: 386
Зарегистрирован: 07 фев 2004, 14:31
Репутация: 7
Откуда: Лозанна
Контактная информация:

Re: распределение вероятности значений сетки

Сообщение Анна » 27 мар 2010, 02:20

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

yumakaev
Активный участник
Сообщения: 143
Зарегистрирован: 10 мар 2004, 08:07
Репутация: 10
Откуда: Redlands
Контактная информация:

Re: распределение вероятности значений сетки

Сообщение yumakaev » 27 мар 2010, 03:28

Количество точек в ячейке - это единственная характеристика, которая связывает все остальные (температуру, осадки, ...).

Поэтому, наверно, нужно наоборот: не вероятность встречаемости вида на поверхности температур, а распределение (диапазон) значений температур для ячеек, куда попало N точек. А также распределение (диапазон) значений кол-ва осадков для ячеек, куда попало N точек. И так далее. Ну или не диапазон, а среднее, или другие производные диапазона (если, конечно, применимо в конкретной задаче). И, наверно, желательно всё это в комплексе, а не на примере одной только температуры. Потому что изолированно по одному параметру никогда не будет понятно, почему ячеек с показателем 17, куда попало 50 точек, столько же, сколько тех, куда попало 0.

Ответить

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

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

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