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

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


person user191919    schedule 28.02.2015    source источник
comment
возможный дубликат Сгенерировать случайное число с заданной вероятностью Matlab   -  person Daniel    schedule 28.02.2015
comment
Что вы подразумеваете под оценкой плотности? hist? histc? ksdensity?   -  person A. Donda    schedule 28.02.2015
comment
Скажем, моя гистограмма представляет собой дискретизированную версию непрерывной плотности. Как я могу оценить f(x) по гистограмме?   -  person user191919    schedule 28.02.2015
comment
Гистограмма является оценкой плотности вероятности. Вам нужно только нормализовать, разделив на {размер выборки, умноженный на ширину ячейки}, чтобы площадь была равна 1. Затем, если вам нужно оценить плотность вероятности при промежуточных значениях, используйте интерполяцию   -  person Luis Mendo    schedule 28.02.2015
comment
Да, какой-нибудь быстрый способ этой интерполяции?   -  person user191919    schedule 28.02.2015


Ответы (2)


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

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

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

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)]);

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

person Harijoe    schedule 01.03.2015

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

person 3lectrologos    schedule 01.03.2015