gpt4 book ai didi

r - 在 R 中查找局部最大值/最小值

转载 作者:行者123 更新时间:2023-12-04 12:55:18 24 4
gpt4 key购买 nike

我有一堆数据(每个测量系列有 10,000 - 50,000 个值),我有兴趣从这些值分布的密度估计中自动识别局部最大值/最小值。事实上,我假设通常应该有两个峰值,由一个凹坑隔开,我想找到将两个峰值彼此分开的凹坑,以便将数据分成两部分进行进一步处理。如果可能的话,我还想知道峰的位置。

由于密度估计可能包含非常小的局部变化,我希望有调整“灵敏度”的可能性。到目前为止我能找到的最好的是@Tommy 的这个解决方案:https://stackoverflow.com/a/6836924/1003358下面是一个例子:

library(ggplot2)

d <- density(faithful$eruptions, bw = "sj")
loc.max <- d$x[localMaxima(d$y)]

ggplot(faithful, aes(eruptions)) + geom_density(adjust=1/2) +
geom_vline(x=loc.max, col="red") +
xlab("Measured values")

Identifying maxima in faithful dataset

现在,我的数据更加嘈杂:
d <- density(my.df$Values, bw = "sj")
loc.max <- d$x[localMaxima(d$y)]

ggplot(my.df, aes(Values)) + geom_density(adjust=1/2) +
geom_vline(x=loc.max, col="red") +
xlab("Measured values")

First attempt to identify maxima in my dataset

尝试调整参数(注意在尾部发现了两个“不需要的”峰值):
d <- density(my.df$Values, bw="nrd", adjust=1.2)
loc.max <- d$x[localMaxima(d$y)]

ggplot(my.df, aes(Values)) + geom_density(adjust=1/2) +
geom_vline(x=loc.max, col="red") +
xlab("Measured values")

Second attempt to detect peaks in my dataset

所以问题是:

1) 如何在如此嘈杂的数据集中自动识别真正的峰值?
2)如何可靠地找到分隔这些峰的凹坑?

最佳答案

我最喜欢的是 pastecs::turnpoints .但是您是正确的,您必须进行一些主观过滤才能将尖峰噪声与真实峰值区分开来。一种方法是要求原始数据或样条数据对于 N 个连续值保持高于某个阈值。

关于r - 在 R 中查找局部最大值/最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com