我即将使用包" modeest"报告系列数据集的模式。
请参阅此网站有关该套餐的信息:modeest
例如:
x <- rbeta(1000,23,4)
M <- mlv(x, method = "kernel")
M[1]
M 1打印模式(最有可能的值)。
在我的情况下,我想使用running方法每10个数字获取模式值。
如果我的系列数据集包含100个数字,我希望每10个数字获得10个模式值。
请让我指导我如何在R中执行此操作。
我已经考虑过运行中位数&#34; runmed&#34;,我希望我能找到类似的报告运行模式值的方法。
非常感谢。
答案 0 :(得分:1)
执行此操作的一种方法是先split the vector into chunks of equal size,然后使用lapply
或sapply
:
library(modeest)
x <- rbeta(100, 23, 4)
split_x <- split(x, ceiling(seq_along(x) / 10))
# alternative
# split_x <- split(x, cut(seq_along(x), 10, labels = FALSE))
sapply(split_x, function(x) mlv(x, method = "kernel"))
如果您只想mode
,则可以将sapply
的来电修改为sapply(split_x, function(x) mlv(x, method = "kernel")[1])
或sapply(split_x, function(x) mlv(x, method = "kernel")[[1]])
。
注意:这是向量x
中每10个数字的模式值。我这样称呼它是为了避免与运行&#34;运行&#34;因为我听到&#34;跑步模式&#34;我倾向于认为符合&#34;移动或滚动平均值&#34;这将推断x[1:10], x[2:11], x[3:12], ... , x[91:100]
的模式,但似乎不是你问的。