1

累積分布の計算についてサポートが必要です。

私がそのようなデータを持っているとしましょう:

data = abs(randn(1000,1));

確率累積分布を計算し、それをビンに入れてポイント数を減らす必要があります。私はそのようにやっています(bin = 50を取りましょう):

[n, x] = hist(data, 50);
y = cumsum(n);
y = y./max(y);

問題は、y = 1に近いポイントがたくさんあるが、ゼロに近いポイントはごくわずかであるということです。ポイントを均等に分散させたい(y軸にビニングを追加しますか?)。私が何を意味するのか知っていただければ幸いです:)どうすればそれができますか?ありがとう!

4

1 に答える 1

2

したがって、実際には、dataベクトル内の多くの点が 0 に近いことを意味します。通常の手順では、データの性質に応じて、log: log2 または log10 を使用してデータを変換します。

試す

[n, x] = hist(log10(data), 50);
y = cumsum(n);
y = y./max(y);

または他の関数のsqrt代わりに試すこともできます。log

アップデート

コメントの後に質問を確認すると、次のようなものを使用したいと思います。

bin = 10.^(linspace(log10(min(data)),log10(max(data)),50));
[n, x] = hist(data, bin);
y = cumsum(n);
y = y./max(y);
plot(bin,y,'.')
于 2011-12-22T04:30:44.977 に答える