2013-07-08 2 views
1

I있어 에지 경우의 R 밀도() 함수의 동작 당황 비트 ...융합() 함수

가정하는 I은 X와 점 더 추가 = 0을 시뮬레이션 데이터 세트로 변환합니다. 내가 예상하는 것은 밀도 추정이 매우 빠르게 수렴된다는 것입니다. (나는 그 의미에 대하여 ... 의도적으로 모호합니다.) x = 0에서의 델타 함수에 대한 추정입니다.

plot(density(c(0,0)), xlim=c(-2,2)) 
plot(density(c(0,0,0,0)), xlim=c(-2,2)) 
plot(density(c(rep(0,10000))), xlim=c(-2,2)) 
plot(density(c(rep(0,10000000))), xlim=c(-2,2)) 

하지만 시뮬레이션 데이터에 잡음의 작은 비트를 추가하는 경우, 행동이 훨씬 더 : 플롯의 순서로 나타낸 바와 같이 실제로, 적합 확실히, 아주 천천히 좁아하지만

plot(density(0.0000001*rnorm(10000000) + c(rep(0,10000000))), xlim=c(-2,2)) 

그냥 잠자는 개가 거짓말을하도록 하시겠습니까? 아니면 밀도()의 사용법에 대해 뭔가 빠졌나요? ?bw.nrd0

+0

+1 꽤 흥미로운 질문입니다. 나 자신에 대한 설명을 원할 것이다. – asb

답변

1

density의 기본 대역폭 선택 :

bw.nrd0는 경험 법칙 가우스 커널 밀도 추정의 대역폭 선택을위한을 구현합니다. 표준 편차의 최소값의 0.9 배와 사 분위 범위를 표본 크기의 1.34 배로 나눈 값이 1/5의 음의 음수 (= Silverman의 'rule of thumb', Silverman (1986, page 48, eqn (3.31)) 분위수가 긍정적 인 결과가 보장 될 때 일치하지 않는.

를 데이터가 일정 할 때, 다음 분위는 일치하므로 마지막 절에서 긍정적 인 결과 킥을 보장. 이것은 기본적으로 선택 대역폭이 없다는 것을 의미 제로의 데이터의 확산의 연속 함수

을 설명하기 :.

> bw.nrd0(rep(0, 1e6)) 
[1] 0.05678616 
> bw.nrd0(rnorm(1e6, s=1e-6)) 
[1] 5.672872e-08 
+0

놀라운 RTFM이 발생하면 :-). 멋진 형사. –

+0

또한 놀라운 일이 생길 때 FFSME (Find ... Subject Matter Expert) :-) 감사합니다 홍! – user2537291

0

사실 (다리 사이의 꼬리 ...) 나는 이제 나의 전체 질문이 잘못되었다는 것을 알게되었습니다. R에 상당히 익숙하지 않았기 때문에, 밀도()가 가우시안 수와 개별 너비를 모두 최적화하여 데이터 범위에 다양한 너비의 가우스를 맞추려고 시도했다고 즉시 생각했습니다. 그러나 실제로는 훨씬 더 간단한 작업을 수행하고 있습니다. 단지 각 데이터 포인트를 채우고 스미어를 더해서 데이터를 부드럽게 평가합니다. density()는 단순한 smoothing 알고리즘 일뿐입니다. 그래서, 정말로 그렇습니다, RTFM :)

+1

정상적인 혼합 모델링을 원할 경우, 패키지 mclust : http://cran.r-project.org/web/packages/mclust/를 확인하십시오. –