dummyvar

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

Синтаксис

D = dummyvar(group)

Описание

пример

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 array
    {'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 соответствуют телефонным типам, и последние два столбца соответствуют кодам области.

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

свернуть все

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

Если 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. Для примера смотрите, Создают Фиктивные Переменные из Нескольких Группирующих переменных.

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

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