如何在matlab中绘制概率密度函数?

Posted

技术标签:

【中文标题】如何在matlab中绘制概率密度函数?【英文标题】:How to plot probability density functions in matlab? 【发布时间】:2013-01-27 13:49:32 【问题描述】:

我需要从

中绘制一个均匀分布矩阵的概率密度函数
U = rand (1,1000)

但我不能使用 ksdensity 函数。我试过这个:

term = 1000;
U = rand (1,term);
x=0:0.001:1;
for j = 2:term;
    u_height(j) = u_height(j-1)+((abs(x(j)-U(j))<0.01/2)/0.01)/term;
    n_height(j) = n_height(j-1)+((abs(x(j)-N(j))<0.01/2)/0.01)/term;
end

但它的绘图不正确

【问题讨论】:

你到底想做什么? plot(U/sum(U)) 怎么了? 你考虑过直方图吗?见histhistc @Junuxx,这行不通,请参阅:***.com/questions/5320677/… @slayton:我明白你的意思,感谢您的更正。不过,OPs 方法似乎很复杂。 @Junuxx,是的,这个方法没有任何意义。 【参考方案1】:

函数ksdensity 应该可以正常工作。您需要指定 PDF 的范围是有限的,并使用框内核。

u = rand(10000,1);

ksdensity(u, 'Support', [0 1], 'kernel', 'box');

此外,您可以使用 histc 近似 pdf

u = rand(10000,1);
bins = 0:.05:1;
counts = hist(u, bins);
p = counts ./ trapz(bins, counts);

plot(bins, p);

【讨论】:

为什么推荐box? (反对保持默认设置或使用epanechnikov @DennisJaheruddin 实际上都很好,但是在弄乱了各种选项之后,我觉得盒子​​内核产生的估计更接近于均匀分布。 虽然这与我要找的很接近,但它不够精确,即使是 10,000 大小的向量。 @user2064077 请记住,这是对基础分布的估计。精度将取决于数据集的大小和质量。

以上是关于如何在matlab中绘制概率密度函数?的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB如何将概率密度向量绘制到直方图上?

matlab一维概率分布和均匀分布的区别

教你使用 MATLAB 绘制散点密度图(二维核密度)

教你使用 MATLAB 绘制散点密度图(二维核密度)

教你使用 MATLAB 绘制散点密度图(二维核密度)

教你使用 MATLAB 绘制散点密度图(二维核密度)