dummyvar

Создайте фиктивные переменные

Синтаксис

Описание

пример

D = dummyvar(group) возвращает матричный D содержа нули и единицы, столбцы которых являются фиктивными переменными для сгруппированных переменных в group. Каждый столбец group одна сгруппированная переменная, со значениями, указывающими на уровни категории. Строки group представляйте наблюдения через все переменные.

Примеры

свернуть все

Создайте вектор-столбец категориальных данных, задающих типы цвета.

Colors = {'Red';'Blue';'Green';'Red';'Green';'Blue'};
Colors = categorical(Colors);

Создайте фиктивные переменные для каждого типа цвета.

D = dummyvar(Colors)
D = 6×3

     0     0     1
     1     0     0
     0     1     0
     0     0     1
     0     1     0
     1     0     0

Столбцы в D соответствуйте уровням в Colors. Например, первый столбец dummyvar соответствует первому уровню, 'Blue', в Colors.

Отобразите уровни категории Colors.

categories(Colors)
ans = 3x1 cell
    {'Blue' }
    {'Green'}
    {'Red'  }

Создайте матричный group из данных, содержащих эффекты двух машин и трех операторов на процессе.

machine = [1 1 1 1 2 2 2 2]';
operator = [1 2 3 1 2 3 1 2]';
group = [machine operator]
group = 8×2

     1     1
     1     2
     1     3
     1     1
     2     2
     2     3
     2     1
     2     2

Создайте фиктивные переменные данных в group.

D = dummyvar(group)
D = 8×5

     1     0     1     0     0
     1     0     0     1     0
     1     0     0     0     1
     1     0     1     0     0
     0     1     0     1     0
     0     1     0     0     1
     0     1     1     0     0
     0     1     0     1     0

Первые два столбца D представляйте наблюдения за машиной 1 и машиной 2, соответственно. Остальные столбцы представляют наблюдения за этими тремя операторами.

Создайте массив ячеек телефонных типов и числовой вектор из кодов области.

phone = {'mobile';'landline';'mobile';'mobile';'mobile';'landline';'landline'};
codes = [802 802 603 603 802 603 802]';

Поскольку данные о коде области имеют два уровня (а не 802 уровня, соответствующие целым числам 1:802), преобразуйте codes к категориальному вектору.

newcodes = categorical(codes);

Объедините phone и newcodes сгруппированные переменные в массив ячеек group.

group = {phone,newcodes};

Создайте фиктивные переменные для групп в group.

D = dummyvar(group)
D = 7×4

     1     0     0     1
     0     1     0     1
     1     0     1     0
     1     0     1     0
     1     0     0     1
     0     1     1     0
     0     1     0     1

Первые два столбца D соответствуйте телефонным типам, и последние два столбца соответствуют кодам области.

Создайте фиктивные переменные, и затем декодируйте их назад в исходные данные.

Создайте вектор-столбец категориальных данных, задающих типы цвета.

colorsOriginal = ["red";"blue";"red";"green";"yellow";"blue"];
colorsOriginal = categorical(colorsOriginal)
colorsOriginal = 6x1 categorical
     red 
     blue 
     red 
     green 
     yellow 
     blue 

Определите классы в категориальном векторе.

classes = categories(colorsOriginal);

Создайте фиктивные переменные для каждого типа цвета при помощи dummyvar функция.

dummyColors = dummyvar(colorsOriginal)
dummyColors = 6×4

     0     0     1     0
     1     0     0     0
     0     0     1     0
     0     1     0     0
     0     0     0     1
     1     0     0     0

Декодируйте фиктивные переменные во втором измерении при помощи onehotdecode функция.

colorsDecoded = onehotdecode(dummyColors,classes,2)
colorsDecoded = 6x1 categorical
     red 
     blue 
     red 
     green 
     yellow 
     blue 

Декодируемые переменные совпадают с типами исходного цвета.

Входные параметры

свернуть все

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

Если group категориальный вектор, затем группы и их порядок совпадают с выходом categories функционируйте применился к group. Если group числовой вектор, затем dummyvar принимает, что группами и их порядком является 1:max(group). В этом отношении, dummyvar обрабатывает числовую сгруппированную переменную по-другому по сравнению с grp2idx. Для получения информации о порядке групп в сгруппированных переменных смотрите Сгруппированные переменные.

Пример: [2 1 1 1 2 3 3 2]'

Пример: {Origin,Cylinders}

Типы данных: single | double | categorical | cell

Выходные аргументы

свернуть все

Фиктивные переменные, возвращенные как n-by-s числовая матрица, где n является количеством строк group и s является суммой количества уровней в каждом столбце group. Слева направо, столбцы D фиктивные переменные, созданные из первого столбца group, сопровождаемый фиктивными переменными создается из второго столбца group, и так далее.

Типы данных: single | double

Советы

  • Используйте фиктивные переменные в регрессионном анализе и Дисперсионном Анализе, чтобы указать на значения категориальных предикторов.

  • dummyvar обработки NaN значения и неопределенные категориальные уровни в group как недостающие данные и возвращает NaN значения в D.

  • Если столбец из единиц введен в матричном D, затем получившийся матричный X = [ones(size(D,1),1) D] имеет неполный ранг. Если group имеет несколько столбцов, затем матричный D самостоятельно имеет неполный ранг, потому что фиктивные переменные произвели из любого столбца group всегда суммируйтесь к столбцу из единиц. Регрессия и вычисления Дисперсионного Анализа часто решают эту проблему путем устранения одной фиктивной переменной (неявно устанавливая коэффициенты для опущенных до нуля столбцов) из каждой группы фиктивных переменных, произведенных столбцом group.

  • Если group числовой вектор с уровнями, которые не соответствуют точно целым числам 1:max(group), сначала преобразуйте данные в категориальный вектор при помощи categorical. Можно затем передать результат dummyvar. Для примера смотрите, Создают Фиктивные Переменные из Нескольких Сгруппированных переменных.

Альтернативная функциональность

В качестве альтернативы используйте onehotencode закодировать метки данных. Рассмотреть использование onehotencode вместо dummyvar в этих случаях:

  • Закодировать таблицу меток категориальных данных

  • Задавать размерность, чтобы расшириться для кодирования меток данных

Расширенные возможности

Представлено до R2006a