Логистическая регрессия без перехвата дает соответствующее предупреждающее сообщение

Я пытаюсь запустить логистическую регрессию без перехвата. Во-первых, я попробовал функцию 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, которая включает в себя множество предложений.

Другие вопросы по тегам