有没有办法获得分布的参数?我知道几乎每个发行版都有“loc”和“scale”,但它们之间存在差异,例如 alpha 有“a”,beta 有“a”、“b”。
我想做的是以编程方式打印(在拟合分布后)参数、值的键值对。
但我不想为每个可能的分发编写打印例程。
有没有办法获得分布的参数?我知道几乎每个发行版都有“loc”和“scale”,但它们之间存在差异,例如 alpha 有“a”,beta 有“a”、“b”。
我想做的是以编程方式打印(在拟合分布后)参数、值的键值对。
但我不想为每个可能的分发编写打印例程。
inspect
该_pdf
方法似乎有效:
import inspect
# keys
[p for p in inspect.signature(stats.beta._pdf).parameters if not p=='x']
# ['a', 'b']
# keys and values
dist = stats.alpha(a=1)
inspect.signature(stats.alpha._pdf).bind('x', *dist.args, **dist.kwds).arguments
# OrderedDict([('x', 'x'), ('a', 1)])
# 'x' probably doesn't count as a parameter
最后我所做的是:
parameter_names = [p for p in inspect.signature(distribution._pdf).parameters if not p=='x'] + ["loc","scale"]
parameters = distribution.fit(pd_series)
distribution_parameters_dictionary =dict(zip(parameter_names,parameters))
其中 pd_series 是要拟合的数据的 pandas 系列。