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

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

свернуть все

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

Если 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