В этом разделе приводится введение в фиктивные переменные, описывается, как программное обеспечение создает их для проблем классификации и регрессии, а также показано, как можно создавать фиктивные переменные с помощью dummyvar функция.
При выполнении классификационного и регрессионного анализа часто необходимо включать как непрерывные (количественные), так и категориальные (качественные) предикторные переменные. Категориальная переменная не должна входить в числовой массив. Числовые массивы имеют как порядок, так и величину. Категориальная переменная может иметь порядок (например, порядковая переменная), но не имеет величины. Использование числового массива подразумевает известное «расстояние» между категориями. Подходящий способ включения категориальных предикторов - это фиктивные переменные. Для определения фиктивных переменных используйте переменные индикатора, имеющие значения 0 и 1.
Программа выбирает одну из четырех схем для определения фиктивных переменных на основе типа анализа, как описано в следующих разделах. Например, предположим, что у вас есть категориальная переменная с тремя категориями: Cool, Cooler, и Coolest.
Представление категориальной переменной с тремя категориями с использованием трех фиктивных переменных, по одной переменной для каждой категории.

X0 является фиктивной переменной, которая имеет значение 1 для Cool, и 0 в противном случае. X1 является фиктивной переменной, которая имеет значение 1 для Cooler, и 0 в противном случае. X2 является фиктивной переменной, которая имеет значение 1 для Coolest, и 0 в противном случае.
Представление категориальной переменной с тремя категориями с использованием двух фиктивных переменных со ссылочной группой.

Можно различить Cool, Cooler, и Coolest используя только X1 и X2, без X0. Наблюдения за Cool имеют 0 для обеих фиктивных переменных. Категория, представленная всеми 0, является ссылочной группой.
Предположим, что математический порядок категорий равен Cool < Cooler < Coolest. Эта схема кодирования использует значения 1 и -1 и использует больше 1 для более высоких категорий, чтобы указать порядок.

X1 является фиктивной переменной, которая имеет значение 1 для Cooler и Coolest, и -1 для Cool. X2 является фиктивной переменной, которая имеет значение 1 для Coolest, и -1 в противном случае.
Можно указать, что категориальная переменная имеет математический порядок, используя 'Ordinal' аргумент пары имя-значение categorical функция.
Кодирование эффектов использует 1, 0 и -1 для создания фиктивных переменных. Вместо использования значений 0 для представления ссылочной группы, как в разделе Фиктивные переменные с ссылочной группой, кодирование эффектов использует -1 для представления последней категории.

Statistics and Machine Learning Toolbox™ предлагает несколько функций классификации и регрессии, которые принимают категориальные предикторы. Некоторые функции подгонки создают фиктивные переменные для обработки категориальных предикторов.
Ниже приведено поведение аппроксимирующих функций по умолчанию при определении категориальных предикторов.
Если данные предиктора находятся в таблице, функции предполагают, что переменная категорична, если она является логическим вектором, категориальным вектором, символьным массивом, строковым массивом или массивом ячеек символьных векторов. Аппроксимирующие функции, использующие деревья решений, предполагают, что упорядоченные категориальные векторы являются непрерывными переменными.
Если данные предиктора являются матрицей, функции предполагают, что все предикторы непрерывны.
Чтобы определить любые другие предикторы как категориальные предикторы, укажите их с помощью 'CategoricalPredictors' или 'CategoricalVars' аргумент пары имя-значение.
Функции подгонки обрабатывают идентифицированные категориальные предикторы следующим образом:
fitckernel, fitclinear, fitcnet, fitcsvm, fitrgp, fitrkernel, fitrlinear, fitrnet, и fitrsvm используйте две различные схемы для создания фиктивных переменных в зависимости от того, является ли категориальная переменная неупорядоченной или упорядоченной.
Для неупорядоченной категориальной переменной функции используют Full Dummy Variables.
Для упорядоченной категориальной переменной функции используют фиктивные переменные для упорядоченной категориальной переменной.
Функции параметрического регрессионного фитинга, такие как fitlm, fitglm, и fitcox использовать фиктивные переменные с ссылочной группой. Когда функции включают фиктивные переменные, оценочные коэффициенты фиктивных переменных относятся к ссылочной группе. Пример см. в разделе Линейная регрессия с категориальным предиктором.
fitlme, fitlmematrix и fitglme позволяет указать схему создания фиктивных переменных с помощью 'DummyVarCoding' аргумент пары имя-значение. Функции поддерживают три схемы: Full Dummy Variables (Full Dummy Variab'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 в регрессионной модели с термином пересечения.