Hello, I&#39;m also having difficulties with lognorm.<br><br>If mu is the mean and s**2 is the variance then...<br><br>&gt;&gt;&gt; from scipy.stats import lognorm<br>&gt;&gt;&gt; from math import exp<br>&gt;&gt;&gt; mu = 10<br>
&gt;&gt;&gt; s = 1<br>&gt;&gt;&gt; d = lognorm(s, scale=exp(mu))<br>&gt;&gt;&gt; d.stats(&#39;m&#39;)<br>array(36315.502674246643)<br><br>shouldn&#39;t that be 10?<br><br><div class="gmail_quote">On Wed, Oct 14, 2009 at 3:20 PM,  <span dir="ltr">&lt;<a href="mailto:josef.pktd@gmail.com">josef.pktd@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div></div><div class="h5">On Wed, Oct 14, 2009 at 4:22 AM, Mark Bakker &lt;<a href="mailto:markbak@gmail.com">markbak@gmail.com</a>&gt; wrote:<br>

&gt; Hello list,<br>
&gt; I am having trouble creating a lognormal distribution with known mean mu and<br>
&gt; standard deviation sigma using scipy.stats<br>
&gt; According to the docs, the programmed function is:<br>
&gt; lognorm.pdf(x,s) = 1/(s*x*sqrt(2*pi)) * exp(-1/2*(log(x)/s)**2)<br>
&gt; So s is the standard deviation. But how do I specify the mean? I found some<br>
&gt; information that when you specify loc and scale, you replace x by<br>
&gt; (x-loc)/scale<br>
&gt; But in the lognormal distribution, you want to replace log(x) by log(x)-loc<br>
&gt; where loc is mu. How do I do that? In addition, would it be a good idea to<br>
&gt; create some convenience functions that allow you to simply create lognormal<br>
&gt; (and maybe normal) distributions by specifying the more common mu and sigma?<br>
&gt; That would surely make things more userfriendly.<br>
&gt; Thanks,<br>
&gt; Mark<br>
<br>
</div></div>I don&#39;t think loc of lognorm makes much sense in most application,<br>
since it is just shifting the support, lower boundary is zero+loc. The<br>
loc of the underlying normal distribution enters through the scale.<br>
<br>
see also <a href="http://en.wikipedia.org/wiki/Log-normal_distribution#Mean_and_standard_deviation" target="_blank">http://en.wikipedia.org/wiki/Log-normal_distribution#Mean_and_standard_deviation</a><br>
<br>
<br>
&gt;&gt;&gt; print stats.lognorm.extradoc<br>
<br>
<br>
Lognormal distribution<br>
<div class="im"><br>
lognorm.pdf(x,s) = 1/(s*x*sqrt(2*pi)) * exp(-1/2*(log(x)/s)**2)<br>
</div>for x &gt; 0, s &gt; 0.<br>
<br>
If log x is normally distributed with mean mu and variance sigma**2,<br>
then x is log-normally distributed with shape paramter sigma and scale<br>
parameter exp(mu).<br>
<br>
<br>
roundtrip with mean mu of the underlying normal distribution (scale=1):<br>
<br>
&gt;&gt;&gt; mu=np.arange(5)<br>
&gt;&gt;&gt; np.log(stats.lognorm.stats(1, loc=0,scale=np.exp(mu))[0])-0.5<br>
array([ 0.,  1.,  2.,  3.,  4.])<br>
<br>
corresponding means of lognormal distribution<br>
<br>
&gt;&gt;&gt; stats.lognorm.stats(1, loc=0,scale=np.exp(mu))[0]<br>
array([  1.64872127,   4.48168907,  12.18249396,  33.11545196,  90.0171313 ])<br>
<br>
<br>
shifting support:<br>
<br>
&gt;&gt;&gt; stats.lognorm.a<br>
0.0<br>
&gt;&gt;&gt; stats.lognorm.ppf([0, 0.5, 1], 1, loc=3,scale=1)<br>
array([  3.,   4.,  Inf])<br>
<br>
<br>
The only case that I know for lognormal is in regression, so I&#39;m not<br>
sure what you mean by the convenience functions.<br>
(the normal distribution is defined by loc=mean, scale=standard deviation)<br>
<br>
assume the regression equation is<br>
y = x*beta*exp(u)    u distributed normal(0, sigma^2)<br>
this implies<br>
ln y = ln(x*beta) + u   which is just a standard linear regression<br>
equation which can be estimated by ols or mle<br>
<br>
exp(u) in this case is lognormal distributed<br>
<br>
Josef<br>
<div><div></div><div class="h5">_______________________________________________<br>
SciPy-User mailing list<br>
<a href="mailto:SciPy-User@scipy.org">SciPy-User@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/scipy-user" target="_blank">http://mail.scipy.org/mailman/listinfo/scipy-user</a><br>
</div></div></blockquote></div><br>