添加新方法、函数和类¶
虽然在大多数情况下向SciPy添加代码非常简单,但也有少数地方不是这样。本文档包含有关某些具体情况的详细信息,在这些情况下,任务涉及的内容可能从一开始就不清楚。
添加新的统计信息分布¶
几百年来,统计学家、数学家和科学家一直需要理解、分析和建模数据。这导致了过多的统计分布,其中许多都与其他统计分布有关。对新类型数据的建模继续产生新的分布,理论考虑被应用于新的学科也是如此。关于十几个离散分布的SciPy模型 离散统计分布 和100个连续分布 连续统计分布 。
要添加新的发行版,需要一个很好的推荐人。Scipy通常使用 [JKB] 作为它的黄金标准, WikipediaDistributions 文章通常提供一些额外的细节和/或图表。
如何创建新的连续分布¶
要将连续分布添加到本网站,需要执行几个步骤。(添加离散分布类似)。我们将在下面的说明中使用虚构的“松鼠”发行版。
在实施之前¶
看看是否
Squirrel
已经实现了--这节省了很多精力!它可能是用不同的名称实现的。
它可能已使用不同的参数化(形状参数)实现。
它可能是一个更一般的分布族的专门化。
多个规程发现/重新发现一个分发(或专门化或不同的参数化)是非常常见的。现有的一些SciPy发行版是其他发行版的特色化版本。例如:
scipy.stats.arcsine
分发是对scipy.stats.beta
分配。这些重复存在的目的是(非常!)历史原因和广泛使用原因。目前,不支持向本网站添加现有发行版的新专业化/重新参数化,主要原因是此类添加会增加念力用户。创建 SciPy Issue on github ,列出了它的分布、参考文献和收录的原因。
实施¶
查找已存在的类似于
Squirrel
。使用其代码作为模板Squirrel
。读取class的文档字符串
rv_continuous
在……里面 scipy/stats/_distn_infrastructure.py 。编写类的新代码
squirrel_gen
并将其插入到 scipy/stats/_continuous_distns.py ,它(主要)按分布名称的字母顺序排列。这个发行版有无限的支持吗?如果不是,则为左侧和/或右侧端点
a
,b
需要在调用squirrel_gen(name='squirrel', a=?, b=?)
。如果支承取决于形状参数,
squirrel_gen._get_support()
需要实施。默认继承的
_argcheck()
实现检查形状参数是否为正。创建更合适的实现。如果
squirrel_gen.ppf()
相对于它的计算成本很高squirrel_gen.pdf()
,请考虑将momtype
在对的调用中squirrel_gen()
。如果
squirrel_gen.rvs()
计算成本很高,请考虑实现特定的squirrel_gen._rvs()
。将名称添加到文档字符串中的列表中 scipy/stats/__init__.py 。
将名称和一组良好的示例形状参数添加到
distcont
列表位置 scipy/stats/_distr_params.py 那就是。这些形状参数用于测试和自动文档生成。添加名称和一个 _invalid_ 将示例形状参数集添加到中的列表
invdistcont
,也在 _distr_params.py 。这些形状参数也用于测试。添加
TestSquirrel
类以及对 scipy/stats/tests/test_distributions.py 。跑过去(!)那些测试。
实施后¶
添加教程
doc/source/tutorial/stats/continuous_squirrel.rst
将其添加到中的连续分布列表中 doc/source/tutorial/stats/continuous.rst 。
更新
number of continuous distributions
中的示例代码中 doc/source/tutorial/stats.rst 。成功构建文档。
提交请购单。
参考文献¶
- JKB
Johnson、Kotz和Balakrishnan,“连续单变量分布,第1卷”,第二版,John Wiley和Sons,第173页(1994)。