2012-03-13 14 views
1

mode -functionは、データセットで最も頻繁に発生する値を返します。しかし、"等しく頻繁に発生する複数の値がある場合、modeはそれらの値の最小値を返します。中央値を優先するモード関数の適合(Matlab)

これは、私がそれを使用しているものにはあまり役に立ちません。私はむしろ、モダール値がない場合に中央値または算術平均を返すでしょう(少なくとも、 )。さもなければ、modeを使用した結果は、スケールの低い側ではあまりにも多すぎます(私のディストリビューションには一意の値がたくさんあります)。

modeには、(真のモーダル値がない)データセットの中心値を優先させるためのエレガントな方法がありますか?


ところで:私は手動で最頻値を確認(および中央値を計算するか、必要なときに平均)するために、[M,F] = mode(X, ...)を使用することができる知っています。しかし、これは少し難解な解決策のように思えます。なぜなら、私はmodeがやろうとしているすべてを書き換えようとしているからです。より洗練されたソリューションがあることを期待しています。

答えて

0

第3の出力引数を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)) 
+0

決定的なモーダル値が見つからない場合、入力値を徐々に丸めるために 'roundn'を使用しています。 5回のパスの後も一意のモーダル値が見つからない場合は、中央値が使用されます(例のように)。魅力のように働くので、ありがとう! –

関連する問題