1. ホーム
  2. r

[解決済み] 統計的最頻値の求め方は?

2022-03-22 18:36:10

質問

Rで。 mean()median() は標準的な関数で、期待通りの働きをします。 mode() は、引数の中で最も多く出現する値ではなく、オブジェクトの内部記憶モードを教えてくれます。しかし、ベクトル(またはリスト)の統計モードを実装する標準ライブラリ関数はあるのでしょうか?

どのように解決するのですか?

もう一つの解決策は、数値と文字/因子の両方のデータに対して機能することです。

Mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

私の小さな小さなマシンでは、10Mの整数ベクトルのモードを約0.5秒で見つけることができるのです。

データセットが複数のモードを持つ可能性がある場合、上記の解決策は、以下のようなアプローチを取ります。 which.max を返します。 最初に表示される の値は、モードの集合の を返すには すべて モードは、このバリアント(コメント中の@digEmAllから)を使ってください。

Modes <- function(x) {
  ux <- unique(x)
  tab <- tabulate(match(x, ux))
  ux[tab == max(tab)]
}