Оценка плотности пользовательской гистограммы в 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
,