Какой метод glmfit MATLAB использует для логистической регрессии?

Столкнулись с проблемой подбора биномиальной логистической регрессии, поскольку результаты кажутся подозрительными между языками. Потратив длительный период на изучение этого и поиск онлайн-предложений (на всякий случай также попробовал все варианты данных), я полагаю, что все сводится к тому, какую процедуру подбора MATLAB использует для glmfit (у меня есть подозрение, что это метод максимального правдоподобия Estimator, тогда как Python и R используют IRLS/IWLS.)

Сначала я запустил свою проблему в MATLAB, используя:

[b_lr,dev,stats] = glmfit(x',y','binomial','link','logit');

Где x' — массив из нескольких столбцов с предикторами и row length = y, а y — вектор ответа с двоичным результатом на основе критерия.

После этого расчета я перешел на использование python/R2py. Я попробовал одну и ту же процедуру как в Python, так и в R для подбора логит-связанного бинома, используя эквивалент glmfit из statsmodels, и получил другой набор коэффициентов для регрессии (обратите внимание, что положение вектора ответа изменяется для этих двух):

glm_logit = sm.GLM(yvec.T,Xmat,family = sm.families.Binomial()).fit()

и используя R2py:

%R glm.out = glm(Data ~ ONI + Percentiles, family=binomial(logit), data=df) 

Был бы признателен, если бы кто-нибудь мог пояснить, что использует MATLAB, и если бы у кого-нибудь были предложения о том, как воспроизвести результат MATLAB в python или R.


person aphex    schedule 08.10.2015    source источник


Ответы (2)


Поскольку это очень общий вопрос без каких-либо подробностей, вот частичный ответ, который также очень общий, основанный на моем сравнении R, Stata и statsmodels, у меня нет Matlab.

GLM — это модель максимального правдоподобия (или квазимаксимального правдоподобия). Оценки параметров должны быть независимыми от оптимизатора, будь то IRLS или что-то еще. Различия могут возникать из-за проблем с числовой точностью, разных критериев сходимости или разного подхода к нечетким задачам.

Во-первых, вам нужно проверить, что они на самом деле оценивают одну и ту же модель, сравнивая матрицу дизайна для разных пакетов. Двумя основными источниками являются то, включена ли константа по умолчанию или нет, и как кодируются категориальные переменные.

Во-вторых, убедитесь, что данные позволяют хорошо определить модель. Основные различия между пакетами заключаются в обработке единичных или почти единичных случаев, а также в том, как они обрабатывают идеальное разделение в случае Logit и подобных моделей.

В-третьих, возможно, это ошибка кодирования. Поскольку вы не приводите воспроизводимых примеров, это невозможно сказать.

person Josef    schedule 08.10.2015

Я столкнулся с похожими проблемами для подбора GLM на основе Пуассона: результирующие коэффициенты, данные Matlab и R, сильно различаются. После некоторого исследования я обнаружил, что существует тонкая разница в том, как строится матрица проектирования между Matlab и R. В регрессии GLM одна из категориальных переменных обычно берется в качестве «эталона» (чтобы обеспечить линейную независимость между объясняющими переменными). Я не уверен, это хороший вопрос). В то время как Matlab просто игнорирует ссылочную переменную, удаляя ее вхождение из матрицы проектирования (соответствующий столбец удаляется), R не только удаляет вхождения ссылочной переменной (удаляется столбец), но также устанавливает «-1» для всех других переменных в строках, где ссылочная переменная будет встречаться исключительно. Результатом является другой набор коэффициентов, но предсказанные ответы точно такие же. Имеет ли это смысл?

Единственный способ заставить Matlab и R вернуть один и тот же ответ — составить матрицу проектирования вручную для Matlab. Надеюсь, это поможет.

person Flávio    schedule 09.09.2016