Statistics ( scipy.stats)
TOC \o "1-3" \h \z \u Statistics (scipy.stats) 1
介绍 1
随机变量 2
获得帮助 2
通用方法 4
位移与缩放 6
形态参数 8
冻结分布 9
广播 10
离散分布的特殊之处 11
分布拟合 13
性能问题与注意事项 13
遗留问题 13
构造具体的分布 14
创建一个连续分布,继承rv_continuous类 14
继承rv_discrete类 16
样本分析 21
描述统计 21
T检验和KS检验 23
分布尾部 25
正态分布的特殊检验 28
比较两个样本 29
均值 30
对于两个不同的样本进行的KS检验 30
核密度估计 31
单元估计 31
多元估计 40
介绍
在这个教程我们讨论一部分scipy.stats模块的特性。这里我们的意图是提供给使用者一个关于这个包的实用性知识。我们推荐reference manual来介绍更多的细节。
注意:这个文档还在发展中。
随机变量
有一些通用的概率分布类被封装在continuous random variables以及discrete random variables中。有80多个连续性随机变量(RVs)以及10余个离散随机变量已经用这些类建立。同样,新的程序和分布可以被用户新建(如果你构造了一个,请提供它给我们帮助发展这个包)。
所有统计函数被放在子包scipy.stats中,且有这些函数的一个几乎完整的列表可以使用info(stats)获得。这个列表里的随机变量也可以从stats子包的docstring中获得介绍。
在接下来的讨论中,我们着重于连续性随机变量(RVs)。几乎所有离散变量也符合下面的讨论,但是我们也要指出一些区别在“离散分布的特殊之处”中。
获得帮助
所有分布可以使用help函数得到解释。为获得这些信息只需要使用像这样的简单调用:
>>>
>>> from scipy import stats
>>> from scipy.stats import norm
>>> print norm.__doc__
作为例子,我们用这种方式找分布的上下界
>>>
>>> print 'bounds of distribution lower: %s, upper: %s' % (norm.a,norm.b)
bounds of distribution lower: -inf, upper: inf
我们可以通过调用dir(norm)来获得关于这个(正态)分布的所有方法和属性。应该看到,一些方法是私有方法尽管其并没有以名称表示出来(比如它们前面没有以下划线开头),比如veccdf就只用于内部计算(试图使用那些方法将引发警告,因为它们可能会在后续开发中被移除)
为了获得真正的主要方法,我们列举冻结分布的方法(我们将在下文解释何谓“冻结分布”)
>>>
>>> rv = norm()
>>> dir(rv) # reformatted
['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__',
'__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__str__', '__weakref__', 'args', 'cdf', 'dist',
'entropy', 'isf', 'kwds', 'moment', 'pdf', 'pmf', 'ppf', 'rvs', 'sf', 'stats']
最后,我们能通过内省获得所有的可用分布的信息。
>>>
>>> import warnings
>>> warnings.simplefilter('ignore', DeprecationWarning)
>>> dist_continu = [d for d in dir(stats) if
... isinstance(getattr(stats,d), stats.rv_continuous)]
>>> dist_discrete = [d for d in dir(stats) if
... isinstance(getattr(stats,d), stats.