Как оценить прогностическую силу множества категориальных предикторов бинарного исхода? Рассчитать вероятности или логистическую регрессию?


10

Я пытаюсь определить, будут ли простые вероятности работать для моей проблемы или будет лучше использовать (и узнать о) более сложные методы, такие как логистическая регрессия.

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


Если у вас есть более одного предиктора, это может быть сложно сделать без какой-либо регрессионной модели. Что у тебя было на уме? Просто большая мерная таблица совпадений ( - количество предикторов)? кkk
Макро

Сгруппированы ли категории предикторов в более чем один фактор, и если да, то они пересечены или вложены? Кроме того, вы заинтересованы только в том, чтобы сделать описательное заявление? Если ваши данные являются сложными, модель LR может быть более удобной, и если вы хотите сделать выводы, LR, безусловно, является более предпочтительным, я думаю.
gung - Восстановить Монику

@Macro - Да, я думал, что по сути это будет большая таблица, в которой один столбец показывает количество точек выборки, соответствующих сценарию, а другой столбец показывает соотношение единиц. У меня есть пять категориальных предикторов, каждый с 10-30 возможными значениями, поэтому я знаю, что список сценариев будет большим. Я думал написать скрипт в R, который проходит через каждый и выдает значимые результаты (высокая доля 1 плюс большое количество точек выборки в сценарии).
Рейчел

@ Gung - Факторы только частично пересеклись. Ни один из факторов не будет считаться вложенным. Я заинтересован в том, чтобы найти комбинации факторов (например, государство, клиент, сотрудник), которые, вероятно, будут иметь высокую вероятность того, что переменная ответа будет равна 1.
Рэйчел

1
@EmreA - К сожалению, категориальные переменные не являются полностью независимыми. Некоторые комбинации будут более вероятными, чем другие ...
Рэйчел

Ответы:


11

Логистическая регрессия, вплоть до неточности, даст точно такие же соответствия, как и в табличных процентах. Следовательно, если ваши независимые переменные являются факторными объектами factor1и т. Д., А зависимые результаты (0 и 1) есть x, то вы можете получить эффекты с помощью выражения, подобного

aggregate(x, list(factor1, <etc>), FUN=mean)

Сравните это с

glm(x ~ factor1 * <etc>, family=binomial(link="logit"))

В качестве примера давайте сгенерируем случайные данные:

set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))

Резюме получается с

aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results

Его выход включает в себя

   Group.1 Group.2 Group.3         x
1        0       0       0 0.5128205
2        1       0       0 0.4210526
3        0       1       0 0.5454545
4        1       1       0 0.6071429
5        0       2       0 0.4736842
6        1       2       0 0.5000000
...
24       1       2       3 0.5227273

Для дальнейшего использования оценка для факторов на уровнях (1,2,0) в строке 6 выходных данных составляет 0,5.

Логистическая регрессия отдает свои коэффициенты следующим образом:

model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients

Для их использования нам понадобится логистическая функция:

logistic <- function(x) 1 / (1 + exp(-x))

Чтобы получить, например, оценку факторов на уровнях (1,2,0), вычислите

logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])

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

(Intercept) 
        0.5

согласен с результатами aggregate. (Заголовок «(Перехват)» в выходных данных является остатком входных данных и фактически не имеет смысла для этого вычисления.)


Та же информация в еще одной форме появляется в выводеtable . Например, (длинный) вывод

table(x, factor1, factor2, factor3)

включает в себя эту панель:

, , factor2 = 2, factor3 = 0

   factor1
x    0  1
  0 20 21
  1 18 21

Столбец для factor1= 1 соответствует трем факторам на уровнях (1,2,0) и показывает, что из значений, равных , в соответствии с тем, что мы считали из и .21/(21+21)=0.5x1aggregateglm


Наконец, комбинация факторов, обеспечивающих наибольшую долю в наборе данных , удобно получить из следующих результатов aggregate:

> aggregate.results[which.max(aggregate.results$x),]
  Group.1 Group.2 Group.3         x
4       1       1       0 0.6071429

1
Это много информации, и у меня уйдет некоторое время на то, чтобы я ее переварил, но я рад слышать, что табулированные проценты и логистические регрессии, по сути, дадут мне те же результаты. Я запустил агрегатную функцию для двух предикторов, и она сразу же завершилась ... результаты для логистической подборки выполнялись в течение нескольких минут и еще не завершены. Я продолжу подправлять вещи, но я могу в конечном итоге просто использовать табличные проценты. Спасибо!
Рейчел

(+1), За кулисами интересно, могут ли стандартные ошибки в этом контексте из-за логистической регрессии быть включены в графические краткие описания мозаики, которые я предложил. Я также подозреваю, что это может быть хорошим способом быстро «отфильтровать» результаты для интересных взаимодействий (это всего лишь мои размышления!)
Энди В.

«Логистическая регрессия, вплоть до неточности чисел, даст точно такое же совпадение, что и в табличных процентах»: разве она не приводит таблицы в процентах для каждой конфигурации предикторов? В этом случае логистическая регрессия не может закодировать все возможные отношения.
Нил Дж

@Neil Конечно, он может закодировать все «отношения» (комбинации факторов): использовать все возможные взаимодействия. Смотрите код R для примера. Когда факторов много, на практике будет много пустых комбинаций, но приличное программное обеспечение не будет иметь проблем с этим. Даже лучшее программное обеспечение будет обрабатывать комбинации без изменений в ответах.
whuber

@ Энди, мне нравится твой ответ о графике - нам нужно найти способ создать тему, где это будет правильный ответ! Возможно, ваша мысль о включении оценок ошибок в графики мозаики могла бы стать способом приблизиться к ним: как бы вы представили логистические оценки, фактические данные и / или ошибку в них одновременно?
whuber

6

Для быстрого взгляда на соотношение бинарных ответов в каждой категории и / или в зависимости от нескольких категорий могут пригодиться графические графики. В частности, чтобы одновременно визуализировать пропорции, обусловленные многими категориальными независимыми переменными, я бы предложил Мозаичные Графики .

Ниже приведен пример, взятый из поста в блоге, Понимание графиков на основе областей: мозаичные графики из Статистической графики и другие блоги. Этот пример визуализирует долю выживших на «Титанике» синим цветом, в зависимости от класса пассажира. Можно одновременно оценивать долю выживших, в то же время оценивая общее количество пассажиров в каждой из подгрупп (точная информация наверняка, особенно когда некоторые подгруппы малочисленны и мы ожидаем большего случайного отклонения).

Мозаичный сюжет Титаника
(источник: theusrus.de )

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

Мозаика условная по третьей переменной
(источник: theusrus.de )

Удивительно, сколько информации отображается, это пропорции в четырех измерениях (класс, взрослый / ребенок, пол и доля выживших)!

Я согласен, если вы заинтересованы в предсказании или более причинном объяснении в целом, вы захотите обратиться к более формальному моделированию. Графические графики могут быть очень быстрыми визуальными подсказками относительно природы данных, и могут предоставить другие идеи, которые часто упускаются при простой оценке регрессионных моделей (особенно при рассмотрении взаимодействий между различными категориальными переменными).


+1, это то, что я пытался сделать в своем комментарии выше относительно того, была ли цель простым описанием или выводом. Nb, что дело яснее и лучше сделано с цифрами!
gung - Восстановить Монику

@ Gung спасибо, что означает Nb? Я всегда говорю лучше с цифрами!
Энди W

2
Не что-либо связанное со статистикой, «nb» означает nota bene , что, в свою очередь, на латыни означает «хорошо заметить» (в буквальном смысле) или «отметить, что» / (уведомление) (более разговорно).
gung - Восстановить Монику

3

В зависимости от ваших потребностей, вы можете обнаружить, что рекурсивное разделение обеспечивает простой для интерпретации метод прогнозирования выходной переменной. Для R внедрения этих методов, см Quick-R модели дерева на основе страница. Я в целом одобряю ctree()реализацию в пакете R для party, так как не нужно беспокоиться об обрезке, и по умолчанию он создает симпатичную графику.

Это подпадает под категорию алгоритмов выбора признаков, предложенных в предыдущем ответе, и обычно дает такие же хорошие, если не лучшие прогнозы, как логистическая регрессия.


2

Учитывая ваши пять категориальных предикторов, скажем, по 20 результатов каждый, тогда для решения с различным прогнозом для каждой конфигурации предикторов требуется параметров. Каждый из этих параметров требует много обучающих примеров для того, чтобы быть хорошо изученным. У вас есть как минимум десять миллионов обучающих примеров, разбросанных по всем конфигурациям? Если так, продолжайте и сделайте это таким образом.205

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

Если вы считаете, что ваши предикторы независимы друг от друга, то логистическая регрессия - это уникальный алгоритм, который делает правильные вещи. (Даже если они не независимы, это все равно может быть довольно хорошо.)

Таким образом, логистическая регрессия делает предположение о независимом влиянии предикторов, что уменьшает количество параметров модели и дает модель, которую легко изучить.


1

Вы должны посмотреть на алгоритмы выбора функций. Одним из подходящих для вашего случая (бинарная классификация, категориальные переменные) является метод «минимальная избыточность, максимальная релевантность» (mRMR). Вы можете быстро попробовать это онлайн на http://penglab.janelia.org/proj/mRMR/


Можно ли запустить эту программу с несколькими категориальными предикторами? На странице загрузки это выглядит так, будто только первый столбец может быть «классом» данных ... Возможно, я не понимаю, как данные должны быть отформатированы.
Рейчел

Или «класс» должен быть выходной переменной, в данном случае 0 или 1? Если да, то важно ли превращать категориальные переменные в фиктивные переменные, чтобы показать показатели для каждой из них?
Рейчел

Вы можете иметь столько предикторов, сколько захотите. В первой строке вашего файла данных должны быть имена объектов, а в первом столбце - классы (переменная ответа) для образцов. Итак, пример: response,predictor1,predictor2,predictor3 <line break here> 1,5,4,3 <line break here> 0,5,3,-1 <line break here> 1,1,2,3
Emrea

1

Я работаю в области кредитного скоринга, где то, что здесь представляется странным случаем, является нормой.

Мы используем логистическую регрессию и преобразуем как категориальные, так и непрерывные переменные в вес доказательств (WOE), которые затем используются в качестве предикторов в регрессии. Много времени тратится на группировку категориальных переменных и дискретизацию (разбивку / классификацию) непрерывных переменных.

Вес доказательств является простой расчет. Это журнал шансов для класса, за вычетом журнала шансов для населения:
WOE = ln (Хорошо (Класс) / Плохо (Класс)) - ln (Хорошо (ВСЕ) / Плохо (ВСЕ)) Это стандартная методология преобразования почти для всех моделей кредитного скоринга, построенных с использованием логистической регрессии. Вы можете использовать те же числа в кусочном подходе.

Прелесть этого в том, что вы всегда будете знать, имеют ли смысл коэффициенты, назначаемые каждому WOE. Отрицательные коэффициенты противоречат закономерностям в данных и обычно являются результатом мультиколлинеарности; а коэффициенты выше 1,0 указывают на сверхкомпенсацию. Большинство коэффициентов получится где-то между нулем и единицей.


Спасибо за интересный и информативный пост. Я не могу понять, как он отвечает на вопрос в этой теме, хотя. Что за «странный случай», на который вы ссылаетесь? Возможно, вы намеревались использовать это, чтобы ответить на другой вопрос в другом месте?
whuber
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.