Оценка плотности пользовательской гистограммы в MatLab

Есть ли в MatLab встроенная функция для оценки плотности случайной величины по пользовательской гистограмме? (Я подозреваю, что, вероятно, есть много способов сделать это, я просто смотрю, есть ли уже встроенная функциональность MatLab). Благодарю.

2 ответа

Решение

Функция hist дает приблизительное значение плотности вероятности, которую вы оцениваете.

Если вы хотите его непрерывное представление, эта статья из документации Matlab объясняет, как получить его, используя spline команда из панели инструментов Curve Fitting. В основном статья объясняет, как сделать кубическую интерполяцию вашей гистограммы.

Полученный код:

y = randn(1,5001); % Replace y by your own dataset

[heights,centers] = hist(y);
hold on
n = length(centers);
w = centers(2)-centers(1);
t = linspace(centers(1)-w/2,centers(end)+w/2,n+1);
dt = diff(t);
Fvals = cumsum([0,heights.*dt]);
F = spline(t, [0, Fvals, 0]);
DF = fnder(F);
hold on
fnplt(DF, 'r', 2)
hold off
ylims = ylim;
ylim([0,ylims(2)]);

Непрерывное представление гауссовой плотности

Популярным способом является использование оценки плотности ядра. Самый простой способ сделать это в Matlab - использовать ksdensity,

Другие вопросы по тегам