python - 从另一个类的方法动态创建 scipy.stats 分布
问题描述
我创建了一个代表统计模拟的类。其中一个方面是p值的分布,并且该类包含表征该分布的方法:
class Simulation:
...
def pdf_p(self, p):
...
def cdf_p(self, p):
...
def ppf_p(self, P):
...
def rvs_p(self, size):
...
我现在想将该分布也公开为scipy.stats
-style 分布对象。为此__init__
,我的类的方法包含一个语句
self.p = PValueDist(self.pdf_p, self.cdf_p, self.ppf_p, self.rvs_p)
其中类PValueDist
定义为
from scipy.stats import rv_continuous
class PValueDist (rv_continuous):
def __init__(self, pdf, cdf, ppf, rvs):
self._pdf = pdf
self._cdf = cdf
self._ppf = ppf
self._rvs = rvs
super().__init__(self)
这似乎可行,但我想知道这是否是正确或规范的方式?
当然,我也可以创建Simulation
一个子类rv_continuous
并重命名我的方法。然而,模拟包含几个不同的分布,用其中一个来识别模拟在语义上似乎不正确。
解决方案
似乎还可以。需要注意的几件事:1) scipy.stats 分发是实例,所以不要忘记创建一个,2) 如果支持不是默认的 ((0, inf) IIRC),请将它们设置在 __init__ 中。
推荐阅读
- python - Folium Map 内存不足
- reactjs - react-native onChangeText 是后面一个字符
- python - 在 Python 中显式定义变量
- java - 如何使用 JPQL 在 Spring Data JPA @Query 中使用 Sql server 'FREETEXT'?
- python - 如何使用 Apscheduler 安排 Python 代码每天运行?
- c++ - 试图找到一个数字的日志,但由于某种原因它不起作用
- java - 如何为 SimpleObjectProperty 编写比较器
- python - Flask 应用程序显示 404
- excel - 根据条件将数据从一张表复制到另一张表
- azure - 无法访问已处置的对象。对象名称:'FaultTolerantAmqpObject`1' - Azure ServiceBus 异常