【问题标题】:Plotting lognormal distribution绘制对数正态分布
【发布时间】:2020-09-29 01:22:46
【问题描述】:

这是概率密度函数:

代码:

f=exp(-(((log(x)-log(100)-(.1((.15)^2)/2))^2))/(2*.15^2))/(x(.15)*sqrt(2*pi));

plot(f);

我似乎无法在 Matlab 中绘制这个对数正态分布。我试图找出这个图表中有多少百分比高于 100,并且不知道如何在代码中执行该步骤。

【问题讨论】:

  • @excaza 我在原问题中添加了函数

标签: matlab plot graph distribution probability-density


【解决方案1】:

也许你想给 x 一些值并将 f(x) 定义为一个匿名函数

f=@(x) exp(-(((log(x)-log(100)-(.1.*((.15).^2)./2)).^2))./(2*.15^2))./(x*.15*sqrt(2*pi));

x = 50:150
plot(x, f(x))

编辑:x>=100 的密度函数面积:

>> quad(f,100,Inf)
ans =  0.50299

【讨论】:

  • 谢谢!我怎样才能编码这个图表中有多少超过 100?
  • 您的意思是按区域划分? quad,请参阅我的编辑。它是 50.3%,不知道有多少是由于数值不精确
  • 明智的百分比。如果这是一个正态分布,这只是 50% 吗?
【解决方案2】:

MATLAB 使用 makedist()pdf()cdf() 函数让这个过程变得更加简单**。

在下面的示例中,25 以上的面积为 0.0638 (6.38%)。

pd = makedist('Lognormal',2,.8);     % Create Lognormal probability distribution object

X = (0:.01:50)';
figure, hold on, box on
p = plot(X,pdf(pd,X),'b-','DisplayName','A')      % Uses `pdf` function on the object
%legend('show')
title('Lognormal Distribution (\mu = 2, \sigma = 0.8)')
set(p,'LineWidth',2.0)

% Percent above 25
1-cdf(pd,25)        % = 0.0638    % Uses `cdf` function on the object

** MATLAB 2013a 中引入的概率分布对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-07
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多