Эта тема обеспечивает введение в фиктивные переменные, описывает, как программное обеспечение создает их для классификации и проблем регрессии, и показывает, как можно создать фиктивные переменные при помощи dummyvar
функция.
Когда вы выполняете классификацию и регрессионный анализ, часто необходимо включать и непрерывные (количественные) и категориальные (качественные) переменные предикторы. Категориальная переменная не должна быть включена как числовой массив. Числовые массивы имеют и порядок и величину. Категориальная переменная может иметь порядок (например, порядковая переменная), но это не имеет величины. Используя числовой массив подразумевает известное “расстояние” между категориями. Соответствующий способ включать категориальные предикторы как фиктивные переменные. Чтобы задать фиктивные переменные, используйте переменные индикатора, которые имеют значения 0 и 1.
Программное обеспечение выбирает одну из четырех схем задать фиктивные переменные на основе типа анализа, как описано в следующих разделах. Например, предположите, что у вас есть категориальная переменная с тремя категориями: Cool
, Cooler
, и Coolest
.
Представляйте категориальную переменную тремя категориями с помощью трех фиктивных переменных, одной переменной для каждой категории.
X 0 является фиктивной переменной, которая имеет значение 1 для Cool
, и 0 в противном случае. X 1 является фиктивной переменной, которая имеет значение 1 для Cooler
, и 0 в противном случае. X 2 является фиктивной переменной, которая имеет значение 1 для Coolest
, и 0 в противном случае.
Представляйте категориальную переменную тремя категориями с помощью двух фиктивных переменных со ссылочной группой.
Можно отличить Cool
, Cooler
, и Coolest
использование только X 1 и X 2, без X 0. Наблюдения для Cool
имейте 0s для обеих фиктивных переменных. Категорией, представленной всем 0s, является reference group.
Примите, что математическим упорядоченным расположением категорий является Cool
<Cooler
<Coolest
. Эта схема кодирования использует 1 и –1 значение и использует больше 1 с для более высоких категорий, чтобы указать на упорядоченное расположение.
X 1 является фиктивной переменной, которая имеет значение 1 для Cooler
и Coolest
, и –1 для Cool
. X 2 является фиктивной переменной, которая имеет значение 1 для Coolest
, и –1 в противном случае.
Можно указать, что категориальная переменная имеет математическое упорядоченное расположение при помощи 'Ordinal'
аргумент пары "имя-значение" categorical
функция.
Эффекты, кодирующие, используют 1, 0, и –1, чтобы создать фиктивные переменные. Вместо того, чтобы использовать 0 значений, чтобы представлять ссылочную группу, как в Фиктивных Переменных с Reference Group, эффекты, кодирующие использование –1, чтобы представлять последнюю категорию.
Statistics and Machine Learning Toolbox™ предлагает несколько классификаций и функций подбора кривой регрессии, которые принимают категориальные предикторы. Некоторые подходящие функции создают фиктивные переменные, чтобы обработать категориальные предикторы.
Следующее является поведением по умолчанию подходящих функций в идентификации категориальных предикторов.
Если данные о предикторе находятся в таблице, функции принимают, что переменная является категориальной, если это - логический вектор, категориальный вектор, символьный массив, массив строк или массив ячеек из символьных векторов. Подходящие функции, которые используют деревья решений, принимают упорядоченные категориальные векторы, чтобы быть непрерывными переменными.
Если данные о предикторе являются матрицей, функции принимают, что все предикторы непрерывны.
Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их при помощи 'CategoricalPredictors'
или 'CategoricalVars'
аргумент пары "имя-значение".
Подходящие функции обрабатывают идентифицированные категориальные предикторы можно следующим образом:
fitckernel
, fitclinear
, fitcsvm
, fitrgp
, fitrkernel
, fitrlinear
, и fitrsvm
используйте две различных схемы создать фиктивные переменные, в зависимости от того, не упорядочена ли категориальная переменная или упорядочена.
Для неупорядоченной категориальной переменной функции используют Полные Фиктивные Переменные.
Для упорядоченной категориальной переменной функции используют Фиктивные Переменные для Упорядоченной Категориальной Переменной.
Параметрический подбор кривой регрессии функционирует такой как fitlm
и fitglm
используйте Фиктивные Переменные с Reference Group. Когда функции включают фиктивные переменные, предполагаемые коэффициенты фиктивных переменных относительно ссылочной группы. Для примера смотрите Линейную регрессию с Категориальным Предиктором.
fitlme
, fitlmematrix
и fitglme
позвольте вам задавать схему создания фиктивных переменных при помощи 'DummyVarCoding'
аргумент пары "имя-значение". Функции поддерживают три схемы: Полные Фиктивные Переменные ('DummyVarCoding','full'
), фиктивные переменные со ссылочной группой ('DummyVarCoding','reference'
), и фиктивные переменные, созданные с кодированием эффектов ('DummyVarCoding','effects'
). Обратите внимание на то, что эти функции не предлагают аргумент пары "имя-значение" для определения категориальных переменных.
fitrm
Фиктивные Переменные использования, Созданные с Кодированием Эффектов.
Другие подходящие функции, которые принимают категориальные предикторы, используют алгоритмы, которые могут обработать категориальные предикторы, не создавая фиктивные переменные.
В этом примере показано, как создать вашу собственную фиктивную матрицу проекта переменной при помощи dummyvar
функция. Эта функция принимает сгруппированные переменные и возвращает матрицу, содержащую нули и единицы, столбцы которых являются фиктивными переменными для сгруппированных переменных.
Создайте вектор-столбец пола определения категориальных данных.
gender = categorical({'Male';'Female';'Female';'Male';'Female'});
Создайте фиктивные переменные для gender
.
dv = dummyvar(gender)
dv = 5×2
0 1
1 0
1 0
0 1
1 0
dv
имеет пять строк, соответствующих количеству строк в gender
и два столбца для уникальных групп, Female
и Male
. Порядок следования столбцов соответствует порядку уровней в gender
. Для категориальных массивов порядок по умолчанию возрастает алфавитный. Можно проверять порядок при помощи categories
функция.
categories(gender)
ans = 2x1 cell
{'Female'}
{'Male' }
Чтобы использовать фиктивные переменные в модели регрессии, необходимо или удалить столбец (чтобы создать ссылочную группу) или подбирать модель регрессии без термина прерывания. Для гендерного примера вам нужна только одна фиктивная переменная, чтобы представлять два пола. Заметьте то, что происходит, если вы добавляете термин прерывания в полную матрицу проекта dv
.
X = [ones(5,1) dv]
X = 5×3
1 0 1
1 1 0
1 1 0
1 0 1
1 1 0
rank(X)
ans = 2
Матрица проекта с термином прерывания не имеет полного ранга и не является обратимой. Из-за этой линейной зависимости используйте только c – 1 переменная индикатора, чтобы представлять категориальную переменную c категориями в модели регрессии с термином прерывания.