Matlab中的mode
- 函数返回数据集中最常出现的值。但“当同时频繁出现多个值时,模式会返回这些值中最小的值。”
这对我使用它的方式并不是很有用,我宁愿让它在没有模态值的情况下返回中位数或算术平均值(因为它们至少在某种程度上处于分布中)。否则,使用mode
的结果在规模较低的方面太多了(我的发行版中有很多独特的值)。
是否有一种优雅的方法可以使mode
更喜欢数据集中的更多中心值(在没有真正的模态值的情况下)?
btw。:我知道我可以使用[M,F] = mode(X, ...)
来手动检查最常见的值(并在必要时计算中位数或平均值)。但这似乎是一个尴尬的解决方案,因为我几乎完全重写了mode
应该做的所有事情。我希望有一个更优雅的解决方案。
答案 0 :(得分:0)
看起来你想要mode
的第三个输出参数。 EG:
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))