【发布时间】:2013-11-30 13:13:25
【问题描述】:
我在 matlab 中找不到实现获取正态分布的均值和标准差并绘制其PDF 和CDF 的函数。
恐怕我在下面实现的两个函数缺少一些东西,因为我得到了大于 1 的 pdfNormal 的最大值。
function plotNormPDF(u,s,color)
mu = u;
sigma = s;
x = (mu - 5 * sigma) : (sigma / 100) : (mu + 5 * sigma);
pdfNormal = normpdf(x, mu, sigma);
string = 'the maximal pdfNormal is';
string = sprintf('%s :%d', string,max(pdfNormal));
disp(string)
plot(x, pdfNormal/max(pdfNormal),color);
end
对于 CDF 规范
function plotNormCDF(u,s,color)
mu = u;
sigma = s;
x = (mu - 5*sigma) : (sigma / 100) : (mu + 5*sigma);
pdfNormal = normpdf(x, mu, sigma);
plot(x,cumsum(pdfNormal)./max(cumsum(pdfNormal)),color)
end
以下是同时使用两者的示例:
plotNormCDF(0.2, 0.1,'r')
plotNormPDF(0.2, 0.1,'r')
【问题讨论】:
-
如果pdf的最大值大于1就可以了:曲线下的密度需要积分为1。考虑一下:在pdf上取一个点并将其值设置为100万.该点下方的面积仍为 0,因此 pdf 下方的面积不受影响。或者,考虑 [0,.5] 上的均匀分布:要积分为 1,pdf 在支持的任何地方都等于 2。有关更多信息,请参考以下 whuber 评论和他提供的链接:stats.stackexchange.com/questions/47714/…
-
“与概率不同,概率密度函数可以取大于 1 的值”在您参考的*页面中。
标签: matlab normal-distribution cdf