как рассчитать порог Оцу в 1D - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь определить бимодальные распределения в моих данных аналитической химии.Каждый набор данных представляет собой список из 3 ~ 70 времен хранения для конкретного соединения из ГХ-МС.RT для некоторого соединения распределены бимодально, где при поиске в библиотеке один и тот же идентификатор назначается двум или более различным функциям в данных с разными RT.Это довольно распространено для изомеров и других пар соединений с очень похожими масс-спектрами.Например.Вот гистограмма RT для одного соединения, показывающая бимодальное распределение.RT histogram

Я хочу рассчитать порог Оцу, чтобы попытаться определить бимодальные данные (есть также мультимодальные распределения, но по одному шагу за раз).Я изо всех сил пытаюсь понять статью Википедии о вычислениях, но текст указывает, что порог можно найти, найдя минимальную внутриклассовую дисперсию.Поэтому я попытался вычислить это из списка RT следующим образом:

a = list(d['Component RT'])
n = len(a)
b = [a.pop(0)]

varA = []
varB = []

for i in range(1,n-2):
    b.append(a.pop(0))
    varA.append(statistics.stdev(a)**2)
    varB.append(statistics.stdev(b)**2)

Правильно ли я считаю, что если я нанесу сумму отклонений для приведенных выше данных, я смогу определитьПорог отсу как минимум?summed variances

В этом примере пороговое значение очевидно, и есть около 35 значений для работы.Для большинства соединений меньше значений (обычно <15), и данные могут быть менее четко определены.Это даже правильный порог для использования?Статья о модальности в Википедии рассказывает о множестве других тестов на мультимодальность.</p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...