Фиттинг бинормального распределения в R - PullRequest
1 голос
/ 24 июня 2010

Как и в заголовке, у меня есть некоторые данные, которые примерно бинормально распределены, и я хотел бы найти два его базовых компонента.* 1 и m 2 и стандартные отклонения s 1 и s 2 .Два гауссиана масштабируются таким весовым коэффициентом, что w 1 + w 2 = 1

Я могу добиться этого, используя функцию vglmVGAM пакет, такой как:

    fitRes <- vglm(mydata ~ 1, mix2normal1(equalsd=FALSE), 
          iphi=w, imu=m1, imu2=m2, isd1=s1, isd2=s2))

Это мучительно медленно и может занять несколько минут в зависимости от данных, но я могу с этим смириться.

Теперь я хотел бы увидетькак распределение моих данных меняется со временем, поэтому я разбиваю свои данные на несколько (30-50) блоков и повторяю процесс подбора для каждого из них.

Итак, вот вопросы:

1) как ускорить процесс подгонки?Я пытался использовать nls или mle, которые выглядят намного быстрее, но в большинстве случаев не смогли получить хорошую посадку (но мне удалось получить все возможные ошибки, которые эта функция могла вызвать у меня).Также мне не ясно, как наложить ограничения с этими функциями (w в [0; 1] и w 1 + w 2 = 1)

2)как мне автоматически выбрать несколько хороших начальных параметров (я знаю, что это вопрос на 1 миллион долларов, но вы никогда не узнаете, может быть, у кого-то есть ответ)?Прямо сейчас у меня есть небольшой интерфейс, который позволяет мне выбирать параметры и визуально видеть, как будет выглядеть первоначальный дистрибутив, что очень здорово, но я бы хотел сделать это автоматически для этой задачи.

Я думал ополагаясь на x, соответствующий 3-му и 4-му квартилям y, в качестве начальных параметров для двух средних значений?Вы считаете, что это было бы разумно?

1 Ответ

2 голосов
/ 24 июня 2010

Перво-наперво:

Было проведено много исследований моделей смесей, поэтому вы можете что-то найти.

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