확률 밀도 함수 (R의 density
방법을 사용하여 찾음)에 대한 로컬 최대 값을 찾으려고합니다 . 많은 양의 데이터가 있기 때문에 간단한 "인접 이웃 둘러보기"방법을 사용할 수 없습니다 (이것은 주변 이웃에 대해 로컬 최대 값인지 확인하기 위해 포인트를 둘러 보는 방법). 또한 내결함성 및 기타 매개 변수를 사용하여 "이웃을 둘러보기"를 구축하는 것과 달리 스플라인 보간과 같은 것을 사용하고 1 차 미분의 근본을 찾는 것이 더 효율적이고 일반적인 것 같습니다.
그래서 내 질문 :
- 의 함수가 주어지면
splinefun
어떤 방법으로 로컬 최대 값을 찾을 수 있습니까? - 를 사용하여 반환 된 함수의 파생 상품을 찾는 쉬운 / 표준 방법이 있습니까
splinefun
있습니까? - 확률 밀도 함수의 국소 최대 값을 찾는 더 나은 / 표준적인 방법이 있습니까?
참고로 아래는 밀도 함수의 도표입니다. 내가 작업하고있는 다른 밀도 함수는 형태가 비슷합니다. 나는 R이 처음이지만 프로그래밍에 익숙하지 않다고 말해야하므로 필요한 것을 달성하기위한 표준 라이브러리 또는 패키지가있을 수 있습니다.
당신의 도움을 주셔서 감사합니다!!
이것에 대한 내 n은 2 ^ 15이며 데이터는 포인트 수준에서 많은 차이가있는 것으로 보입니다. 나는 이웃 방법과 비슷한 것을 사용하여 최대 / 최소 파인더를 작성하려고 시도했지만
—
aaronlevin
msExtrema {msProcess}
허용 오차 설정을 사용하여 최대 값 중 일부만 식별 할 수있었습니다.
의 코드를 보면
—
onestop
msExtrema
, 그것을위한 간단한 래퍼 peaks
로부터 splus2R
당신이 로컬 최대가 아닌 로컬 최소값을 원하는 경우 직접 사용하여 더 나을 것 패키지. 기본값을 사용하면 span=3
모든 로컬 최대 값을 찾지 못하는 이유를 알 수 없습니다 . 그리고 2 ^ 15 = 32768은 효율성이 큰 걱정거리가되기에 충분히 크지 않아야합니다.
splinefun에 의해 반환 된 함수에는 기본적으로 0 인 인수 "deriv"가 있습니다. 첫 번째 미분에 대해 deriv = 1을 설정하십시오.
—
Cyan
흠,
—
익숙
peaks
버그가있는 것 같습니다 : max.col
기본 설정 인을 사용 ties.method = "random"
하여 임의로 연결을 끊을뿐만 아니라 넥타이를 선언하기 위해 1e-5의 상대 허용 오차를 설정합니다. 전자는 혼란스럽고 후자는 분명히 당신이 원하는 것이 아닙니다. peaks()
또한 strict
문서화가 잘 안된 매개 변수를 취하고 함수 코드를 보면 아무것도하지 않습니다. 아, 사용자가 제공 한 소프트웨어 라이브러리의 기쁨! 프로그래밍에
density()
모든 데이텀의 밀도를 추정하지 않고 n 값 의 밀도를 추정 합니다. 여기서 n 은 기본값이 n = 512 인 사용자 지정 매개 변수입니다.