nominal и ordinal типы данных массива не рекомендуются. Чтобы представлять упорядоченный и неупорядоченные дискретные, нечисловые данные, используйте Категориальные массивы (MATLAB) тип данных вместо этого.
В этом примере показано, как категоризировать числовые данные в категориальный порядковый массив с помощью ordinal. Это полезно для дискретизации текущих данных.
Загрузка демонстрационных данных.
Массив набора данных, hospital, содержит переменные, измеренные на выборке пациентов. Вычислите минимум, медиану и максимум переменной Age.
load hospital
quantile(hospital.Age,[0,.5,1])ans = 1×3
25 39 50
Терпеливые возрасты лежат в диапазоне от 25 до 50.
Преобразуйте числовой массив в порядковый массив.
Пациенты группы в категории возраста Under 30, 30-39, Over 40.
hospital.AgeCat = ordinal(hospital.Age,{'Under 30','30-39','Over 40'},...
[],[25,30,40,50]);
getlevels(hospital.AgeCat)ans = 1x3 ordinal array
Under 30 30-39 Over 40
Последний входной параметр к ordinal имеет конечные точки для категорий. Первая категория начинается в 25 лет, второе в 30 лет, и так далее. Последняя категория содержит возрасты 40 и выше, поэтому начинается в 40 и заканчивается в 50 (максимальный возраст в наборе данных). Чтобы задать три категории, необходимо задать четыре конечных точки (последняя конечная точка является верхней границей последней категории).
Исследуйте категории.
Отобразите категорию возраста и возраста для второго пациента.
dataset({hospital.Age(2),'Age'},...
{hospital.AgeCat(2),'AgeCategory'})ans =
Age AgeCategory
43 Over 40
Когда вы дискретизируете числовой массив в категории, категориальный массив теряет всю информацию о фактических числовых значениях. В этом примере, AgeCat не является числовым, и вы не можете восстановить значения необработанных данных с него.
Категоризируйте числовой массив в квартили.
Переменная Weight имеет измерения веса для демонстрационных пациентов. Категоризируйте терпеливые веса в четыре категории квартилем.
p = 0:.25:1;
breaks = quantile(hospital.Weight,p);
hospital.WeightQ = ordinal(hospital.Weight,{'Q1','Q2','Q3','Q4'},...
[],breaks);
getlevels(hospital.WeightQ)ans = 1x4 ordinal array
Q1 Q2 Q3 Q4
Исследуйте категории.
Отобразите вес и квартиль веса для второго пациента.
dataset({hospital.Weight(2),'Weight'},...
{hospital.WeightQ(2),'WeightQuartile'})ans =
Weight WeightQuartile
163 Q3
Итоговая статистика, сгруппированная по категориям уровни.
Вычислите среднее систолическое и диастолическое кровяное давление для каждого возраста и весовой категории.
grpstats(hospital,{'AgeCat','WeightQ'},'mean','DataVars','BloodPressure')ans =
AgeCat WeightQ GroupCount mean_BloodPressure
Under 30_Q1 Under 30 Q1 6 123.17 79.667
Under 30_Q2 Under 30 Q2 3 120.33 79.667
Under 30_Q3 Under 30 Q3 2 127.5 86.5
Under 30_Q4 Under 30 Q4 4 122 78
30-39_Q1 30-39 Q1 12 121.75 81.75
30-39_Q2 30-39 Q2 9 119.56 82.556
30-39_Q3 30-39 Q3 9 121 83.222
30-39_Q4 30-39 Q4 11 125.55 87.273
Over 40_Q1 Over 40 Q1 7 122.14 84.714
Over 40_Q2 Over 40 Q2 13 123.38 79.385
Over 40_Q3 Over 40 Q3 14 123.07 84.643
Over 40_Q4 Over 40 Q4 10 124.6 85.1
Переменная BloodPressure матрица с двумя столбцами. Первый столбец является систолическим кровяным давлением, и второй столбец является диастолическим кровяным давлением. Группа в выборке с самым высоким средним диастолическим кровяным давлением, 87.273, в возрасте 30–39 и в самом высоком квартиле веса, 30-39_Q4.