2017-02-27 12 views
2

분석하고자하는 잡음이 많은 데이터가 있습니다. 여기에 예제로 데이터를 고려하십시오.로컬 최소값을 따르는 로컬 최대 값을 확인하십시오.

set.seed(98765) 
A <- seq(0, 3, 0.01) 
B <- round(exp(A),digits = 2) 
B <-round(ifelse(B>1.5, jitter(B, factor = 200),B),digits = 2) 
# 
C <-seq(3,3.5,0.01) 
D <- rep(B[301],51) 
D <-round(jitter(D, factor = 0.8),digits = 2) 
# 
E <-seq(3.5,4,0.01) 
Ff <- rep(D[51],51) 
Ff <-round(jitter(Ff, factor = 1.3),digits = 2) 
# 
G <- seq(4,5, 0.01) 
H <- (-10*G)+60 
H <- round(jitter(H, factor = 50),digits = 2) 
# 
I <- seq(5,6,0.01) 
J <- 5*I-15 
J <- round(jitter(J, factor = 50),digits = 2) 
# 
K <- seq(6,8,0.01) 
L <- (-2*K)+27 
L <- round(jitter(L, factor = 40),digits = 2) 
# 
X <- c(A,C,E,G,I,K) 
Y <- c(B,D,Ff,H,J,L) 
# 
df1 <- data.frame(X,Y) 
ggplot(df1, aes(X,Y))+geom_point() 

그래서 음모를 꾸미고 후, 우리는 삶을 최소 우리가 지역 최대에 도달하는 방법 후 주위 x=5 곧 발생을 참조하십시오.

이 로컬 맥시마의 최대 Y 값을 두 개 얻으려면 어떻게해야합니까?

x 제약 조건 (최소값에 해당)을 지정하여 최대 값을 얻을 수 있지만 데이터에서 실제 위치는 변경되지만 모양의 형태는 동일하게 유지됩니다.

## max value 
## max(df1$Y[df1$X>5]) 
+0

를 제공 할 수있는 접근 방식 : // 유래 .com/questions/6836409/finding-local-maxima-and-minima – Djork

답변

1

이 여기에 완료되지 대답하지만, 당신이 지역의 최대 및 최소값에 http를 찾는이 질문을 볼 수 있습니다 참고로 어떤 방향

#Fit a smooth spline to the data and extract y-value 
dty = smooth.spline(df1$X, df1$Y)$y 

#Obtain delta values for dty 
delta = c(0, diff(dty)) 

#Plot the data as a line 
plot(df1$X, df1$Y, type = "l") 

#Points corresponding to zero in diff for dty are local maxima and minima (in theory) 
#In practice, you may have to tweak the tolerance 
points(df1$X[which(delta > -0.01 & delta < 0.01)], 
     df1$Y[which(delta > -0.01 & delta < 0.01)], 
     pch = 19, col = 'red') 

enter image description here