【问题标题】:Custom histogram density evaluation in MatLabMatLab 中的自定义直方图密度评估
【发布时间】:2025-12-18 13:40:01
【问题描述】:

MatLab 是否有任何内置函数可以根据自定义直方图评估随机变量的密度? (我怀疑可能有很多方法可以做到这一点,我只是想看看是否已经有任何内置的 MatLab 功能)。 谢谢。

【问题讨论】:

  • “评估密度”是什么意思? hist? histc? ksdensity?
  • 说我的直方图是连续密度的离散版本。如何从直方图中评估 f(x)?
  • 直方图概率密度的估计。您只需要归一化,除以 {sample size times bin width},使面积为 1。然后,如果您需要评估中间值的概率密度,请使用插值
  • 是的,有什么快速插值的方法吗?

标签: matlab histogram kernel-density


【解决方案1】:

函数hist 为您提供正在评估的概率密度的近似值。

如果您想要它的连续表示,this article from the Matlab documentation 解释了如何使用曲线拟合工具箱中的spline 命令获得一个。基本上,这篇文章解释了如何对直方图进行三次插值。

生成的代码是:

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

【讨论】:

    【解决方案2】:

    一种流行的方法是使用核密度估计。在 Matlab 中最简单的方法是使用ksdensity

    【讨论】: