Примечание
The nominal и ordinal типы данных массива не рекомендованы. Чтобы представлять упорядоченные и неупорядоченные дискретные нечисловые данные, используйте вместо этого тип данных Категориальные Массивы.
В этом примере показано, как классифицировать числовые данные в категориальный порядковый массив с помощью 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
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
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.