2010-11-23 14 views
0

私はいくつかの確率変数の分布をあらかじめ計算しようとしています。特に、これらのランダム変数は、ゲノム内の場所で評価された関数の結果であるため、それぞれに10^8または10^9の値があります。関数はかなりスムーズなので、私は2/10/100ごとに評価するだけで多くの精度を失うとは思わない?これには関係なく、多数のサンプルが存在することになります。私の計画は、各関数の分位表(おそらく百分位数)を事前計算し、これらの分布統計を毎回計算する必要がないように私のメインプログラムの実行時にこれらを参照することです。効率的な経験的CDF計算/記憶

しかし、私はこれを簡単にどうやって行うことができないのですか?10^9浮動小数点数の配列の格納、ソート、および縮小は実際には実現できませんが、別の方法は考えられませんその分布に関する情報を失う。全体をメモリーに格納する必要のないサンプル分布の分位数を測定する方法はありますか?

+0

あなたはhttp://stats.stackexchange.com /にもっと運があると思います... – katrielalex

+0

いくつの変数がありますか?どのように機能が「スムーズ」ですか?補間にローカル多項式を使用できますか? –

+0

Plotを投稿できますか? –

答えて

2

@ katriealexさんのコメントに同意します:強い統計的背景を持つ人に尋ねます。

大量のメモリを必要とせずに最小/最大/平均/標準偏差を簡単に評価できます。 (平均+ STD偏差のためのノート:Knuthのテクニックを使用します。

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) 

をこれは、STD 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)の素朴な計算で遭遇小数点オーバーフロー/アンダーフロー問題を浮動からあなたを防ぐこともWikipediaを参照してください。。)

分布のより高い特徴的なモーメントを計算するためのおそらく他のストリーム指向アルゴリズムがあるが、私はそれらが何であるか分からない。

また、配信を特徴付けるのに十分なビンを備えたhistogramming技術を使用することもできます。

+0

平均と標準偏差はこれでは十分ではありませんが、ビニングは実際にはうまくいくと思います。特に、上限と下限を知るようにスコアリング関数を標準化することは自由です。提案していただきありがとうございます。 – bnaul

関連する問題