找到一个python变换函数或numpy矩阵,将偏斜的正态分布转换为正态分布

时间:2016-07-01 17:47:02

标签: python numpy pandas scipy

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

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

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:2)

我做过两件事之一:

  • 使用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')

enter image description here

df.skew()

Uniform    2.392991e-02
Normal     2.114051e-15
dtype: float64