在 R 中拟合数据并获得定义的最小值数

问题描述

我有一个数据集,如下例所示,它有多个峰值。我想要峰值之间的最小值的 x 值。如果我需要定义多少个最小值,那不是问题(即我期望我的数据中有三个峰值,所以我可以告诉代码获得两个最小值。)

我使用 density() 来拟合数据,但我一直在获取多个最小值:

示例数据:

nn <- 1e4
set.seed(1)
betas<-rbeta(nn,3,2)
sims <- c(betas[1:(nn/2)]*2+1,betas[(nn/2+1):nn]*2+3,betas[(nn/2+2):nn]*3+4)

hist(sims)

我应该有一个介于 x 3 和 3.5 之间,以及 x 5 和 5.5 之间的最小值。我可以将结束算作最小值,但不是我的问题的优先级。

enter image description here

感谢任何帮助。

解决方法

density()拟合后

我将 mSTEM 包用于有效的 which.peaks() function