如何解决从另一个类的方法动态创建 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
样式的分发对象。为此,我的类的 __init__
方法包含一条语句
self.p = PValuedist(self.pdf_p,self.cdf_p,self.ppf_p,self.rvs_p)
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__ 中设置它们。>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。