添加一条适合R中图的峰值的曲线?

Nan*_*ami 0 plot curve r vector

如果给出两个向量及其图,是否有一个函数可以添加适合峰值的曲线?例如,我有:

x = c(0:20)

x [1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

[1] 19.4 17.9 8.1 11.3 7.8 8.0 5.0 1.7 3.9 5.4 7.5 5.4 4.7 5.0 4.9 3.5 2.9 2.4 1.4 1.7

积(X,Y,XLIM =范围(x)中,ylim =范围(Y))

最好的,Nanami

And*_*rie 5

从数学上讲,你的问题定义很差.您为y值提供一系列离散值,而不是函数.这意味着无法区分它来找到局部最大值.

也就是说,这里有一些代码可能会让你开始.它使用了一个名为的函数peaks(归功于Brian Ripley):

peaks<-function(series,span=3){
  z <- embed(series, span)
  s <- span%/%2
  v<- max.col(z) == 1 + s
  result <- c(rep(FALSE,s),v)
  result <- result[1:(length(result)-s)]
  result
} 

x <- c(1:20)
y <- c(19.4, 17.9, 8.1, 11.3, 7.8, 8.0, 5.0, 1.7, 3.9, 
       5.4, 7.5, 5.4, 4.7, 5.0, 4.9, 3.5, 2.9, 2.4, 1.4, 1.7)

plot(x,y, type="l")
p <- which(peaks(y, span=3))

lines(x[p], y[p], col="red", type="b)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

问题是局部峰值的概念定义不明确.你的意思是当地的?提供的峰值算法允许您修改span.玩一下,看看它是否有用.