2016-06-27 3 views
0

У меня есть простая модель GLM выглядит как:предсказывали вероятность использования логистической регрессии в R равен 1

glm.fit=glm(Retention2~Email+Pay.method, data=train, family = binomial) 

Все DV и капельницы являются категориальными переменными с двумя уровнями.

Исход glm является:

enter image description here

, когда я вычислил вероятность основывается, значение вероятности 1.000, когда Pay.Method равно 0. Синтаксис и выход приведен ниже:

glm.fit.prob=predict(glm.fit, newdata = test2, type="response") 

enter image description here

кажется, что всякий раз, когда pay.method ="EZ PAY", вероятность будет равна 0. Я думаю, математически причина в том, что coeff электронной почты настолько меньше, чем перехват и Pay.method. Интересно, правильно ли я понимаю, и если да, то какое представление о том, как обойти это?

+0

спасибо! это дало мне лучшую форму, хотя и не так хорошо, как использование LDA. – YLS

ответ

0

Корпус называется четким разделительным корпусом. Посмотрите на свои данные, когда у вас есть pay.method ="EZ PAY", либо почти наблюдение может быть нулевым, либо почти все будут равными 1. Таким образом, вам не нужна модель для прогнозирования, потому что вы можете сказать, будет ли результат 0 или 1 без модели (теперь, если его подлинный случай или из-за отсутствия данных - другой вопрос). Лучше удалить эти случаи из учебных данных, а затем подготовить модель (в вашем случае удалите все наблюдения с помощью pay.method ="EZ PAY").

Теперь почему это поведение. Оценка максимального правдоподобия по логистической регрессии не очень хороша, чтобы иметь дело с четким разделением; для хорошего охвата см. статистическую учебную книгу Хасти Тиббирани. Они также рекомендуют использовать дискриминантный анализ, так как лучше справляться с такими случаями.

+0

Спасибо за ввод. я попробовал LDA, что дает гораздо лучшие предсказанные вероятности и общую точность прогноза (72%). Тем не менее, я чувствую, что есть недостаток использования LDA, что я не смогу получить CI задней вероятности, как если бы я использовал glm. Для glm, если я включаю type = "link" и se = TRUE, тогда я могу вычислить CI для прогнозируемой вероятности. Как я могу обойти это? Благодаря! – YLS

+0

еще один вопрос, когда вы говорите, что отбрасываете случаи, когда pay.method = EZ PAY, это то же самое, что и EMAIL в качестве предиктора. Поскольку в pay.method есть только два уровня, я не вижу включения этой переменной после удаления всех случаев с одним уровнем? – YLS

+0

Если это ваши «полные» данные, тогда да. Если нет, то ищите больше данных. проблема четкого разделения становится менее вероятной, когда у вас больше данных. Логично только потому, что кто-то, использующий EZEEPAY, не будет вызывать никакого истощения, является нелогичным. Там будет определенно такой человек. Просто так, что ваши данные не захватывают его/ее. – abhiieor

Смежные вопросы