Если у меня есть переменная с 4 уровнями, теоретически мне нужно использовать 3 фиктивные переменные. На практике, как это на самом деле осуществляется? Я использую 0-3, я использую 1-3 и оставляю 4 пустыми? Какие-либо предложения?
ПРИМЕЧАНИЕ: я собираюсь работать в R.
ОБНОВЛЕНИЕ: Что случилось бы, если бы я только использовал один столбец, который использует 1-4, соответствующий AD? Это сработает или создаст проблемы?
r
regression
categorical-data
categorical-encoding
screechOwl
источник
источник
Ответы:
На практике каждый обычно позволяет выбранному программному обеспечению обрабатывать фиктивные переменные и управлять ими. Есть несколько способов, которыми это может быть обработано; Вот несколько общих возможностей для набора данных с четырьмя наблюдениями, по одному на каждом уровне A, B, C и D. Это разные параметризации; они приводят к точно такой же подгонке модели, но с различной интерпретацией параметров. Можно легко конвертировать из одного в другой, используя базовую алгебру; обратите внимание, что все они являются линейными комбинациями друг друга; фактически может использоваться любая линейная комбинация.
Используйте отличия от первого уровня (по умолчанию в R):
Используйте отличия от последнего уровня (по умолчанию в SAS):
Используйте контрасты «сумма»:
Используйте контрасты "helmert":
источник
Предположим, ваши уровни переменных A, B, C и D. Если у вас есть постоянный член в регрессии, вам нужно использовать три фиктивные переменные, в противном случае вам нужно иметь все четыре.
Существует много математически эквивалентных способов реализации фиктивных переменных. Если у вас есть постоянный член в регрессии, один из способов - выбрать один из уровней в качестве «базового» уровня и сравнить остальные три с ним. Скажем для конкретности, что базовый уровень равен A. Тогда ваша первая фиктивная переменная принимает значение 1, когда уровень равен B, и 0 в противном случае; вторая принимает значение 1, когда уровень равен C, и 0 в противном случае, а третья принимает значение 1, когда уровень равен D, и 0 в противном случае. Поскольку ваш постоянный член все время равен 1, оценочный коэффициент первой фиктивной переменной будет оценкой разницы между уровнем B и A, и аналогично для других фиктивных переменных.
Если у вас нет постоянного члена, вы можете просто использовать четыре фиктивные переменные, сконструированные как в предыдущем примере, просто добавив одну для уровня A.
источник
В R определите переменную как фактор, и он будет реализовывать ее для вас:
который возвращается
Документация для 'lm', 'factor' и 'формула' в R заполняет некоторые детали.
источник
lm(y ~ as.factor(x))
Уабер сказал вам в комментариях, что кодирование 0-3 или 1-4 вместо создания фиктивных переменных - это не то, что вам нужно. Это попытка - я надеюсь объяснить, что вы будете делать с этой моделью и почему это неправильно.
Если вы закодируете переменную X так, что если A, то X = 1, если B, то X = 2, если C, то X = 3, если D, то X = 4, тогда, когда вы выполните регрессию, вы получите только один параметр. Допустим, в итоге оказалось, что предполагаемый параметр, связанный с X, равен 2. Это говорит о том, что ожидаемая разница между средним значением B и средним значением A равна 2. Это также говорит о том, что ожидаемая разница между средним значением C и среднее значение B равно 2. Некоторые для D и C. Вы бы заставили различия в средствах для этих групп следовать этой очень строгой схеме. Этот один параметр говорит вам точно, как все средства вашей группы связаны друг с другом.
Поэтому, если вы выполняете этот вид кодирования, вам нужно будет предположить, что вы не только правильно поняли порядок (потому что в этом случае, если вы ожидаете увеличения от A до B, вам нужно ожидать увеличения от B до C и от C на D) но вы также должны предположить, что эта разница та же!
Если вместо этого вы делаете фиктивное кодирование, которое было предложено, вы позволяете каждой группе иметь свое собственное значение - никаких ограничений. Эта модель гораздо разумнее и отвечает на вопросы, которые вы хотите.
источник