scipy.stats分布直方图可制成的scipy.stats正常随机变量看到分布的样子.
% matplotlib inline
import pandas as pd
import scipy.stats as stats
d = stats.norm()
rv = d.rvs(100000)
pd.Series(rv).hist(bins=32, normed=True)
Run Code Online (Sandbox Code Playgroud)
其他发行版是什么样的?
我一直在尝试使用Scipy获得对数正态分布的结果.我已经拥有Mu和Sigma,所以我不需要做任何其他准备工作.如果我需要更具体(并且我试图利用我对统计数据的有限知识),我会说我正在寻找累积函数(在Scipy下的cdf).问题是我无法弄清楚如何只用0-1的平均值和标准差来做到这一点(即返回的答案应该是0-1的答案).我也不确定dist的哪种方法,我应该用它来得到答案.我已经尝试阅读文档并查看SO,但相关问题(如此和此)似乎没有提供我正在寻找的答案.
这是我正在使用的代码示例.谢谢.
from scipy.stats import lognorm
stddev = 0.859455801705594
mean = 0.418749176686875
total = 37
dist = lognorm.cdf(total,mean,stddev)
Run Code Online (Sandbox Code Playgroud)
更新:
经过一些工作和一些研究后,我得到了更多.但我仍然得到了错误的答案.新代码如下.根据R和Excel,结果应该是.7434,但这显然不是正在发生的事情.我缺少一个逻辑缺陷吗?
dist = lognorm([1.744],loc=2.0785)
dist.cdf(25) # yields=0.96374596, expected=0.7434
Run Code Online (Sandbox Code Playgroud)
更新2: 工作lognorm实现,产生正确的0.7434结果.
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)
> 0.7434
Run Code Online (Sandbox Code Playgroud)