Note that there are some explanatory texts on larger screens.

plurals
  1. POHow do I get a lognormal distribution in Python with Mu and Sigma?
    primarykey
    data
    text
    <p>I have been trying to get the result of a <a href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.lognorm.html" rel="nofollow noreferrer">lognormal</a> distribution using <a href="http://www.scipy.org/" rel="nofollow noreferrer">Scipy</a>. I already have the Mu and Sigma, so I don't need to do any other prep work. If I need to be more specific (and I am trying to be with my limited knowledge of stats), I would say that I am looking for the cumulative function (cdf under Scipy). The problem is that I can't figure out how to do this with just the mean and standard deviation on a scale of 0-1 (ie the answer returned should be something from 0-1). I'm also not sure which method from <strong>dist</strong>, I should be using to get the answer. I've tried reading the documentation and looking through SO, but the relevant questions (like <a href="https://stackoverflow.com/questions/8747761/scipy-lognormal-distribution-parameters">this</a> and <a href="https://stackoverflow.com/questions/1154378/how-to-run-statistics-cumulative-distribution-function-and-probablity-density-fu">this</a>) didn't seem to provide the answers I was looking for.</p> <p>Here is a code sample of what I am working with. Thanks.</p> <pre><code>from scipy.stats import lognorm stddev = 0.859455801705594 mean = 0.418749176686875 total = 37 dist = lognorm.cdf(total,mean,stddev) </code></pre> <p><strong>UPDATE:</strong></p> <p>So after a bit of work and a little research, I got a little further. But I still am getting the wrong answer. The new code is below. According to R and Excel, the result should be <em>.7434</em>, but that's clearly not what is happening. Is there a logic flaw I am missing?</p> <pre><code>dist = lognorm([1.744],loc=2.0785) dist.cdf(25) # yields=0.96374596, expected=0.7434 </code></pre> <p><strong>UPDATE 2:</strong> Working lognorm implementation which yields the correct <strong>0.7434</strong> result.</p> <pre><code>def lognorm(self,x,mu=0,sigma=1): a = (math.log(x) - mu)/math.sqrt(2*sigma**2) p = 0.5 + 0.5*math.erf(a) return p lognorm(25,1.744,2.0785) &gt; 0.7434 </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload