exponenta event banner

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

Совет

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

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

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

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

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

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