#matlab #grouping
#matlab #группировка
Вопрос:
Я хотел бы использовать функции групповой статистики MATLAB (например, grpstats) для данных, где каждое наблюдение может быть в нескольких группах. Например, в пицце может быть {‘pepperoni’, ‘mushroom’,’onions’} или {‘пепперони’} или что-то еще, а затем я хочу, чтобы статистика группы была заполнена: все пиццы с «пепперони», все они с «грибами» и т. Д.
В качестве альтернативы, если вы знаете способ сделать это вручную, не повторяя, как идиот, это также было бы полезно.
Ответ №1:
Просто поместите повторяющиеся меры в разные строки. Например:
store = repmat(cellstr(num2str((1:3)')), 3, 1);
type = repmat({'pepperoni', 'mushrooms', 'onions'}, 3, 1);
type = Type(:);
score = dataset({randn(9,3), 'taste', 'looks', 'price'});
data = [dataset(store, type) score];
grpstats(data(:,2:end), 'type')
Необработанные данные:
>> data
data =
store type taste looks price
'1' 'pepperoni' -0.19224 -0.44463 -0.50782
'2' 'pepperoni' -0.27407 -0.15594 -0.32058
'3' 'pepperoni' 1.5301 0.27607 0.012469
'1' 'mushrooms' -0.24902 -0.26116 -3.0292
'2' 'mushrooms' -1.0642 0.44342 -0.45701
'3' 'mushrooms' 1.6035 0.39189 1.2424
'1' 'onions' 1.2347 -1.2507 -1.0667
'2' 'onions' -0.22963 -0.94796 0.93373
'3' 'onions' -1.5062 -0.74111 0.35032
Статистика группы:
>> grpstats(data(:,2:end), 'type')
ans =
type GroupCount mean_taste mean_looks mean_price
pepperoni 'pepperoni' 3 0.35459 -0.10817 -0.27197
mushrooms 'mushrooms' 3 0.09674 0.19138 -0.74791
onions 'onions' 3 -0.16704 -0.97992 0.072449
Комментарии:
1. Спасибо — это, очевидно, работает. В качестве общего решения мне кажется неидеальным по нескольким причинам: если вы / не / фильтруете по группе, вы должны помнить, что нужно сворачивать повторы, и это может занять много памяти, если наблюдения принадлежат многим группам. Но это может быть лучшим дешевым решением.
2. @Edward Я согласен, что сначала кажется немного неудобным помещать в таблицу совершенно новую строку для этого, где в реальной базе данных вы могли бы просто добавить теги к существующим наблюдениям. Однако это стандартный способ структурирования ваших данных в большинстве статистических программ. Одна приятная вещь в этом заключается в том, что это упрощает выполнение сложного логического подмножества ваших данных. Например, что, если бы мы хотели составить матрицу гистограмм для каждой уникальной комбинации
store
и пиццыtype
? Такая организация позволяет очень легко выполнять нарезку.