我需要一些帮助来计算累积分布。
假设我有这样的数据:
data = abs(randn(1000,1));
我必须计算概率累积分布并将其装箱以减少点数。我正在这样做(让 bin = 50):
[n, x] = hist(data, 50);
y = cumsum(n);
y = y./max(y);
问题是,现在我有很多接近 y=1 的点,但只有少数接近于零。我想要点的平均分布分布(y 轴上的附加分箱?)。我希望你知道我的意思:) 我该怎么做?谢谢!
我需要一些帮助来计算累积分布。
假设我有这样的数据:
data = abs(randn(1000,1));
我必须计算概率累积分布并将其装箱以减少点数。我正在这样做(让 bin = 50):
[n, x] = hist(data, 50);
y = cumsum(n);
y = y./max(y);
问题是,现在我有很多接近 y=1 的点,但只有少数接近于零。我想要点的平均分布分布(y 轴上的附加分箱?)。我希望你知道我的意思:) 我该怎么做?谢谢!
因此,这实际上意味着您的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,'.')