2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3
 
 Re: Регрессия в R
Сообщение17.06.2022, 01:18 
Заслуженный участник
Аватара пользователя


01/09/13
4294
metelev в сообщении #1557639 писал(а):
Ну а регрессию в том или ином виде всё равно по-хорошему надо задействовать.

Нет, не спешите...
Давайте уж разберём задачу до конца, а потом вернёмся к "физике" (и может оказаться, что решать надо совсем другую задачу)...

metelev в сообщении #1557639 писал(а):
Произведение можно подсчитать.

Нет, произведение совсем плохо - любой 0 всё убьёт...
Я предлагаю подсчитать дисперсию по строкам.
Напишите что получается?

-- 17.06.2022, 01:40 --

metelev в сообщении #1557639 писал(а):
Вот у нас два параметра получается, которые надо как-то отдельно искать

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

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение17.06.2022, 06:02 
Аватара пользователя


20/03/12
267
СПб
Geen в сообщении #1557649 писал(а):
Я предлагаю подсчитать дисперсию по строкам.
Напишите что получается?



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

Geen в сообщении #1557649 писал(а):
Вы не поняли, видимо, главное - Вы не сможете найти (эти) два параметра принципиально... никакими математическими ухищрениями/регрессиями.


Да понял, почему. Их надо будет как-то отдельно находить, из других соображений.

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение17.06.2022, 08:54 
Аватара пользователя


20/03/12
267
СПб
Geen в сообщении #1557649 писал(а):
Я предлагаю подсчитать дисперсию по строкам.
Напишите что получается?



Это про то, что дисперсия произведения равна произведению дисперсий? Но ведь у нас не случайные величины. И даже после вычитания среднего.

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение17.06.2022, 09:25 


09/05/16
138
metelev в сообщении #1557639 писал(а):
Данные со спектрофотометра. $A$ это степень диссоциации. Меняется от 0 до 1. $e$ это молярный коэффициент поглощения. Складывается из двух форм, диссоциированной и недиссоциированной, а весом служит степень диссоциации.


Тогда то, чем Вы занимаетесь, это не регрессия, а матричная факторизация. Ещё эту задачу называют multivariate curve resolution. Если назвать молярный коэффициент поглощения $k$-го вещества на $j$-й длине волны буквой $s_{j,k}$, а его вклад в спектр $i$-го образца $c_{i,k}, \; 0 \le c_{i,k} \le 1$, получаем форму, в которой эту задачу обычно записывают:

$$
e_{i,j} = \sum_{k=1}^K c_{i,k} s_{j,k}
$$

Или в матричной форме: $\mathbf E = \mathbf C \mathbf{S}^\top$ (с ограничениями на $\mathbf C, \mathbf S$). Ранг матрицы $\mathbf E$ равен $K$, поэтому матрица $\mathbf C$ "высокая" (много строк, $K$ столбцов), а $\mathbf{S}^\top$ - "широкая" ($K$ строк, много столбцов).

Плохая новость: эта задача имеет т.н. вращательные степени свободы. Имея решение $\mathbf E = \mathbf C \mathbf{S}^\top$, можно взять произвольную ортонормированную матрицу $K \times K$ (матрицу вращения) $\mathbf P, \; \mathbf P \mathbf{P}^\top = \mathbf I$ и поместить $\mathbf P \mathbf{P}^\top$ между $\mathbf C$ и $\mathbf S$: $\mathbf C \mathbf{S}^\top = \mathbf C \mathbf I \mathbf{S}^\top = \mathbf C \mathbf P \mathbf{P}^\top \mathbf{S}^\top = (\mathbf{C P})(\mathbf{S P})^\top = \mathbf{C'} \mathbf{S'}^\top$.

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

Определить этот диапазон можно разными способами. Например, можно минимизировать и максимизировать вклад каждой компоненты в решение, перебирая матрицы вращения, для которых ограничения на решение ещё выполняются. Если повезёт (профили чистых веществ мало перекрываются; диапазон их концентраций достаточно широкий; шума достаточно мало), неотрицательности хватит, чтобы сузить диапазон решений достаточно сильно.

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение17.06.2022, 10:01 
Аватара пользователя


20/03/12
267
СПб
aitap
Спасибо за ответ. Насколько я понял, Вы говорите про то, чтобы разделить на отдельные компоненты суммарный спектр, зная спектры отдельных компонент. Моя задача немного другая. У меня спектры компонент неизвестны, они одни и те же, их всего два, для каждой кривой различаются их веса в соответствии со степенью диссоциации, которая тоже неизвестна.

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение17.06.2022, 12:08 


09/05/16
138
metelev в сообщении #1557684 писал(а):
Насколько я понял, Вы говорите про то, чтобы разделить на отдельные компоненты суммарный спектр, зная спектры отдельных компонент.
Не совсем. В этой задаче известным считают только количество компонентов (которые одни и те же для всех образцов), а их спектры и состав каждого образца (в терминах этих компонентов) остаются неизвестными. Если бы чистые спектры были известны, эта задача решалась бы в одно действие и имела уникальное решение, во многом сродни линейной регрессии.

metelev в сообщении #1557684 писал(а):
У меня спектры компонент неизвестны, они одни и те же, их всего два, для каждой кривой различаются их веса в соответствии со степенью диссоциации, которая тоже неизвестна.
Хорошо. Подставим в моё предыдущее сообщение $K = 2$, а на веса $\mathbf C$ дополнительно (плюс к неотрицательности для обеих матриц) наложим ограничения $\sum_k c_{i,k} = 1 \; \forall i$. Похоже на Вашу задачу? Не совсем понимаю, как именно здесь записать степень диссоциации, но её наверняка можно однозначно выразить через $c_{i,k}$.

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение17.06.2022, 16:06 
Аватара пользователя


20/03/12
267
СПб
aitap

Нашёл в одной из публикаций, что это из области хроматографии. Each term of this additive model can be expressed by the product of a dyad of profiles, $\mathbf C_i \mathbf{S_i}^\top$ , where $\mathbf{S_i}^\top$ is the pure spectrum of the component weighted by the related elution profile, $\mathbf C_i$ .(eq. 2)

Это из хроматографии, где данные последовательно во времени идут и имеют известный спектр и неизвестный вес. Всё-таки не то.

Ссылка на публикацию https://pubs.rsc.org/en/content/article ... c4ay00571f

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение17.06.2022, 16:25 


09/05/16
138
metelev в сообщении #1557752 писал(а):
Нашёл в одной из публикаций, что это из области хроматографии
Не обязательно. Факторизацию матриц применяют и в других областях спектроскопии, и снаружи неё.

metelev в сообщении #1557752 писал(а):
Each term of this additive model can be expressed by the product of a dyad of profiles, $\mathbf C_i \mathbf{S_i}^\top$ , where $\mathbf{S_i}^\top$ is the pure spectrum of the component weighted by the related elution profile, $\mathbf C_i$ .(eq. 2)
Это верно, причём и веса $\mathbf C_i$, и чистые спектры $\mathbf S_i$ неизвестны. В Вашем случае степень диссоциации должно быть возможно посчитать через $\mathbf C$.

metelev в сообщении #1557752 писал(а):
Это из хроматографии, где данные последовательно во времени идут и имеют известный спектр и неизвестный вес. Всё-таки не то.
Да, на $\mathbf C$, бывает, накладывают ограничения, связанные с тем, что спектры получены последовательно, например, когда это серия измерений в ходе медленно идущей реакции, для которой хотят исследовать кинетику, или в хроматографии, но этого можно и не делать. В самом простом случае получается неотрицательное разложение матриц.

С моей точки зрения, Ваша задача всё-таки очень похожа на $\min_{\mathbf C, \mathbf S} || \mathbf E - \mathbf C \mathbf S^\top ||^2$.

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение21.06.2022, 16:24 
Аватара пользователя


20/03/12
267
СПб
aitap в сообщении #1557755 писал(а):
С моей точки зрения, Ваша задача всё-таки очень похожа на $\min_{\mathbf C, \mathbf S} || \mathbf E - \mathbf C \mathbf S^\top ||^2$.



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

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

Статью основоположников скачал и начал читать, вот она мне нравится. (Lawton, W. H., & Sylvestre, E. A. (1971). Self Modeling Curve Resolution. Technometrics, 13(3), 617–633. doi:10.1080/00401706.1971.10488) Всё прописано детально, я бы даже сказал разжёвано, и доведено до чисел. Полностью соответствует моей задаче. На уровень выше, чем мои дилетантские попытки что-то порешать. Надеюсь её освоить.

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение22.06.2022, 11:24 


09/05/16
138
metelev в сообщении #1558108 писал(а):
Если взять перемножение отдельной строки на отдельный столбец, где столбец это спектр, мы просто весь спектр суммируем


Столбцы матрицы $\mathbf S$, действительно, соответствуют чистым спектрам; в Вашем примере их два (а строк - столько, сколько есть длин волн, пусть будет $M$). Однако, матрицу $\mathbf S$ ещё и транспонируют, поскольку умножить матрицу, содержащую $N$ строк и $2$ столбца, на матрицу из $M$ строк и $2$ столбцов нельзя. (Можно, если $M = 2$, но физического смысла, как Вы верно заметили, у такого произведения не будет.)

Поскольку транспонирование меняет местами строки и столбцы матрицы $\mathbf S$, в результате получается, что каждый элемент матрицы $e_{ij}$ - молярный коэффициент поглощения $i$-го образца на $j$-й длине волны - складывается из двух вкладов компонентов в $i$-й образец, $c_{i,1}$ и $c_{i,2}$, каждый из которых умножен на соответствующий ему элемент чистого спектра компонента на $j$-й длине волны, $s_{j,1}$ и $s_{j,2}$.

metelev в сообщении #1558108 писал(а):
Статью основоположников скачал и начал читать, вот она мне нравится. Lawton, W. H., & Sylvestre, E. A. (1971). Self Modeling Curve Resolution. Technometrics, 13(3), 617–633.


Рад, что у Вас получается. Удачи в её освоении.

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение22.06.2022, 12:45 
Аватара пользователя


20/03/12
267
СПб
aitap в сообщении #1558171 писал(а):
каждый элемент матрицы $e_{ij}$ - молярный коэффициент поглощения $i$-го образца на $j$-й длине волны


Да, правда. Спасибо.

aitap в сообщении #1558171 писал(а):
Рад, что у Вас получается. Удачи в её освоении.


Там тоже интересные вещи есть. Например, собственные векторы для неквадратных матриц. Что это такое, мне не очень понятно. Или в самом начале, где они вводят требование $\alpha\neq\delta\beta$, причём $\delta$ единственная неизвестная, а $\alpha$ и $\beta$ не равны нулю. В дальнейшем становится понятно, что они хотят сказать, но как-то по-другому всё-таки надо было это сделать.

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение23.06.2022, 21:37 
Аватара пользователя


20/03/12
267
СПб
Про матрицы --- сегодня утром принялся перечитывать то же место и заметил что они матрицу умножают на транспонированную и получают квадратную. У которой собственные векторы такие, что можно их использовать как базис для дальнейших изысканий. Интересно. Такая наука почему-то мимо меня прошла в своё время.

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение24.06.2022, 19:03 


09/05/16
138
metelev в сообщении #1558296 писал(а):
заметил что они матрицу умножают на транспонированную и получают квадратную. У которой собственные векторы такие, что можно их использовать как базис для дальнейших изысканий

Если Вам нужны ключевые слова для дальнейшего поиска, это называется метод главных компонент (principal component analysis). Близко с ним связано сингулярное разложение (singular value decomposition), которое позволяет получить из матрицы с данными две ортонормированных матрицы и диагональную матрицу с коэффициентами:

$$\mathbf X = \mathbf U \operatorname{diag}(\mathbf \sigma) \mathbf{V}^\top$$

Игнорируя компоненты, которым соответствуют малые сингулярные числа $\sigma_i$, можно получить форму сжатия данных с потерями. Можно показать, что собственные вектора матрицы $\mathbf X^\top \mathbf X$ составляют матрицу $\mathbf V$, а собственные вектора матрицы $\mathbf X \mathbf X^\top$ - матрицу $\mathbf U$. У него есть много других применений.

 Профиль  
                  
 
 Re: Регрессия в R
Сообщение24.06.2022, 22:03 
Аватара пользователя


20/03/12
267
СПб
aitap
Спасибо. Очень интересно.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу Пред.  1, 2, 3

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group