【问题标题】:How to draw probability density function in MatLab?如何在 MatLab 中绘制概率密度函数?
【发布时间】:2011-08-11 01:44:42
【问题描述】:
x = [1 2 3 3 4]
cdfplot(x)

谷歌搜索后,我发现上面的代码会在 Matlab 中为我绘制一个累积分布函数。
有没有简单的方法来绘制概率密度函数?

澄清。我需要一个具有均匀分布的 x 轴的图表。而且我希望它看起来不像条形图。 (我会有数百万个整数)
抱歉,再次更新。我的数据是整数,但实际上它们代表时间(我希望在完全相同的值上有几个相当高的峰值,而其他值看起来好像不是离散的)。我实际上开始怀疑这是否实际上不是固有的离散整数。 CDF 肯定会工作,但是当使用 PDF 时,它似乎比我预期的要复杂。

【问题讨论】:

标签: matlab plot statistics distribution


【解决方案1】:

您可以使用函数hist 为整数生成离散概率分布:

data = [1 2 3 3 4];           %# Sample data
xRange = 0:10;                %# Range of integers to compute a probability for
N = hist(data,xRange);        %# Bin the data
plot(xRange,N./numel(data));  %# Plot the probabilities for each integer
xlabel('Integer value');
ylabel('Probability');

这是结果图:


更新:

在较新版本的 MATLAB 中,不再推荐使用 hist 函数。相反,您可以像这样使用histcounts 函数来生成与上图相同的图形:

data = [1 2 3 3 4];
N = histcounts(data, 'BinLimits', [0 10], 'BinMethod', 'integers', 'Normalization', 'pdf');
plot(N);
xlabel('Integer value');
ylabel('Probability');

【讨论】:

  • @gnovice:只是一个小问题,一般来说,您应该除以直方图的 面积,而不是 数据点的数量得到一个pdf。所以最后一行应该是bar(X,N/trapz(X,N))。由于在此示例中,bin 点是整数和单位间隔,numeltrapz 都给出相同的答案,4,但如果不是这种情况,它们将是不同的。
  • @yoda:你是对的,但 Gene 提到必须为 integer 值(即离散概率分布)执行此操作,所以我想我会保持简单。
  • 谢谢你的回答,我还有一个问题,新手。 @yoda 的评论引起了我的关注。如果 x=[100 200 400 400 550],这仍然可以正常工作吗
  • 我会尝试我的实际数据。谢谢大家!
  • @Gene:如果你有data = [100 200 400 400 550]; 并指定了一个整数范围,比如xRange = 0:600;,你会得到一个除了0.2 峰值之外的大部分为0 的图,当x 等于100、200 和当 x 等于 400 时,峰值为 550,峰值为 0.4。作为显示数据的另一种方式,您可能想要尝试使用STEM 图而不是常规线图。它可能看起来更好。
【解决方案2】:

如果你想要一个连续分布函数,试试这个。

x = [1 2 3 3 4]
subplot(2,1,1)
ksdensity(x)
axis([-4 8 0 0.4])

subplot(2,1,2)
cdfplot(x)
grid off
axis([-4 8 0 1])
title('')

哪个输出这个。

累积分布函数在底部,核密度估计在顶部。

【讨论】:

    【解决方案3】:

    在 matlab 帮助中键入“ksdensity”,您将找到可以为您提供 PDF 连续形式的函数。我想这正是您正在寻找的。

    【讨论】:

      【解决方案4】:

      除了ksdensity(x)得到的平滑PDF,还可以使用ksdensity(x,'function','cdf')绘制平滑CDF图。

      【讨论】:

        猜你喜欢
        • 2013-01-27
        • 1970-01-01
        • 2021-06-28
        • 2012-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多