如何绘制数据点的互补累积密度函数(CCDF)?

时间:2013-11-11 11:48:33

标签: matlab statistics

假设我的数据点为:

a=2.3; 
b=5.3;
n=2000; % number of data blocks
data=a+(b-a)*rand(1,1000); % data points
x=[1:.1:7]; % x-axis

如何为这些2000个数据块绘制此数据的互补累积密度函数(CCDF)?任何帮助。

1 个答案:

答案 0 :(得分:1)

  1. 按照与this answer相同的方法处理类似问题,您可以像这样绘制data的CCDF:

    plot(sort(data), linspace(1-1/length(data), 0, length(data)))
    

    这给出了每个数据点的CCDF值(介于0和1之间),只需计算大于该值的值的比例(即linspace部分:对于第一个点,所有值都是除了一个,...更大,最后一点没有值更大)。

    enter image description here

  2. 如果您需要固定的一组x点的CCDF,请使用the other answer的方法来解决该问题:

    x = [1:.1:7];
    y = mean(bsxfun(@gt, data.', x));
    plot(x, y)
    

    现在y是大于x中每个点的值的比例。在这种情况下,必须明确确定比例,并使用bsxfun高效完成。

  3. enter image description here