python - 获取 scipy.stats 分布的参数名称

标签 python numpy scipy

我正在编写一个脚本,以使用 scipy.stats 找到数据集的最佳分布。 我首先有一个分发名称列表,我对其进行迭代:

dists = ['alpha', 'anglit', 'arcsine', 'beta', 'betaprime', 'bradford', 'norm']
for d in dists:
    dist = getattr(scipy.stats, d)
    ps = dist.fit(selected_data)
    errors.loc[d,['D-Value','P-Value']] = kstest(selected.tolist(), d, args=ps)
    errors.loc[d,'Params'] = ps

现在,在此循环之后,我选择最小 D 值以获得最佳拟合分布。现在,每个分布在 ps 中返回一组特定的参数,每个参数都有它们的名称等等(例如,对于“alpha”,它将是 alpha,而对于“norm”,它们将是均值和标准差)。

有没有办法在 scipy.stats 中获取估计参数的名称?

提前致谢

最佳答案

Warren Weckesser 和我开发了一个更强大的解决方案:

import sys
import scipy.stats

def list_parameters(distribution):
    """List parameters for scipy.stats.distribution.
    # Arguments
        distribution: a string or scipy.stats distribution object.
    # Returns
        A list of distribution parameter strings.
    """
    if isinstance(distribution, str):
        distribution = getattr(scipy.stats, distribution)
    if distribution.shapes:
        parameters = [name.strip() for name in distribution.shapes.split(',')]
    else:
        parameters = []
    if distribution.name in scipy.stats._discrete_distns._distn_names:
        parameters += ['loc']
    elif distribution.name in scipy.stats._continuous_distns._distn_names:
        parameters += ['loc', 'scale']
    else:
        sys.exit("Distribution name not found in discrete or continuous lists.")
    return parameters

讨论可见here .

关于python - 获取 scipy.stats 分布的参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30453097/

相关文章:

python - 使用 scipy optimize 进行最优控制

python - Scipy:生成NxN离散余弦矩阵

python - 如何衡量 Python 中最佳拟合线的质量?

python - Facebook webhook 多次调用同一条消息?

python - 将文本文件导入为 numpy 中的矩阵

python - 有没有更好的方法来索引这个数组?

python 锯齿数组运算效率

python - 值错误 : invalid literal for int() with base 16: '\x0e\xa3' Python

python - 如果在 python shell 中手动输入命令,则 paramiko 脚本有效

python - django-admin-sortable 不保存现有对象的顺序