2010-11-23 2 views
0

여러 임의 변수의 분포를 사전 계산하려고합니다. 특히 이러한 임의 변수는 게놈의 위치에서 계산 된 함수의 결과이므로 각각에 대해 10^8 또는 10^9 값의 순서가 있습니다. 함수는 꽤 매끄 럽기 때문에 매 2/10/100마다 평가하여 많은 정확도를 잃을 것이라고 생각지 않습니다. 기본 또는 그렇게하지만, 많은 수의 샘플이있을 것입니다. 제 계획은 각 함수에 대한 quantile 테이블 (어쩌면 백분위 수)을 미리 계산하고 모든 실행에서 이러한 분포 통계를 계산할 필요가 없도록하기 위해 내 메인 프로그램의 실행에서이를 참조하는 것입니다.효율적인 경험적 CDF 계산/저장

그러나 저는 이것을 어떻게 쉽게 할 수 있는지 보지 못합니다 : 저장, 정렬 및 10^9 수레 배열 축소가 실제로 가능하지는 않지만 다른 방법은 생각할 수 없습니다 배포에 관한 정보를 잃어 버린다. 전체를 메모리에 저장할 필요가없는 샘플 분배의 quantile을 측정하는 방법이 있습니까?

+0

http : //stats.stackexchange.com /에 더 많은 행운이있을 것이라고 생각합니다 ... – katrielalex

+0

몇 개의 변수가 있습니까? 함수가 얼마나 "부드럽습니까?" 보간에 로컬 다항식을 사용할 수 있습니까? –

+0

플롯을 게시 할 수 있습니까? –

답변

2

@ katriealex 님의 의견에 동의합니다 : 강력한 통계 배경을 가진 사람에게 물어보십시오.

상당한 양의 메모리를 저장할 필요없이 최소/최대/평균/표준 편차를 쉽게 평가할 수 있습니다. (평균 + 표준 편차를 참고 : 사용 크 누스의 기술 :..

이 표준 dev에의 순진한 계산에서 발생하는 부동 소수점 오버 플로우/언더 플로우 문제, 예를 들어 taking S1 = the sum of x[k] and S2 = the sum of x[k]^2 and trying to calculate std deviation = sqrt(S2/N - S1^2/N^2)에서 당신을 방지
delta = x - m[n-1] 
m[n] = m[n-1] + 1/n * delta 
S[n] = S[n-1] + (x[n] - m[n])*delta 
mean = m[n] 
std dev = sqrt(S[n]/n) 

Wikipedia 참조)

분포의 더 높은 특성 순간을 계산하기위한 다른 스트림 지향 알고리즘이있을 수 있지만, 나는 그것이 무엇인지 알지 못합니다.

또는 배포를 특성화하기에 충분한 bin이있는 histogramming 기술을 사용할 수도 있습니다.

+0

평균값과 표준 편차는 이것으로는 충분하지 않지만, 실제로는 득점 함수를 정규화하여 자유롭게 상한값과 하한값을 구할 수 있기 때문에 실제로 비닝 작업이 정상적으로 작동한다고 생각합니다. 제안 해 주셔서 감사합니다. – bnaul