Примечание
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.