평활화 된 데이터에서 R의 변곡점 찾기


14

부드럽게 사용하는 데이터가 loess있습니다. 부드러운 선의 변곡점을 찾고 싶습니다. 이것이 가능한가? 누군가 가이 문제를 해결하기 위해 멋진 방법을 만들었을 것입니다 ... 내 말은 ... 결국 R입니다!

사용하는 스무딩 기능을 변경해도 괜찮습니다. 나는 loess그것이 과거에 사용 되었던 것이기 때문에 사용했습니다. 그러나 모든 평활 기능은 좋습니다. 변곡점이 사용하는 스무딩 기능에 따라 달라집니다. 난 괜찮아 변곡점을 뱉어내는 데 도움이되는 평활 기능을 사용하여 시작하고 싶습니다.

내가 사용하는 코드는 다음과 같습니다.

x = seq(1,15)
y = c(4,5,6,5,5,6,7,8,7,7,6,6,7,8,9)
plot(x,y,type="l",ylim=c(3,10))
lo <- loess(y~x)
xl <- seq(min(x),max(x), (max(x) - min(x))/1000)
out = predict(lo,xl)
lines(xl, out, col='red', lwd=2)

여기에 이미지 설명을 입력하십시오


3
변경점 분석을 보고 싶을 수도 있습니다 .
nico

이 코드 줄은 매우 유용하다는 것을 알았습니다. infl <-c (FALSE, diff (diff (out)> 0)! = 0)하지만이 코드는 위 또는 아래로 상관없이 모든 전환점을 찾습니다. 시계열에서 어떤 점이 구부러지고 어떤 구부러 지는지 어떻게 알 수 있습니까? 예를 들어 위쪽 전환점을 녹색으로, 아래쪽으로 빨간색으로 플롯하고 색상을 지정하십시오.
user3511894

답변:


14

R을 사용하여 스무딩 된 곡선의 변곡점을 찾는 관점에서 y의 변화가 표시되는 스무딩 된 y 값에서 해당 위치를 찾아야합니다.

infl <- c(FALSE, diff(diff(out)>0)!=0)

그런 다음 이러한 변곡이 발생하는 지점을 그래프에 추가 할 수 있습니다.

points(xl[infl ], out[infl ], col="blue")

통계적으로 의미있는 변곡점을 찾는 관점에서 @nico는 변경점 분석 (때때로 세그먼트 회귀 분석이라고도 함)을 검토해야한다는 데 동의합니다.


이것은 일을 다소 잘하는 것처럼 보입니다. 나는 그것이 이상적이지 않다는 것을 이해하고 그것이주는 결과는 확실히 이상적이지 않다는 것을 이해합니다. 기여해 주셔서 감사합니다. 직선과 같은 것을 제외한 대부분의 경우에 적용됩니다.
user164846

3
@ user164846을 이해하고 있는지 잘 모르겠습니다. 직선에는 변곡점이 없습니다.
Jean V. Adams

또한 Savitzky-Golay 필터와 같은 파생물을 즉시 제공하는 스무더를 살펴볼 수도 있습니다. 그러나 매끄럽게 선택하는 것은 항상 다른 방법이 아니라 데이터와 응용 프로그램에 의해 결정되어야합니다!
SX에 불만족 cbeleites

4

여기 몇 가지 수준에 문제가 있습니다.

우선, 황토는 단지 하나 더 매끄럽게 일어나고 선택할 수있는 많은 것들이 있습니다. 낙관론자들은 합리적 스무더가 실제 패턴을 발견 할 것이며, 합리적 스무더가 거의 실제 패턴에 동의한다고 주장합니다. 비관론자들은 이것이 문제이며 "합리적인 스무더"와 "실제 패턴"은 서로의 관점에서 정의된다고 주장합니다. 요즘 왜 황토를 선택하고 왜 좋은 선택이라고 생각합니까? 선택은 단일 스무스 또는 단일 스무더의 단일 구현 일뿐 아니라 소프트웨어 간에도 동일하게 적용되는 것은 아니지만 단일 스무딩 수준도 선택됩니다 ( 당신을 위해 일상). 이 점을 언급했지만 그 점을 다루지는 않습니다.

보다 구체적으로, 장난감 예제에서 알 수 있듯이 회전 지점과 같은 기본 기능은 황토에 의해 쉽게 유지되지 않을 수 있습니다. 첫 번째 로컬 최소값이 사라지고 두 번째 로컬 최소값은 표시 한 특정 스무스로 대체됩니다. 첫 번째가 아닌 두 번째 미분의 0으로 정의되는 굴곡은 훨씬 더 까다로울 것으로 예상됩니다.


인터넷에서 훔쳐서 황토를 선택했습니다. 나는 일반적으로 스무딩에 매우 경험이 많기 때문에 온라인에서 코드를 가져 왔습니다. 더 나은 제안이 있습니까?
user164846

죄송 합니다만 귀하의 의견을 이해하지 못합니다. 스무딩에 매우 익숙한 경우 노이즈를 억제하면서 스무더가 굴곡을 가장 잘 보존 할 수있는 인수를 사용해야합니다. 그것은 저에게 모순적인 목표로 보이지만, 내가 왜 틀린지 기술적 인 주장을 듣고 기뻐할 것입니다.
Nick Cox

죄송합니다, "미안 심해"라는 뜻은 아닙니다.
user164846

1
내가 참조. 인생은 짧고 가능한 모든 방법을 시도 할 수는 없습니다. 실제 데이터를 볼 수는 없지만 장난감 예제는 스무딩으로 식별 가능한 구조를 제거 할 수 있음을 강조합니다.
Nick Cox

2

이 문제에 대한 훌륭한 접근 방식이 많이 있습니다. 일부는 포함됩니다. (1)-변경점-패키지 (2)-세그먼트-패키지. 그러나 변경점 수를 선택해야합니다. (3) -earth- 패키지에 구현 된 MARS

편견 / 분산 트레이드 오프에 따라 약간 씩 다른 정보가 제공됩니다. -분할 된-볼 가치가 있습니다. 다른 수의 변경점 모델을 AIC / BIC과 비교할 수 있습니다.


1

아마도 fda 라이브러리를 사용할 수 있고 적절한 연속 함수를 추정하면 2 차 도함수가 0 인 장소를 쉽게 찾을 수 있습니다.

FDA 크랜

FDA 소개


1 차 도함수의 0은 최소값과 최대 값을 정의합니다. 나는 당신이 두 번째를 의미한다고 생각합니다. "쉽게"무엇입니까? 숫자를 구별하는 방법은 여러 가지가 있습니다.
Nick Cox

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.