Rでは,mean()
やmedian()
は標準的な関数で,期待通りの働きをしてくれます. mode()`は、オブジェクトの内部記憶モードを教えてくれるもので、引数で最も多く出現した値を教えてくれるものではありません。しかし,ベクトル(あるいはリスト)の統計モードを実装した標準ライブラリ関数はあるのでしょうか?
一変量の単峰性(時には多峰性)データのモードの推定量や、通常の確率分布のモードの値を提供するパッケージ modeest
があります。
mySamples <- c(19, 4, 5, 7, 29, 19, 29, 13, 25, 19)
library(modeest)
mlv(mySamples, method = "mfv")
Mode (most likely value): 19
Bickel's modal skewness: -0.1
Call: mlv.default(x = mySamples, method = "mfv")
詳細は このページ を参照してください。
Rには非常に多くのアドオンパッケージがあり、それらの中には、数値リスト/系列/ベクトルの[統計]モードを提供するものもあるでしょう。
しかし,Rの標準ライブラリには,そのような内蔵メソッドはないようです! これを回避する1つの方法は、以下のような構造を使用することです(頻繁に使用する場合は、これを関数に変えてください)。
mySamples <- c(19, 4, 5, 7, 29, 19, 29, 13, 25, 19)
tabSmpl<-tabulate(mySamples)
SmplMode<-which(tabSmpl== max(tabSmpl))
if(sum(tabSmpl == max(tabSmpl))>1) SmplMode<-NA
> SmplMode
[1] 19
大きなサンプルリストの場合、max(tabSmpl)の値のために一時的な変数を使用することを検討する必要があります(Rがこれを自動的に最適化するかどうかはわかりません)。
参考:このKickStarting Rレッスンの"How about median and mode?"を参照してください。 これで、(少なくともこのレッスンを書いている時点では)Rにはmode関数がないことが確認できたと思います(まあ...お調べになったmode()は変数の型をアサートするのに使われています)。