Построить плавную кумулятивную функцию распределения с использованием MATLAB - PullRequest
2 голосов
/ 06 октября 2011

Как можно сделать следующую кривую кумулятивной функции распределения (CDF) более гладкой?

Вот мой код, используя cdfplot :

clear all; 
close all;
y = [0.75862069 0.666666667 0.882352941 0.875 0.736842105 0.566666667 0.703703704 0.6 0 0.730769231 0.714285714 0.625 0.675 0.693877551 0.731707317 0.558823529 0.679245283 0.740740741 0.785714286 0.789473684 0.615384615 0.6 0.739130435 0.576923077 0 0.75];
cdfplot(y)

Сюжет выглядит так:

enter image description here

Ответы [ 4 ]

2 голосов
/ 06 октября 2011
data = [2 1 4 2 3];
sdata = sort(data);
plot(sdata,(0.5:length(sdata))./length(sdata),'-');
2 голосов
/ 06 октября 2011
data = [1 2 2 3 4];
dsum = sum(data);
normalized_data = data/dsum;

cdf = data;

for i = 1:length(data)
    cdf(i) = sum(normalized_data(1:i));
end

plot(cdf);

Это то, что вы ищете?

1 голос
/ 23 января 2015

Вы можете использовать функцию ecdf:

[f,x] = ecdf(y);
plot(x,f);
0 голосов
/ 24 августа 2016

Есть один метод. Но я считаю это своего рода обманом. Используйте это со своей ответственностью. вы можете попробовать cdfplot([x,x+a*randn(length(x),1)]). Вы можете играть с параметром a, но я предлагаю вам использовать значение около 0,5. Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...