Зачем нам отбрасывать одну фиктивную переменную?

16

Я узнал, что для создания регрессионной модели мы должны позаботиться о категориальных переменных, преобразовав их в фиктивные переменные. Например, если в нашем наборе данных есть переменная типа location:

Location 
----------
Californian
NY
Florida

Мы должны конвертировать их как:

1  0  0
0  1  0
0  0  1

Однако было предложено отказаться от одной фиктивной переменной, независимо от того, сколько фиктивных переменных там.

Зачем нам отбрасывать одну фиктивную переменную?

Митхун Саркер Шувро
источник
3
Потому что третий манекен можно объяснить как линейную комбинацию первых двух: FL = 1 - (CA + NY).
chainD
@chainD, но как объяснить более трех фиктивных переменных?
Митхун Саркер Шувро
2
Независимо от суммы, она будет на 1 меньше, чем общее количество категорий, которые у вас есть. Продолжая свой пример, скажем, что все 50 штатов были представлены в наборе данных. Для данного человека, скажем, вы смотрите на первые 49 манекенов, которые, как оказалось, все нули, а затем вы знаете, что последний манекен равен 1, даже не глядя (при условии, что все в наборе данных из одного из 50 состояний). Другими словами, информация о последнем манекене уже содержится, так сказать, в результате первых 49.
chainD
@chainD спасибо
Митхун Саркер Шувро
1
если не весна, не лето и не осень, то зима!
Стев

Ответы:

10

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

Это уже обсуждалось в этом очень хорошем ответе stats.stackexchange .

Мне сказали, что в Coursera есть продвинутый курс от Яндекса, который более подробно освещает эту тему, если у вас все еще есть сомнения, см. Здесь . Обратите внимание, что вы всегда можете бесплатно проверить содержание курса. ;-)

Еще один хороший пост, если вы хотите подробное объяснение с множеством примеров со статистической точки зрения и не ограничиваясь только фиктивным кодированием, посмотрите это из UCLA (в R)

Обратите внимание, что если вы используете pandas.get_dummies, есть параметр, т. drop_firstЕ. Чтобы получить k-1 манекенов из k категориальных уровней, удалив первый уровень. Пожалуйста default = False, обратите внимание , это означает, что ссылка не отбрасывается и k манекенов создано из k категориальных уровней!

TwinPenguins
источник
4
Обратите внимание, что это верно только в том случае, если ваша модель имеет перехват (т. Е. Постоянный член). В противном случае, используя горячее кодирование и не отбрасывая одну фиктивную переменную, вы неявно добавляете перехват.
Элиас Стреле,
1

Вам не нужно снижать уровень, в зависимости от вашего варианта использования.

См.
В каких случаях мы не должны опускать первый уровень категориальных переменных?
и гораздо более общий вопрос
В контролируемом обучении, почему плохо иметь взаимосвязанные функции?

Бен Рейнигер
источник