我正在尝试找到概率密度函数的局部最大值(使用R density方法找到)。由于存在大量数据,因此我无法执行一种简单的“环顾四周”方法(即环顾一个点以查看其是否是相对于其邻居的局部最大值)。此外,与使用容错和其他参数构建“环顾四周”相反,使用样条插值法然后找到一阶导数的根似乎更为有效和通用。
所以,我的问题是:
- 给定来自的函数splinefun,哪些方法可以找到局部最大值?
- 有没有一种简单/标准的方法来查找使用返回的函数的派生形式splinefun?
- 有没有更好的/标准的方法来找到概率密度函数的局部最大值?
供参考,以下是我的密度函数图。我正在使用的其他密度函数在形式上相似。我应该说我是R的新手,但不是编程的新手,因此可能会有一个标准的库或程序包来实现我所需要的。 

谢谢你的帮助!!
                  我给这n为2 ^ 15,似乎该数据已在逐点水平有很多差异的。我尝试使用类似于邻域方法(通过
                
                  
                    —
                    aaronlevin 2012年
                    
                  
                
              msExtrema {msProcess})编写最大/最小查找器,并且只能通过使用公差设置来识别一些最大值,而不是全部。
                
                  看的代码
                
                  
                    —
                    2012年
                    
                  
                
              msExtrema,它是一个简单的包装peaks从splus2R包,你会更好使用直接,如果你只希望当地的最大值,而不是局部极小。我不明白为什么使用默认span=3不会发现所有的局部最大值。2 ^ 15 = 32768的大小应该不足以使效率成为一个大问题。
                
                  splinefun返回的函数的参数“ deriv”默认为0。将一阶导数设置为deriv = 1。
                
                
                  
                    —
                    青色
                    
                  
                
              
                  嗯,
                
                  
                    —
                    陌生
                    
                  
                
              peaks似乎有问题:它max.col使用默认设置调用ties.method = "random",这不仅会随机打破平局,而且会为宣告平局设置相对容差1e-5。前者令人困惑,后者绝对不是您想要的。peaks()还采用了strict文档记录不充分的参数,并且在查看该函数的代码时,什么也没做。啊,用户提供的软件库的乐趣!尽管您说自己对编程并不
                
density()不估计密度为每一个数据,它估计在密度Ñ值,其中Ñ是具有默认值的用户指定的参数Ñ = 512