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

Fitting data and getting defined number of minima in 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 之间的最小值。我可以将末端算作最小值,但不是我的问题的优先级。

感谢任何帮助。

density()

拟合后

我为 which.peaks() function 使用了 mSTEM 软件包。