Логистическая регрессия без перехвата дает соответствующее предупреждающее сообщение
Я пытаюсь запустить логистическую регрессию без перехвата. Во-первых, я попробовал функцию glm
но я получил следующую ошибку:
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
Поскольку было невозможно изменить набор данных, учитывая характер моей работы, я решил использовать другой программный пакет на R, содержащий код bayesglm
,
Когда я использую эту функцию, включая перехват, я не получаю сообщение об ошибке, как указано выше. Однако, когда я исключаю перехват, добавляя -1
в конце моей функции я все еще получаю ту же ошибку выше со следующим выводом:
> regress=bayesglm(y~x1*x2+x3+x4-1, data = DATA, family=binomial(link="logit"))
> summary(regress)
Call:
bayesglm(formula = y ~ x1 * x2 + x3 + x4 - 1, family = binomial(link = "logit"),
data = DATA, maxit = 10000)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.01451 -0.43143 -0.22778 -0.05431 2.89066
Coefficients:
Estimate Std. Error z value Pr(>|z|)
x1 -20.45537 9.70594 -2.108 0.03507 *
x2 -7.04844 2.87415 -2.452 0.01419 *
x1:x2 0.13409 17.57010 0.008 0.99391
x3 -0.17779 0.06377 -2.788 0.00531 **
x4 -0.02593 0.05313 -0.488 0.62548
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 494.91 on 357 degrees of freedom
Residual deviance: 124.93 on 352 degrees of freedom
(165 observations deleted due to missingness)
AIC: 134.93
Number of Fisher Scoring iterations: 123
и получите ту же ошибку, что и ниже:
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
который я не получу, если не добавлю -1
удалить перехват.
Поэтому у меня есть два вопроса:
1. Могу ли я игнорировать это предупреждение?
2. В противном случае, я могу знать, как я могу решить проблему согласно этому предупреждению?
2 ответа
Я постараюсь дать ответ на вопрос.
Что означает предупреждение? Предупреждение дается, когда числовая точность может быть под вопросом для определенных наблюдений. Точнее, это дается в случае, когда подобранная модель возвращает вероятность 1 - эпсилон или эквивалентно 0 + эпсилон. Стандартно эта граница составляет 1-10^-8 и 10 ^ -8 соответственно (как указано в glm.control) для стандартной функции glm.fit.
Когда это может произойти? По моему опыту, случай, когда это происходит чаще всего, - это случай, когда включаются факторы (или фиктивные переменные), для которых только один результат наблюдается в одной категории. Чаще всего это происходит, когда взаимодействия включены в факторы многих уровней и ограничены данными для анализа. Аналогично, если имеется много переменных по сравнению с количеством наблюдений (считая используемые переменные, преобразования взаимодействий и т. Д. В качестве отдельных переменных, поэтому общее число будет суммой всех этих), будет возможно подобное изображение. В вашем случае, если у вас есть факторы, удаление перехвата добавит 1 уровень к каждому фактору, что может снизить точность около вероятности края 0 и 1. Короче говоря, если для какой-то части наших данных у нас нет (или мало) неопределенность, то это предупреждение даст нам указание.
Могу ли я игнорировать это иначе, как я могу это исправить? Это зависит от проблемы и масштаба проблемы. Некоторые источники, такие как Джон Фокс, вероятно, сочтут эти наблюдения возможными выбросами, и с хорошими аргументами предлагают удалить их после использования мер влияния (доступно в car
пакет для базы GLM) или выполнение некоторых выпадающих тестов (также доступны в car
пакет для базы GLM), если это вариант в вашей области работы. Если они показывают, что они не влияют на подбор, вы не удалите их, так как для этого не будет статистического аргумента.
Если удаление выброса не является вариантом в вашей области работы, тогда может помочь уменьшенная модель (в общем случае с меньшим количеством переменных), если это является причиной, или если число факторов является причиной, то объединение уровней в факторы может дать некоторые лучшие результаты.
Другие источники могут иметь и другие предложения, но Джон Фокс является заслуживающим доверия источником информации для этих типов моделей. Возникает вопрос: "Правильно ли указана моя модель?", "Насколько сильно это влияет на мою модель?" и "Сколько вам разрешено делать в своей работе?", следуя общей теории и руководящим принципам в статистике. Вероятности, близкие к 0 и 1, с меньшей вероятностью будут точными и более вероятными из-за числового впечатления, но если это не те случаи, которые вы, вероятно, можете предсказать, и нет существенного влияния на оставшуюся часть модели, это не обязательно является проблемой и может быть проигнорировано.
Правильный ответ на этот вопрос заключается в том, что перехват не должен быть удален в логистической регрессии. Исправление предупреждающего сообщения без исправления неправильной спецификации модели не является подходящей практикой.
В правильно выполненной логистической регрессии это сообщение об ошибке может отображаться, когда существует идеальное разделение (комбинации предикторов, которые полностью объясняют принадлежность к классу в имеющейся выборке данных), и существуют хорошо разработанные способы борьбы с этим явлением, как объяснено, например, на этой странице.
Однако неуместно удалять перехват в модели логистической регрессии. См. Эту страницу и подробное обсуждение в комментариях о повторной публикации этого вопроса на Cross Validated, в частности https://stats.stackexchange.com/questions/11109/how-to-deal-with-perfect-separation-in-logistic-regression, которая включает в себя множество предложений.