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

альтернативный вариант решения?
спасибо!
Re: распределение вероятности значений сетки
Добавлено: 20 мар 2010, 14:01
self-improving
Используйте инструмент Spatial Join. Target - сетка, Join Features - точки. В инструменте удаляете все поля из точечного слоя, если не нужны.
В выходном классе объектов добавляется поле Join_Count - в вашем случае, там будет вол-во точек, которые попали в квадрат сетки.
Re: распределение вероятности значений сетки
Добавлено: 20 мар 2010, 14:14
Анна
спасибо, как сделать - это не вопрос:), меня интересуют другие варианты расчета распределения вероятностей (не дублированием значений)
Re: распределение вероятности значений сетки
Добавлено: 20 мар 2010, 16:05
KolesovDmitry
Анна, расскажите немного поподробнее, что за анализ, а то не понятно, почему
Анна писал(а):
надо использовать все квадраты, в которые попадает от 1ой точки и более, но вот "вес" квадратам хочется придать разный в зависимости от того, сколько же туда попало точек
Может быть, для решения задачи достаточно построить растр, пользуясь каким-либо подходящим методом геостатистики? В этом случае (работа с растрами) легко анализируется и количество точек, и их взаимное положение и т.п.
Re: распределение вероятности значений сетки
Добавлено: 20 мар 2010, 22:15
Анна
а что именно не ясно из описания?
точки в данном случае являются именно показателем того насколько "точно" значение данного квадрата должно присутствовать в конечном распределении значений (см картинку).
например:
квадрат 1 - 35 точек - температура +15
квадрат 2 - 65 точек - температура +16
квадрат 3 - 100 точек - температура +16,5
квадрат 4 - 75 точек - температура +17
квадрат 5 - 55 точек - температура +18
хочется конечные температры "взвесить" вероятностью в зависимости от того,сколько точек в квадрате и использовать эти "взвешенные" температуры для дальнейшего моделировании - перейти от двух значений (точки + температура) к одному (взвешенная температура)
точки сами по себе не важны, важно только сколько их присутсвует в квадрате. Если много - есть большая вероятность того, что значение квадрата должно быть в конечном списке значений, если мало - то такая вероятность меньше.
Re: распределение вероятности значений сетки
Добавлено: 20 мар 2010, 23:21
KolesovDmitry
Анна писал(а):а что именно не ясно из описания?
Как точки попадают в квадраты - более или менее понятно. Не понятно для каких целей их считают

От целей зависит действие. Поясню на примерах (задача-возможное решение):
* Нужно составить список наиболее "достоверных" (что бы под этим ни понималось) квадратов: нужно отсортировать квадраты по возрастанию числа точек. Нижние строки списка - наиболее достоверные квадраты.
* Квадраты будут использоваться в каком-либо уравнении, например, нужно построить какую-либо обобщенную характеристику, скажем, среднее: каждый квадрат умножается на число точек, попавших в него, и все полученные числа суммируются.
* На основании точек и квадратов строится поверхность: нужно использовать что-то вроде idw.
И т.д.
Re: распределение вероятности значений сетки
Добавлено: 21 мар 2010, 00:00
Анна
ага, ну тогда может вот так понятнее:
есть много вот таких вот сеток с квадратами: каждая сетка - своя переменная (например сетка температур, сетка влажности, сетка осадков и тп). нужно, чтобы помимо значения каждая ячейка на уровне каждой сетки имела вероятностный "вес".
к примеру, часто модель по типу presence-absence строится на основе двоичных данных - да или нет (1 или 0 для y - независимая переменная). а тут нужно строить модель чтобы на входе была некая непрерывная переменная (не 1 и 0 для y, а любое значение от 0 до 100) + при этом на уровне каждой сетки на уровне ячейки эта градация будет разумеется различной.
поэтому вопрос:) как взвесить ячейки еще на уровне конкретной сетки?:) чтобы сохранить значения, но чтобы их вклад в конечной модели был разный.
Re: распределение вероятности значений сетки
Добавлено: 21 мар 2010, 13:16
KolesovDmitry
Будете смеяться, Анна, но я опять в задаче понял хорошо, если половину. Давайте, я лучше расскажу, как мне представляется дело, а вы меня поправите, в тех местах, где я ошибаюсь. Итак:
Анна писал(а):
есть много вот таких вот сеток с квадратами: каждая сетка - своя переменная (например сетка температур, сетка влажности, сетка осадков и тп). нужно, чтобы помимо значения каждая ячейка на уровне каждой сетки имела вероятностный "вес".
Это я понимаю так, что вы строите модель на основе нескольких переменных, например, хотите оценить как изменяется влажность (h) в зависимости от температуры (t) и осадков (m). Для этого вы строите, к примеру, линейную модель:
где a, b, c - некоторые параметры модели, которые вы хотите оценить по статистическим данным.
На основании исходных данных, которые представляют собой набор точек в пространстве и замеров определенных значений переменных (например, влажности) в этих точках, вы построили сетки, которые интерполируют распределение исследуемых переменных в интересующей вас области.
Далее вы хотите оценить параметры модели, но вас смущает, что в некоторые ячейки сетки попало много исходных точек, а в некоторые мало и, как следствие, ячейки сеток становятся очень неравноценными с точки зрения достоверности и информативности.
---
На этом мои предположения заканчиваются и далее я попытаюсь рассказать, как бы действовал я в подобной ситуации.
Мне кажется, что бояться нужно не того, что в некоторых ячейках сетки было много точек, а в некоторых мало, а того, что сетка, построенная на основе исходных данных, плохо их интерполирует. Если сетка хорошо прилегает к вашим данным, то число точек в разных ячейках не так уж и важно. Поэтому основная задача, на мой взгляд:
Построить "хорошие" сетки, такие, что они, с одной стороны, хорошо аппроксимируют экспериментальные точки и, с другой стороны, при построении сеток учтены особенности взаимного положения исходных точек и их густота.
Поэтому, если я правильно понял вашу задачу, ваш исходный вопрос стоит переформулировать из "как учесть неравноценность ячеек" в вопрос "какой метод интерполяции подойдет лучше для исходных данных, обладающих такими-то особенностями"
Re: распределение вероятности значений сетки
Добавлено: 21 мар 2010, 14:01
Анна
спасибо Дмитрий!
по зрелому размышлению я уже и сама удивляюсь, зачем мне что-то взвешивать

попробую переговорить с начальством и еще раз уточнить, что именно мы хотим получить в результате, и вернусь с более четким описанием:)
единственное про сетки - они как раз фиксированные (температурные гриды выданы уже в виде интерполированных растров и исходных точек у нас нет). Точки в данном случае представляют зависимую переменную - то есть насколько часто некая зависимая переменная (h) попала в ячейку грида. Так вот, в связи с этим я задумалась, а зачем вообще квадраты взвешивать, если точки - это и есть зависимая переменная варьирующаяся от 0 до 100 (abundance). Тогда получается что элементарнее действия, что построить зависимость переменной h (0-100) от некоторых независимых факторов (температуры, осадки и т.д.) - просто не бывает (ну т.е. это тоже непростой вопрос, но - другой)
так что я запуталась почему вообще возник вопрос со взвешиванием.
Re: распределение вероятности значений сетки
Добавлено: 26 мар 2010, 21:03
yumakaev
Если я правильно понимаю, задача такова. Есть (а) грид с значениями в каждой ячейке, например, температуры; (б) точечный файл, где каждая точка - это "событие"-измерение, ну или что-то в этом роде. В дальнейшем анализе грида каждая ячейка должна получить вес в зависимости от того, сколько "событий"-измерений в ней произошло. Так, например:

- Исходные данные
- 01.jpg (31.32 КБ) 12353 просмотра
Если так, то проще всего построить второй грид из этих точек, и в дальнейшем анализировать пару гридов. Берём инструмент Point to Raster:

- Point to Raster
- 02.jpg (54.51 КБ) 12353 просмотра
(Разбиваю сообщение, а то больше 3-х вложений нельзя).
Re: распределение вероятности значений сетки
Добавлено: 26 мар 2010, 21:16
yumakaev
Все параметры инструмента, в принципе, тривиальны, главное - параметр Cell assignment type. Задаём его как COUNT, т.е. для значений каждой ячейки будут использоваться суммы попадающих в ячейку точек. Насколько я понимаю, при этом без разницы, какое выбирается Value field, так как в любом случае значения грида будут суммы. Но если что-то идёт нештатно, для точек можно создать атрибутивное поле, которое заполнить единицами (они тогда и будут складываться).
Кроме того, важно настроить среду так, чтобы результирующий грид выравнивался по нашему исходному гриду. Для этого нажимаем Environments...

- Настройки инструмента
- 03.jpg (113.42 КБ) 12350 просмотров
В настройках среды: General Settings, в поле Snap Raster выбираем исходный грид, который поверхность температур.

- Настройки среды
- 04.jpg (85.31 КБ) 12350 просмотров
Запускаем. Ну и, в принципе, вуаля. В ячейках полученного растра будет храниться количество попадающих туда точек, а где не попало ничего - NoData.

- Результат
- 05.jpg (36.38 КБ) 12350 просмотров
Дальше два растра можно совместно использовать в Raster Calculator, например... ну или что там в задаче...
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 и т.д.
Как такое дело получить из этой таблицы?
Re: распределение вероятности значений сетки
Добавлено: 27 мар 2010, 01:55
yumakaev
Навскидку пока ничего в голову не приходит. Думаю. Сразу понятно, что раз по оси 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" для одного показателя температуры могут оказаться статистически слабосвязанными, так как встречаемость наверняка зависит ещё и от какой-нибудь влажности, количества осадков, высоты над уровнем моря и т.п. То есть изолированно для одной только температуры вывести статистику встречаемости может оказаться невозможным...
Re: распределение вероятности значений сетки
Добавлено: 27 мар 2010, 02:20
Анна
одного показателя температуры могут оказаться статистически слабосвязанными
все так. изложила только часть

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