Как я могу построить кумулятивные графики с определенными значениями x?

Я пытался выяснить, как построить кумулятивную функцию распределения (cdf) с конкретными значениями x, но безуспешно.

Например, если набор данных:

x = [2.50 5.21 7.67 8.43 9.15 11.47 14.59 21.45];
y = [0.20 0.09 0.15 0.13 0.17  0.04  0.7   0.15];  % (total 1)

форма графика определенно выглядит неправильно, когда я использую y = cdfplot(x).

Я также построил график с cumsum(y) и x, чтобы проверить форму, и он выглядит нормально, но я хотел бы знать, есть ли какой-либо код, который строит графики кумулятивного распределения.


person MSJ    schedule 16.01.2020    source источник


Ответы (1)


Существует функция stairs для создания "ступенчатых графиков", которые должны именно то, что вы хотите, включая вашу cumsum(y) идею.

См. следующий фрагмент кода. Я добавил две дополнительные точки для начала и конца некоторого интервала, здесь [0 ... 25]. Кроме того, ваши значения в y в сумме дают нечто большее, чем 1, поэтому я также изменил эти значения.

x = [0 2.50 5.21 7.67 8.43 9.15 11.47 14.59 21.45 25];
y = [0 0.10 0.09 0.05 0.10 0.14  0.04  0.4   0.08  0];
stairs(x, cumsum(y));
xlim([-1 26]);
ylim([-0.2 1.2]);

Это будет вывод (Octave 5.1.0, но также протестирован с MATLAB Online):

Вывод

Надеюсь, это поможет!

person HansHirse    schedule 16.01.2020
comment
Большое спасибо HansHirse! Ваш ответ определенно помог! Также оцените редактирование моих исходных вопросов. Я надеюсь, что у вас есть отличный день! - person MSJ; 16.01.2020