Допустим, я изучаю, как нарциссы реагируют на различные почвенные условия. Я собрал данные о pH почвы в зависимости от зрелой высоты нарцисса. Я ожидаю линейных отношений, поэтому я продолжаю выполнять линейную регрессию.
Однако, когда я начал свое исследование, я не осознавал, что популяция на самом деле содержит две разновидности нарцисса, каждый из которых очень по-разному реагирует на рН почвы. Таким образом, график содержит две различные линейные зависимости:
Конечно, я могу посмотреть на это и отделить вручную. Но мне интересно, если есть более строгий подход.
Вопросов:
Существует ли статистический тест для определения того, будет ли набор данных лучше подходить по одной строке или по N строк?
Как бы я запустить линейную регрессию, чтобы соответствовать N строк? Другими словами, как мне распутать смешанные данные?
Я могу думать о некоторых комбинаторных подходах, но они кажутся вычислительно дорогими.
Разъяснения:
Существование двух разновидностей было неизвестно во время сбора данных. Разнообразие каждого нарцисса не наблюдалось, не отмечалось и не регистрировалось.
Невозможно восстановить эту информацию. Нарциссы умерли со времени сбора данных.
У меня сложилось впечатление, что эта проблема чем-то похожа на применение алгоритмов кластеризации, поскольку вам почти необходимо знать количество кластеров перед началом работы. Я считаю, что при ЛЮБОМ наборе данных увеличение числа строк уменьшит общую среднеквадратичную ошибку. В крайнем случае, вы можете разделить ваш набор данных на произвольные пары и просто провести линию через каждую пару. (Например, если бы у вас было 1000 точек данных, вы могли бы разделить их на 500 произвольных пар и провести линию через каждую пару.) Подгонка была бы точной, а среднеквадратичная ошибка была бы точно нулевой. Но это не то, что мы хотим. Мы хотим «правильное» количество строк.
источник
Ответы:
Я думаю, что ответ Деметрия будет отличным, если мы предположим, что у вас есть ярлыки для разных сортов. Когда я прочитал твой вопрос, мне это показалось не так. Мы можем использовать подход, основанный на алгоритме EM, чтобы в основном соответствовать модели, которую предлагает Деметрий, но не зная меток для разнообразия. К счастью, пакет mixtools в R предоставляет нам эту функциональность. Поскольку ваши данные довольно разделены, и у вас, кажется, их немного, они должны быть довольно успешными.
Мы можем изучить результаты
Таким образом, он подходит для двух регрессий, и, по его оценкам, 49,7% наблюдений попали в регрессию для компонента 1, а 50,2% - в регрессию для компонента 2. Как я смоделировал данные, это было разделение на 50-50, так что это хорошо.
«Истинные» значения, которые я использовал для симуляции, должны давать строки:
y = 41,55 + 5,185 * ph и y = 65,14 + 1,41848 * ph
(который я оценил «от руки» по вашему графику, чтобы данные, которые я создаю, были похожи на ваши) и строки, которые EM-алгоритм дал в этом случае, были:
y = 41,514 + 5,19 * ph и y = 64,655 + 1,55 * ph
Довольно чертовски близко к фактическим значениям.
Мы можем построить подгонянные линии вместе с данными
источник
РЕДАКТИРОВАТЬ: я первоначально думал, что ОП знал, какие наблюдения пришли от каких видов. Редактирование ОП дает понять, что мой оригинальный подход неосуществим. Я оставлю это для потомков, но другой ответ намного лучше. В качестве утешения я написал кодовую модель в Стэне. Я не говорю, что байесовский подход особенно хорош в этом случае, но я могу внести свой вклад в это.
Код Стэн
Запустить модель Стэна из R
Полученные результаты
Пунктирные линии - наземная правда, сплошные линии оценены.
Оригинальный ответ
Если вы знаете, какой образец взят из какого сорта нарцисса, вы можете оценить взаимодействие между сортом и PH почвы.
Ваша модель будет выглядеть
Вот пример на R. Я сгенерировал некоторые данные, которые выглядят так:
Ясно, что две разные линии, и линии соответствуют двум видам. Вот как можно оценить линии, используя линейную регрессию.
И результат
Для видов, обозначенных 0, линия примерно равна
Для видов, обозначенных 1, линия приблизительно
источник
Статистический подход очень похож на два ответа выше, но он немного больше касается того, как выбрать количество скрытых классов, если вам не хватает предварительных знаний. Вы можете использовать информационные критерии или скупость в качестве руководства при выборе количества скрытых классов.
Вот пример Stata, использующий последовательность моделей конечных смесей (FMM) с 2-4 скрытыми классами / компонентами. Первая таблица - это коэффициенты для скрытого членства в классе. Их немного сложно интерпретировать, но позже они могут быть преобразованы в вероятности
estat lcprob
. Для каждого класса вы также получаете параметр перехвата и параметр ph slope, за которым следуют предельные вероятности скрытого класса и две микросхемы в выборке. Эти оценки коэффициентов интерпретируются так же, как коэффициенты из модели линейной регрессии. Здесь самый маленький BIC в выборке говорит вам выбрать двухкомпонентную модель как лучшую. AIC странным образом выбирает 3-компонентную модель. Вы также можете использовать микросхемы вне выборки, чтобы выбрать или использовать перекрестную проверку.Подход FMM не всегда будет работать так хорошо на практике, если классы менее строгие. Вы можете столкнуться с вычислительными трудностями из-за слишком большого количества скрытых классов, особенно если у вас недостаточно данных или функция правдоподобия имеет несколько локальных максимумов.
источник
Я сосредоточусь на вопросе статистической значимости, так как Дейсон уже рассмотрел часть моделирования.
Я не знаком с какими-либо формальными тестами для этого (которые, я уверен, существуют), поэтому я просто добавлю некоторые идеи (и, возможно, позже добавлю код R и технические детали).
Во-первых, это удобно выводить классы. Предполагая, что у вас есть две строки, подходящие для данных, вы можете приблизительно восстановить два класса, назначив каждую точку классу линии, ближайшей к ней. Что касается точек возле пересечения, вы столкнетесь с проблемами, но пока просто игнорируйте их (возможно, можно обойти это, но сейчас просто надейтесь, что это не сильно изменится).
Способ сделать это состоит в том, чтобы выбратьИксL а также Икср (значения рН почвы) с ИксL≤ хр так, что части, оставшиеся от ИксL достаточно разделены и части права Икср достаточно разделены (ближайшая точка, где распределения не перекрываются).
Тогда есть два естественных способа сделать это.
Менее забавный способ - просто запустить исходный набор данных в сочетании с выведенными метками классов через линейную регрессию, как в ответе Деметрия.
Более интересный способ сделать это - через модифицированную версию ANOVA. Задача состоит в том, чтобы создать искусственный набор данных, который представляет две линии (с одинаковым разбросом между ними), а затем применить ANOVA. Технически, вам нужно сделать это один раз для левой стороны и один раз для правой (то есть у вас будет два искусственных набора данных).
Мы начнем с левой стороны и применим простой метод усреднения, чтобы получить две группы. По сути, каждая точка в первом классе, скажем, имеет видY( я )1= β1 , 1Икс( я )1+ β1 , 0+ е( я )1
поэтому мы собираемся заменить линейное выражение
β1 , 1Икс( я )1+ β1 , 0
по константе, а именно среднее значение линейного члена или
β1 , 1Икспротив г+ β1 , 0
где Икспротив гL буквально в среднем Икс значение для левой стороны (важно, что это по обоим классам, так как это делает вещи более согласованными). То есть мы заменимY( я )1 с
Y~( я )1= β1 , 1Икспротив г+ β1 , 0+ е( я )1,
и мы аналогично для второго класса. То есть ваш новый набор данных состоит из коллекцииY~( я )1 и аналогично Y~( я )2 ,
Обратите внимание, что оба подхода естественным образом обобщаютN классы.
источник
Возможно ли, что включение обоих в один и тот же график является ошибкой? Учитывая, что сорта ведут себя совершенно по-разному, есть ли смысл перекрывать данные? Мне кажется, что вы ищете воздействие на вид нарциссов, а не воздействие похожих сред на разных нарциссов. Если вы потеряли данные, которые помогают определить вид «A» из вида «B», вы можете просто сгруппировать поведение «A» и поведение «B» и включить обнаружение двух видов в свое повествование. Или, если вы действительно хотите одну диаграмму, просто используйте два набора данных на одной оси. Я не имею ничего общего с опытом, который я вижу в других ответах, поэтому я должен найти менее «квалифицированные» методы. Я бы провел анализ данных в среде рабочего листа, где уравнения легче разработать. Затем, как только группировки станут очевидными, создайте две отдельные таблицы данных с последующим преобразованием их в диаграммы / графики. Я работаю с большим количеством данных и часто нахожу, что мои предположения о различных корреляциях оказываются неверными; это то, что данные должны помочь нам обнаружить. Как только я узнаю, что мои предположения неверны, я отображаю данные, основанные на обнаруженном поведении, и обсуждаю это поведение и полученный статистический анализ как часть повествования.
источник