Адаптация функции режима к центральным значениям (Matlab) - PullRequest
1 голос
/ 13 марта 2012

Функция mode в Matlab возвращает значение, которое чаще всего встречается в наборе данных.Но "когда несколько значений встречаются одинаково часто, режим возвращает наименьшее из этих значений."

Это не очень полезно для того, для чего я его использую, я бы предпочел иметь еговернуть медиану или среднее арифметическое при отсутствии модального значения (так как они хотя бы в некоторой степени находятся в середине распределения).В противном случае результаты использования mode окажутся слишком низкими в нижней части шкалы (у меня много уникальных значений в моем распределении).

Есть ли элегантный способ сделать mode предпочитаете более центральные значения в наборе данных (при отсутствии истинного модального значения)?


кстати: я знаю, что мог бы использовать [M,F] = mode(X, ...), чтобы вручную проверитьнаиболее частое значение (и при необходимости рассчитайте медиану или среднее значение).Но это кажется немного неловким решением, так как я почти полностью переписал бы все, что должен делать mode.Я надеюсь, что есть более элегантное решение.

1 Ответ

0 голосов
/ 13 марта 2012

Похоже, вы хотите третий выходной аргумент из mode.Например:

x = [1 1 1 2 2 2 3 3 3 4 4 4 5 6 7 8];
[m,f,c] = mode(x);
valueYouWant = median(c{1});

Или (поскольку медиана принимает среднее значение при четном количестве записей), в случаях, когда четное число значений может иметь одинаковое максимальное количество вхождений, возможно,как то так:

valueYouWant = c{1}(ceil(length(c{1})/2))
...