我遇到了对数正态分布的概率密度函数(p.d.f)。我真的需要你的帮助。由维基百科定义: http://en.wikipedia.org/wiki/Log-normal_distribution#Probability_density_function
对数正态分布的概率密度函数是:
我的问题是,如何在MATLAB中定义x变量?谢谢你的帮助!
答案 0 :(得分:1)
我很困惑,就像你可以在单行中做到这一点,
fun = @(x,mu,sigma) (1./(x*sigma*sqrt(2*pi))).*exp( -(power((log(x)-mu),2))/(2*power(sigma,2)))
x
是满足x > 0
的任何值,pdf通过Wikipedia告诉您
在概率论中,概率密度函数(pdf),或 连续随机变量的密度是描述的函数 这个随机变量对给定的相对可能性 值。
因此,给予log-normal pdf的任何值x
都会告诉你随机变量可能是该值的tel相对可能性。
考虑这个玩具示例:
mu = 1;
sigma = 10;
x = logspace(-2,0,10);
plot( x, fun(x,1,10) )
从这个图中x
接近零,它实际承担该值增加的相对可能性。 免责声明我只是将该功能放在一起,需要检查其准确性,前面仅供参考。
答案 1 :(得分:1)
如果您拥有Stats toolbox,则可以使用lognpdf
:
y = lognpdf(x,mu,sigma);
虽然这是一个非常简单的功能 - 完全矢量化,但它实际上只是:
y = exp(-0.5 *((log(x)-mu)./ sigma)。^ 2)./(x。* sqrt(2 * pi)。* sigma);
但您可能需要检查x > 0
和sig > 0
。要在您引用的维基百科文章中创建this plot,您可以执行以下操作:
mu = 0;
sigma = [1;0.5;0.25];
x = 0:0.01:3;
y = lognpdf([x;x;x],mu,sigma(:,ones(1,length(x))));
figure; plot(x,y);
当您的问题询问定义x
时,您实际上是在寻找正常分布的random variables,也就是说,您想要从对数正常的PDF /分布中随机抽样?在这种情况下,您可以使用lognrnd
:
r = lognrnd(mu,sigma);