【问题标题】:Find a python transformation function or numpy matrix to transform skewed normal distribution to normal distribution查找 python 转换函数或 numpy 矩阵将偏态正态分布转换为正态分布
【发布时间】:2016-07-02 02:21:42
【问题描述】:

我有一个具有偏态正态分布的输入数据集(DataFrame / numpy 矩阵)。我正在尝试找到 python 转换函数(或 numpy 矩阵),它将输入数据集转换为没有偏斜的正态分布。

我查看了 curve_fit(在 scipy.optimize 中),但不确定如何应用它。

有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: python numpy pandas scipy


    【解决方案1】:

    我做了两件事之一:

    • 使用box-cox transformations。这需要您找到合适的幂或 lambda,将您的数据转换为零偏斜。
    • 强制正态分布。

    例子

    from scipy.stats import norm
    
    df = pd.DataFrame(np.random.rand(1000), columns=['Uniform'])
    df['Normal'] = norm.ppf((df.Uniform.rank() - .5) / len(df))
    df.plot(kind='kde')
    

    df.skew()
    
    Uniform    2.392991e-02
    Normal     2.114051e-15
    dtype: float64
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 2010-09-09
    • 2016-07-29
    • 1970-01-01
    • 2019-02-22
    • 2018-08-19
    • 2011-06-07
    相关资源
    最近更新 更多