我正在使用Microsoft Excel 2013中的LOGNORM.DIST复制一篇论文中的图表,并希望在Python中获得相同的图表。我在Excel中获得了正确的答案,但在Python中没有。
在我所擅长的方面,
mean of ln(KE) 4.630495093
std dev of ln(KE) 0.560774853
然后我绘制x(KE)从10到1000,并使用Excel LOGNORM.DIST和计算事件的概率。我从论文中得到了确切的答案,所以我在计算中很有信心。图如下:
MS Excel 2013 Plot of LOGNORM.DIST
在Python中,我使用Python 3.4和Scipy 0.16.0,我的代码如下:
%matplotlib inline
from scipy.stats import lognorm
import numpy as np
import matplotlib.pyplot as plt
shape = 0.560774853 #standard deviation
scale = 4.630495093 #mean
loc = 0
dist=lognorm(shape, loc, scale)
x=np.linspace(10,1000,200)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.set_xscale('log')
ax.set_xlim([10., 1000.])
ax.set_ylim([0., 1.])
ax.plot(x,dist.cdf(x)), dist.cdf(103)
情节是,
Python Plot of LOGNORM
我对loc参数做了很多修改,但是没有任何效果。
dist.cdf(103)
应该给予50%的可能性,但显然我做错了什么。
1条答案
按热度按时间yzuktlbb1#
scipy
lognorm
分布的scale
参数为exp(mean)
,其中mean
是基础正态分布的平均值。因此,您应该写成:下面是一个生成类似于Excel图的图的脚本: