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 回答