Я пытаюсь отделить две группы значений из одного набора данных. Я могу предположить, что одна из популяций обычно распределена и составляет не менее половины размера выборки. Значения второго значения ниже или выше значений первого (распределение неизвестно). То, что я пытаюсь сделать, - это найти верхний и нижний пределы, которые бы охватывали нормально распределенное население от другого.
Мое предположение дает мне отправную точку:
- все точки в пределах межквартильного диапазона образца взяты из нормально распределенной популяции.
Я пытаюсь проверить выбросы, отбирая их из остальной части выборки, пока они не вписываются в 3-е число в нормально распределенной популяции. Что не идеально, но, кажется, дает достаточно разумный результат.
Является ли мое предположение статистически обоснованным? Что может быть лучше для этого?
ps пожалуйста исправьте теги кого-то.
источник
Ответы:
Если я правильно понимаю, тогда вы можете просто подогнать смесь двух нормалей к данным. Есть много пакетов R, которые доступны для этого. В этом примере используется пакет mixtools :
Это дает:
Смесь двух нормалей http://img294.imageshack.us/img294/4213/kernal.jpg
Пакет также содержит более сложные методы - проверьте документацию.
источник
источник
Это предполагает, что вы даже не знаете, нормально ли второе распределение или нет; Я в основном справляюсь с этой неопределенностью, сосредотачиваясь только на нормальном распределении. Это может или не может быть лучшим подходом.
Если вы можете предположить, что две совокупности полностью разделены (т. Е. Все значения из распределения A меньше всех значений из распределения B), то один из подходов заключается в использовании функции optimize () в R для поиска точки останова, которая дает оценки среднего и SD нормального распределения, которые делают данные наиболее вероятными:
Если вы не можете предположить полное разделение, тогда я думаю, что вам придется предположить некоторое распределение для второго распределения, а затем использовать смешанное моделирование. Обратите внимание, что моделирование смеси не будет фактически маркировать отдельные точки данных, но даст вам пропорцию смеси и оценки параметров каждого распределения (например, среднее, SD и т. Д.).
источник
optimize
требует двух дистрибутивов, чтобы быть рядом, как я понимаю. В моем случае одно находится внутри другого, т. Е. Значения второго населения находятся по обе стороны от пределов.Я удивлен, что никто не предложил очевидное решение:
Теперь для объяснения:
ltsReg
функция в пакетеrobustbase
, когда вызывается с опциейдает одномерные (точные) веса MCD. (это n-векторные 0-1 веса, хранящиеся в
$raw.weights
объекте. Алгоритм их идентификации - это оценка MCD (1)).В двух словах, эти веса равны 1 для членов подмножестваh = ⌈ ( n + 2 ) / 2 ⌉ Наиболее концентрированные наблюдения.
В первом измерении он начинается с сортировки всех наблюдений, а затем вычисляет меру всех смежных подмножествчас наблюдения: обозначает
Икс( я ) ят ч Ввод вектора отсортированных наблюдений, он вычисляет меру ( х( 1 ), . , , , х( ч + 1 )) тогда ( х( 2 ), . , , , х( ч + 2 ))
и так далее ...) затем сохраняет тот с меньшей мерой.
(например,
Этот алгоритм предполагает, что ваша группа интересов имеет строгое большинство исходной выборки и имеет симметричное распределение (но нет никакой гипотезы о распределении остальныхн - ч наблюдение).
источник