在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的标准库本身似乎并没有这样的内置方法 一个解决这个问题的方法是使用一些类似下面的结构(如果你经常使用的话,可以把它变成一个函数...)。
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 lesson<br>。 这似乎证实了(至少在编写本课时)R中没有模式函数(好吧......你发现的mode()是用来断定变量类型的)。