nominal
и ordinal
типы данных массива не рекомендуются. Чтобы представлять упорядоченный и неупорядоченные дискретные, нечисловые данные, используйте Категориальные массивы (MATLAB) тип данных вместо этого.
В этом примере показано, как переупорядочить уровни категории в порядковом массиве с помощью reorderlevels
.
Загрузка демонстрационных данных.
AllSizes = {'medium','large','small','small','medium',... 'large','medium','small'};
Созданная переменная, AllSizes
, массив ячеек из символьных векторов, содержащий измерения размера на восьми объектах.
Создайте порядковый массив.
Преобразуйте AllSizes
к порядковому массиву, не задавая порядок уровней категории.
size = ordinal(AllSizes); getlevels(size)
ans = 1x3 ordinal array
large medium small
По умолчанию категории упорядочены их метками в возрастающем алфавитном порядке, large
<medium
<small
.
Сравните элементы.
Проверяйте, действительно ли первый объект (который имеет размер medium
) меньше, чем второй объект (который имеет размер large
).
size(1) < size(2)
ans = logical
0
Логическое значение 0
указывает, что средний объект не меньше, чем большой объект.
Переупорядочьте уровни категории.
Переупорядочьте уровни категории так, чтобы small
<medium
<large
.
size = reorderlevels(size,{'small','medium','large'}); getlevels(size)
ans = 1x3 ordinal array
small medium large
Сравните элементы.
Проверьте, что первый объект теперь меньше, чем второй объект.
size(1) < size(2)
ans = logical
1
Логическое значение 1
указывает, что ожидаемое неравенство теперь содержит.
В этом примере показано, как переупорядочить уровни категории в номинальных массивах с помощью reorderlevels
. По определению номинальные категории массивов не имеют никакого естественного упорядоченного расположения. Однако вы можете хотеть изменить порядок уровней в аналитических целях или отображении. Например, подбирая модель регрессии с категориальными ковариантами, fitlm
использует первый уровень номинальной независимой переменной как ссылочная категория.
Загрузка демонстрационных данных.
Массив набора данных, hospital
, содержит переменные, измеренные на 100 демонстрационных пациентах. Переменная Weight
содержит вес каждого пациента. Переменная Sex
номинальная переменная, содержащая пол, Male
или Female
, для каждого пациента.
load hospital
getlevels(hospital.Sex)
ans = 1x2 nominal array
Female Male
По умолчанию порядок номинальных категорий находится в возрастающем алфавитном порядке меток.
Отобразите на графике данные, сгруппированные по категориям уровень.
Чертите диаграммы веса, сгруппированного полом.
figure
boxplot(hospital.Weight,hospital.Sex)
title('Weight by Gender')
Диаграммы появляются в том же алфавитном порядке, возвращенном getlevels
.
Измените порядок категории.
Измените порядок уровней категории.
hospital.Sex = reorderlevels(hospital.Sex,{'Male','Female'}); getlevels(hospital.Sex)
ans = 1x2 nominal array
Male Female
Уровни находятся в недавно заданном порядке.
Отобразите данные на графике в новом порядке.
Чертите диаграммы веса полом.
figure
boxplot(hospital.Weight,hospital.Sex)
title('Weight by Gender')
Порядок диаграмм соответствует новому порядку уровня.
fitlm
| getlevels
| nominal
| ordinal
| reorderlevels