Форум врачей-аспирантов

Здравствуйте, гость ( Вход | Регистрация )

 
Добавить ответ в эту темуОткрыть тему
> Сравнение двух 3D поверхностей
nokh
сообщение 21.05.2017 - 22:58
Сообщение #1





Группа: Пользователи
Сообщений: 1202
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



Такая проблема. В ячейках регулярной сетки XY 30 х 30 находятся наблюдения с разными значениями Z. Т.о. имеем трёхмерную (3D) поверхность, которую для визуализации можно сгладить сплайнами. В других условиях значения Z изменяются и поверхность меняет форму. Необходимо сравнить изменения не только визуально, но и статистически. Понятно, что категориями средних значений проблему не решить, т.к. средние могут и не измениться, а вот рисунок на поверхности - изменится: зоны локальных максимумов и минимумов сместятся.

Пока придумал приспособить подход, идею (но не реализацию) которого подсмотрел у геостатистиков: нарезать куб (XYZ) на ячейки и подсчитать количество наблюдений в них. Например, X и Y разделить на 6 ячеек по 5 точек сетки. Получим поле из 6 х 6 = 36 ячеек. Теперь ось Z нарезаем на несколько слоёв от Zmin до Zmax для объединённых наборов данных, пусть на 3 слоя: мало, средне, много. Подсчитываем количество наблюдений в кадой ячейке каждого слоя для 1-ой поверхности и для 2-ой. Получаем 2 трёхмерных таблицы сопряжённости. Насколько я понимаю, хи-квадрат здесь не подойдёт, т.к. все три входа фиксированы. Т.е. имеем не биномиальное, а гипергеометрическое распределение, и сравнивать такие таблицы нужно каким-то многомерным аналогом точного метода Фишера или рандомизационным тестом.

Сделать это, наверное, смогу, но есть сомнения. Во-первых, непонятно на сколько кубиков лучше резать большой куб: дедовские рекомендации про 5 значений на ячейку для Монте-Карло не имеют смысла. Во-вторых, описанный подход сгодится и для нерегулярной сетки, т.е. возможно для регулярной он слишком груб и я просто не знаю каких-то уже существующих более точных способов, ведь с 3D-моделями работают достаточно плотно, должна быть и статистика под это. Раз мы можем построить доверительные интервалы для 2D сплайна и сравнить их для двух наборов, возможно что-то подобное можно сделать и для 3D. Буду признателен за критику, идеи, ссылки!

Сообщение отредактировал nokh - 21.05.2017 - 23:22
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 22.05.2017 - 02:51
Сообщение #2





Группа: Пользователи
Сообщений: 902
Регистрация: 23.08.2010
Пользователь №: 22694



Цитата(nokh @ 21.05.2017 - 22:58) *
Такая проблема. В ячейках регулярной сетки XY 30 х 30 находятся наблюдения с разными значениями Z. Т.о. имеем трёхмерную (3D) поверхность, которую для визуализации можно сгладить сплайнами. В других условиях значения Z изменяются и поверхность меняет форму. Необходимо сравнить изменения не только визуально, но и статистически. Понятно, что категориями средних значений проблему не решить, т.к. средние могут и не измениться, а вот рисунок на поверхности - изменится: зоны локальных максимумов и минимумов сместятся.

Пока придумал приспособить подход, идею (но не реализацию) которого подсмотрел у геостатистиков: нарезать куб (XYZ) на ячейки и подсчитать количество наблюдений в них. Например, X и Y разделить на 6 ячеек по 5 точек сетки. Получим поле из 6 х 6 = 36 ячеек. Теперь ось Z нарезаем на несколько слоёв от Zmin до Zmax для объединённых наборов данных, пусть на 3 слоя: мало, средне, много. Подсчитываем количество наблюдений в кадой ячейке каждого слоя для 1-ой поверхности и для 2-ой. Получаем 2 трёхмерных таблицы сопряжённости. Насколько я понимаю, хи-квадрат здесь не подойдёт, т.к. все три входа фиксированы. Т.е. имеем не биномиальное, а гипергеометрическое распределение, и сравнивать такие таблицы нужно каким-то многомерным аналогом точного метода Фишера или рандомизационным тестом.

Сделать это, наверное, смогу, но есть сомнения. Во-первых, непонятно на сколько кубиков лучше резать большой куб: дедовские рекомендации про 5 значений на ячейку для Монте-Карло не имеют смысла. Во-вторых, описанный подход сгодится и для нерегулярной сетки, т.е. возможно для регулярной он слишком груб и я просто не знаю каких-то уже существующих более точных способов, ведь с 3D-моделями работают достаточно плотно, должна быть и статистика под это. Раз мы можем построить доверительные интервалы для 2D сплайна и сравнить их для двух наборов, возможно что-то подобное можно сделать и для 3D. Буду признателен за критику, идеи, ссылки!



Тема нерядовая, готовых рецептов нет, поэтому все сказанное - ни разу не истина, а имхо в чистом виде.
Так вот, имхуется мне, что геометрия поверхностей определяется сдвигом, изменением масштаба и вращением (линейные и иные преобразования, искажающие расстояния не рассматриваем). Добиться одновременной инвариантности к перечисленным преобразованиям можно с помощью метода главных компонент, после чего сравнить два набора главных компонент знакомыми вам к-тами конгруэнтности. Они (к-ты конгруэнтности) обладают приятным свойством - распределены (после тягомотного предварительного шаманизма) ~N(0,1).
Так что для полученного z-значения можно и достигаемый уровень значимости узнать.

P.S. Оно, конечно, для двух поверхностей (читай, классов) невозбранно и многомерную плотность оценить, только как на основе леммы Неймана -Пирсона сконструировать к-л. критерий я, конечно же, не знаю.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 22.05.2017 - 11:43
Сообщение #3





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(nokh @ 21.05.2017 - 22:58) *
Такая проблема. В ячейках регулярной сетки XY 30 х 30 находятся наблюдения с разными значениями Z. Т.о. имеем трёхмерную (3D) поверхность, которую для визуализации можно сгладить сплайнами. В других условиях значения Z изменяются и поверхность меняет форму. Необходимо сравнить изменения не только визуально, но и статистически. Понятно, что категориями средних значений проблему не решить, т.к. средние могут и не измениться, а вот рисунок на поверхности - изменится: зоны локальных максимумов и минимумов сместятся.

Пока придумал приспособить подход, идею (но не реализацию) которого подсмотрел у геостатистиков: нарезать куб (XYZ) на ячейки и подсчитать количество наблюдений в них. Например, X и Y разделить на 6 ячеек по 5 точек сетки. Получим поле из 6 х 6 = 36 ячеек. Теперь ось Z нарезаем на несколько слоёв от Zmin до Zmax для объединённых наборов данных, пусть на 3 слоя: мало, средне, много. Подсчитываем количество наблюдений в кадой ячейке каждого слоя для 1-ой поверхности и для 2-ой. Получаем 2 трёхмерных таблицы сопряжённости. Насколько я понимаю, хи-квадрат здесь не подойдёт, т.к. все три входа фиксированы. Т.е. имеем не биномиальное, а гипергеометрическое распределение, и сравнивать такие таблицы нужно каким-то многомерным аналогом точного метода Фишера или рандомизационным тестом.

Сделать это, наверное, смогу, но есть сомнения. Во-первых, непонятно на сколько кубиков лучше резать большой куб: дедовские рекомендации про 5 значений на ячейку для Монте-Карло не имеют смысла. Во-вторых, описанный подход сгодится и для нерегулярной сетки, т.е. возможно для регулярной он слишком груб и я просто не знаю каких-то уже существующих более точных способов, ведь с 3D-моделями работают достаточно плотно, должна быть и статистика под это. Раз мы можем построить доверительные интервалы для 2D сплайна и сравнить их для двух наборов, возможно что-то подобное можно сделать и для 3D. Буду признателен за критику, идеи, ссылки!



Модели текстур это Random Fields, соответственно и брать пакет https://cran.r-project.org/web/packages/Ran...elds/index.html

Ну и теорию почитать https://en.wikipedia.org/wiki/Random_field


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 31.05.2017 - 21:36
Сообщение #4





Группа: Пользователи
Сообщений: 1202
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



Благодарю откликнувшихся!

1) По поводу того, что "геометрия поверхностей определяется сдвигом, изменением масштаба и вращением..." Вспомнил после вашего поста про прокрустов анализ. Возможно его также можно приспособить для сравнения двумерных матриц, т.е. когда есть оси X и Y, а на пересечении значения, которые собирался откладывать по оси Z. У Кирилла Орлова (http://spsstools.net/ru/macros/KO-spssmacros/) есть макрос под SPSS, который делает прокрустов анализ с возможностями более тонкой настройки, чем PROTEST в виде самостоятельного пакета или под R. Там можно отключать отдельные процедуры прокрустового преобразования (изометрическое растяжение-сжатие, вращение, отображение) и рандомизационной процедурой получать не только общее р, но и поячеечное. Вот я и подумал, что если отключить все 3 преобразования, то получаем возможность сравнить 2 матрицы чистой рандомизацией + получить р для каждой ячейки. Т.о. можно построить уже 3D поверхность статистической значимости различий поверхностей, можно срез через неё провести на уровне 0,05 - получим 2d-контур значимости различий. Мне кажется, что такая идея вполне жизнеспособна, хотя сам путь через прокрустов анализ в котором отключены все прокрустовы преобразования, конечно, диковат wink.gif Наверное в R можно куда эффективнее реализовать рандомизационную процедуру сравнения поверхностей напрямую. Ограничение здесь - должны быть жёстко одинаковые координаты для X и Y, но это как раз мой случай.

2) По поводу случайных полей порылся, посмотрел отечественные источники по марковским случайным полям и зарубежные по random fields. Материалы есть, но взять за образец нечего. Зато через random fields вышел на смежную область - functional imaging. Там всё очень круто: и сглаживание, и значимость, и регрессия с прогнозом, и специальные варианты анализа главных компонент, и др. Пока немного зарылся в эту область. Мне так круто не нужно, но "на вырост" - полезно познакомиться. Большой плюс - здесь есть достаточно материала по которому можно учиться. Есть пакеты под R, есть даже со своим GUI: https://cran.r-project.org/web/views/MedicalImaging.html
Попробую в эту сторону двинуться...

Сообщение отредактировал nokh - 31.05.2017 - 21:38
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 6.06.2017 - 00:25
Сообщение #5





Группа: Пользователи
Сообщений: 1202
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



Цитата(nokh @ 22.05.2017 - 01:58) *
...Раз мы можем построить доверительные интервалы для 2D сплайна и сравнить их для двух наборов, возможно что-то подобное можно сделать и для 3D.

Нашёл, простой способ получить приблизительный 95% ДИ для сглаженной поверхности. Пакет mgcv по умолчанию подгоняет 2d данные обобщённой аддитивной моделью (GAM) с приблизительными 95% ДИ, вычисленными как предсказанное значение +/- 2se, а 3d-поверхности как предсказанное значение +/- 1se. Если в качестве se указать 2, то получится 3 поверхности: предсказанная поверхность и +/- 2se.
vis.gam(model, se=2)

Сообщение отредактировал nokh - 6.06.2017 - 00:29
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

Добавить ответ в эту темуОткрыть тему