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