Математический анализ карт плотностей

liool

Есть несколько трехмерных карт плотностей скажем map1,map2,map3,...,map20, рассчитанные для точек времени t=1,2,3,..,20 соответственно.
Карты представляют из себя сетку, где для каждого единичного кубика известно значение плотности, т.е. каждая точка - 3 координаты + значение плотности.
Карты содержат области повышенной плотности (пики). Если рисовать в пространстве все точки скажем с плотностью > 80% от максимальной плотности, то получится несколько сферообразных областей.
Цель: показать, что со временем распределение плотности стремится к некому равновесному состоянию. Или если это не получится, показать, что положение/размер областей высокой плотности перестает меняться с некоторого момента времени.
Какие методы можно использовать для сравнительного анализа карт? И какой может быть критерий сходимости распределения плотности?
Заранее спасибо за идеи и наводки :)

blackout

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

blackout

Вопрос: если, например, плотность есть только в одном кубике, а в остальных 0 и при этом она со временем скачет туда обратно между двумя соседними кубиками, но дальше никуда не уходит. Это значит что плотность стремится к какому-то равновесному состоянию или наоборот?

liool

t1 t15 t20
0000 0000 0000
0100 0010 0000
0000 0000 0010
0000 0000 0000
если бы у нас было 4х4 ячеек, то тогда переход в соседнюю - это точно не равновесие. У меня кубиков: 40х45х39
А вот такое я бы назвала сходимостью для t15 и t20:
t1 t15 t20
2210 0000 0000
0000 0100 0200
0000 1510 1510
0000 0100 0100
А вот такое в идеале я бы хотела считать равновесными флуктуациями, если возможно.
0000 0000
0100 0200
1510 2920
0100 0200
Основная цель все таки отслеживать, что происходит с пиковыми областями, т.к. вся мелочевка вокруг нестабильна и меняется немного.
Пиковые области формируются не сразу. Мне нужно отследить время когда они достаточно полноценно сформировались. Если пики сформировались, то не пиковые области уже никогда не станут новыми пиками. Нужно математически определить время после которого распределение пиков не меняется :crazy:

liool

сумма модулей разностей по всем кубикам, деленная на разность по времени.
Почему нужно делить на время? :confused:

liool

если делить на время, то не уменьшается.
а если не делить на время, то уменьшается, но на плато не выходит.

blackout

Делить или не делить должно быть понятно из задачи и того, что ты в итоге хочешь получить.

blackout

И повторю вопрос в другой формулировке: перенос плотности из ячейки в близкую ячейку является меньшим изменением, чем перенос в далекую? Или таким же изменением?

liool

меньшим

blackout

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

blackout

Вот тут, например, сколько областей высокой плотности? 1, 2 или 3?
1 1 0 0 10 10 0 0
1 1 0 0 10 10 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 100

blackout

А вообще это называется кластерный анализ. Можно хоть в вики почитать.

liool

чтобы не объяснять на пальцах плотность выглядит вот так примерно:

сечения плотности построены в процентах от максимального значения плотности.
темно красный >80%
красный >60%
розовый >40%
серый >15%
точки >0

liool

Я уже думала про кластерный анализ, но пока не поняла с чего начинать. Можешь порекомендовать какой-нибудь софт, который обрабатывает данные по декартовым координатам, ну и умеет учитывать дополнительный параметр - плотность? Может быть известны стандартные алгоритмы для таких ситуаций как моя?

liool

Вот тут, например, сколько областей высокой плотности? 1, 2 или 3?
1 1 0 0 10 10 0 0
1 1 0 0 10 10 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 100
думаю зависит от критерия? если брать точки > 50% от максимума, то 1 область. Если > 9%, то 2?

lenmas

И какой может быть критерий сходимости распределения плотности?
В теории вероятностей это слабая сходимость, то-есть интеграл плотности по любой фиксированной области должен
быть близок к предельному.
В принципе, сходимость по распределению вытекает из сходимости в среднем. Если тебе важно учитывать различие
в зависимости от расстояния, то бери среднее отклонение с весом, возрастающим в зависимости от расстояния между точками. То-есть вычисляй интеграл
[math]  $$  \biggl(\iint\limits_{\Omega^2}\rho(|x-y|)|f_1(x)-f_2(y)|^p\,dy\biggr)^{1/p}  $$  [/math]
где \rho --- возрастающая положительная функция, подбирая рост которой будешь регулировать важность учета различия по расстоянию между точками. Обычно p берут двойкой.
P.S. Хотя не, это хреново, так как для f_1=f_2 не ноль получается. Лучше брать что-то типа усреднения плотности по
окрестности размера h>0, и потом брать среднее отклонение этих усредненных плотностей, то-есть
[math]  $$  \biggl(\int\limits_\Omega\Bigl|\frac1{V(B(x,h}\int\limits_{B(x,h)}f_1(y)\,dy-\frac1{V(B(x,h}\int\limits_{B(x,h)}f_2(y)\,dy\Bigr|^2\,dx\biggr)^{1/2}  $$  [/math]
где B(x,h) --- h-окрестность точки x, V(B(x,h --- ее объем.
P.P.S. Эти усреднения по сути и есть уже твои "кубики". Тогда просто считаешь интеграл от квадрата разности твоих плотностей по обычным кубатурным формулам, тут все сводится к сумме квадратов разностей плотностей, умноженных на объем каждого кубика. Если разность становится близкой к нулю, то можно считать, что все стабилизировалось.

blackout

Карты содержат области повышенной плотности (пики). Если рисовать в пространстве все точки скажем с плотностью > 80% от максимальной плотности, то получится несколько сферообразных областей.
Если ты уверена про 80%, то просто считай количество разных областей с плотностью >80%.

blackout

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

liool

Если ты уверена про 80%, то просто считай количество разных областей с плотностью >80%.
но они же могут перемещаться, менять размер, появляться и исчезать! по крайней мере в первых картах распределение плотности сильно отличается. А в конце меняется очень слабо, но все равно немного меняется
можно сравнивать визуально - очень удобно :) но мне сказали, что это ненаучный метод :o :smirk:

liool

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

blackout

Если ты уверена, что в конце концов плотность в каждой области будет >80%, то просто выкидывай все с плотностью <80% и находи оставшиеся связные области. Можно следить за их количеством, когда оно стабилизируется. Еще можно следить за их центрами, когда они перестанут сильно двигаться.
Плюсы этого способа:
1) Он очень простой
Минусы:
1) Если будет область с плотностью 79% она не будет замечена.
2) Если будет, например, две области с плотностью 100% соединенные перемычкой плотностью 80%, то они будут считаться одной областью.

blackout

тогда придется умножать на что-то вроде 10^16, чтобы перевести из долей в штуки - это не будет проблемой для алгоритма?
Будет, но судя по твоему вольному обращению с процентами достаточно будет умножать на 10.

liool

судя по твоему вольному обращению с процентами достаточно будет умножать на 10.
мое вольное обращение с процентами исключительно из-за невозможности нарисовать четырехмерную картинку распределения плотности :( :crazy: поэтому я рисую проекции для определенных уровней плотности, что естественно плохо работает для ситуаций типа 79%
в этом отношении использование какого-нибудь математического метода для 4хмерного анализа плотностей предпочтительней, чем 3хмерный анализ отдельных проекций.

liool

P.P.S. Эти усреднения по сути и есть уже твои "кубики". Тогда просто считаешь интеграл от квадрата разности твоих плотностей по обычным кубатурным формулам, тут все сводится к сумме квадратов разностей плотностей, умноженных на объем каждого кубика. Если разность становится близкой к нулю, то можно считать, что все стабилизировалось.
Не могу сказать, что все поняла. Все кубики единичные, поэтому на объем можно не умножать. Разность плотностей в цитате между какими кубиками? Между одним и тем же, но в разные моменты времени? Если да, то это похоже на предложенный :
 
сумма модулей разностей по всем кубикам
?
эта величина действительно уменьшается, но не выходит на плато т.е. математически распределение плотности не сходится.
Выглядит это примерно так:

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

lenmas

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

liool

То-есть тебе не важны сами значения пиков, а просто их наличие?
И еще, у тебя есть нормированность плотностей (то-есть интеграл плотности равен единице)?
да и да :)

liool

То-есть тебе не важны сами значения пиков, а просто их наличие?
мне достаточна полуколичественная оценка (но если получится более строго, то я буду только рада типа: "здесь 2 региона повышенной плотности, а вот здесь регион пониженной плотности, а между ними регион с средней. И такое распределение появилось с t10 и мало менялось до t20, поэтому в след раз мы можем сразу брать карту для t10, чем значительно сэкономим вычислительные ресурсы".
Поэтому я брала карты плотности с сечениями плотности для 15%, 40%, 60% и 80% для ряда t и визуально сравнивала. Но как я уже говорила - это ненаучно

blackout

Ботай кластерный анализ, либо если лень самой ботать ищи того, кто его знает. Прог которые его умеют должно быть много.

lenmas

Ну не знаю. Тогда чтобы сравнить плотности f_1 и f_2, надо для порогов h_1 и h_2 (сколько-то там процентов от максимумов f_1 и f_2 смотреть те кубики, для которых f_2>h_2 и f_1<h_1, назначать штраф 1/f_1,
чтобы отследить сильное удаление от области f_1>h_1. Если сумма по таким кубикам будет больше какой-то величины,
например, 2/h_1 умножить на число таких кубиков, то значит области сильно отличаются. Но это тоже мало похоже на науку.
Можно еще попробовать хи-квадрат критерий сюда втюхать, ну то-есть разбить всю область на области от 100 до 80, от 80 до 60 и так далее от 20 до 0 процентов от f_1, найти суммы плотностей кубиков из этих областей (это будут "вероятности" p_1, p_2, p_3, p_4, p_5) , потом просуммировать по этим областям значения плотностей f_2, умножить эти суммы на общее число кубиков n, это будут у нас n_1, n_2, n_3, n_4, n_5, и составить величину
[math]  $$  \chi^2=\frac{(n_1-np_1)^2}{np_1}+\frac{(n_2-np_2)^2}{np_2}+\frac{(n_3-np_3)^2}{np_3}+\frac{(n_4-np_4)^2}{np_4}+\frac{(n_5-np_5)^2}{np_5}  $$  [/math]
которая должна быть распределена по распределению \chi^2(4 ну и выбрать порог критерия какой-нибудь помощнее, например для уровня значимости 98%, при превышении которого считаем, что плотности не похожи (забыл уже подробности, смотри в инете).
Оставить комментарий
Имя или ник:
Комментарий: