【问题标题】:x values of percentiles of a function y函数 y 的百分位数 x 值
【发布时间】:2021-05-22 14:22:21
【问题描述】:

我有一个通用函数 y(x)(不一定是高斯函数)。我想计算这个函数的百分位数,最好使用np.percentile(),这样我就得到了百分位数的x值。例如,第 50 个百分位数(中位数)的 x 值。但是,np.percentile() 采用分布,而不是某个变量的函数。

我将如何计算此函数的百分位数和各种统计数据(例如平均值、标准差、中位数等)?

【问题讨论】:

    标签: python arrays numpy statistics


    【解决方案1】:

    您可以创建一个表示函数的分布,然后评估分布上的统计度量。

    import matplotlib.pyplot as plt
    import numpy as np
    
    # resolution of the function
    x = np.arange(-1, 1, 0.001)
    
    # define function (Gaussian)
    sigma = 0.1
    mu = 0.2
    y = 1 / (sigma * (2 * np.pi)**0.5) * np.e**(-0.5 * ((x - mu) / sigma)**2)
    
    # create mask to remove values near zero
    mask = np.logical_not(np.isclose(y, 0, 1e-2, 1e-2))
    x = x[mask]
    y = y[mask]
    
    # plot function
    plt.scatter(x, y)
    
    # evaluate stats
    np.std(y)
    np.percentile(y, 50)
    np.mean(y)
    

    这种方法的缺点是删除不相关值的阈值,在我的示例中,值大约为零,这对统计测量有很大影响。


    我还查看了 SymPy 文档,但没有看到针对此问题的实现。

    【讨论】:

      猜你喜欢
      • 2014-09-06
      • 1970-01-01
      • 2014-09-24
      • 2022-01-22
      • 2020-10-06
      • 2021-03-21
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      相关资源
      最近更新 更多